{
  "contractName": "ERC1155Handler",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridgeAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "ContractAddressNotWhitelisted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "actual",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        }
      ],
      "name": "UnexpectedValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "_bridgeAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "_resourceIDToTokenContractAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_tokenContractAddressToTokenProperties",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "isWhitelisted",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "isBurnable",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "externalDecimals",
              "type": "uint8"
            }
          ],
          "internalType": "struct ERCHandlerHelpers.Decimals",
          "name": "decimals",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "defaultDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "setBurnable",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "setResource",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractAddressNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"name\":\"UnexpectedValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToTokenProperties\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isBurnable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"externalDecimals\",\"type\":\"uint8\"}],\"internalType\":\"struct ERCHandlerHelpers.Decimals\",\"name\":\"decimals\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\"}},\"deposit(bytes32,address,bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded arrays of tokenIDs and amounts.\",\"depositor\":\"Address of account making the deposit in the Bridge contract.\",\"resourceID\":\"ResourceID used to find address of token to be used for deposit.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient}, and {transferData} of types uint[], uint[], bytes, bytes.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setResource(bytes32,address,bytes)\":{\"params\":{\"args\":\"Additional data to be passed to specified handler.\",\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"withdraw(bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs}, {amounts}, and {transferData} of types address, address, uint[], uint[], bytes.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"_resourceIDToTokenContractAddress(bytes32)\":{\"notice\":\"Exposing getter for {_resourceIDToTokenContractAddress}.\"},\"deposit(bytes32,address,bytes)\":{\"notice\":\"A deposit is initiated by making a deposit in the Bridge contract.Data passed into the function should be constructed as ABI encoding of: tokenIDs                                    uint256[]  bytes amounts                                     uint256[]  bytes destinationRecipientAddress                   bytes    bytes transferData                                  bytes    bytes\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as ABI encoding of: tokenIDs                                    uint256[]  bytes amounts                                     uint256[]  bytes destinationRecipientAddress                   bytes    bytes transferData                                  bytes    bytes\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_tokenContractAddressToTokenProperties[contractAddress].isBurnable} to true.\"},\"setResource(bytes32,address,bytes)\":{\"notice\":\"Sets {_resourceIDToContractAddress} with {contractAddress}, {_tokenContractAddressToTokenProperties[tokenAddress].resourceID} with {resourceID} and {_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted} to true for {contractAddress} in ERCHandlerHelpers contract. Reverts if {contractAddress} doesn't support {IERC1155}.\"},\"withdraw(bytes)\":{\"notice\":\"Used to manually release ERC1155 tokens from ERC1155Safe.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC1155Handler.sol\":\"ERC1155Handler\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0xe68ed7fb8766ed1e888291f881e36b616037f852b37d96877045319ad298ba87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d491a2ca79dbf44bc02e876e21a5847a2cbcc011188532ad8662cdc1c134a4e\",\"dweb:/ipfs/QmUQXhSV8ZvHLzfdG89ZNSh1nLrAYyjnNBLznJGwGcwVk8\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x04d6d1342ece664085921a4fabc928a7bcf1cf2873fa81780f61a54dc2b9b66e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6d2b052effa2e9a7479b0fea53b46f4cbbd91947848ef632aadad20ae2e9275\",\"dweb:/ipfs/QmcZp7f5cooGZrhHE8RC1yQR53RFZt19d5fyVqNfbHmPgY\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5\",\"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol\":{\"keccak256\":\"0x65283046c52a6bd3e57e456cc5eeab0dd86c00979b84495dc0109b609747fd16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae1aa0113f29cb099e7ff5c2b8f559ede5fc9a8f1d57746e5ecea8fff9157de\",\"dweb:/ipfs/QmQrymH5ACUZcoWYSYZTQTGM1xVEZpnuQce8etBWTB33xm\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol\":{\"keccak256\":\"0xdad22b949de979bb2ad9001c044b2aeaacf8a25e3de09ed6f022a9469f936d5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2e9219d44b0ab528f8dc32f06897c5d7260e9f7190db830a017265ac0d22585\",\"dweb:/ipfs/QmYWP5r1Zkr5HRVm7cJG72vMqiDUwe9PbCmZZo9xc44V8K\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol\":{\"keccak256\":\"0x775e248004d21e0666740534a732daa9f17ceeee660ded876829e98a3a62b657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4babfb6f8a97aaf72ef6929d9662eedd99fdc8e9d99c86c4f1862ac77a911d\",\"dweb:/ipfs/QmZfD6m9BExvKHHNSpXGXanqZdVAAA9uY6ftfPqxxh5VS4\"]},\"@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol\":{\"keccak256\":\"0x2e024ca51ce5abe16c0d34e6992a1104f356e2244eb4ccbec970435e8b3405e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a74009db3c6fc8db851ba69ddb6795b5c1ef1120c5a00fd1a8dc3a717dd9d519\",\"dweb:/ipfs/QmZMk8Yh2X3gPS51ckUVLEXjZUhMSEeGApnA53WtjvLb9h\"]},\"@openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol\":{\"keccak256\":\"0x3dd5e1a66a56f30302108a1da97d677a42b1daa60e503696b2bcbbf3e4c95bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0808de0ae4918c664643c885ca7fa6503e8ef2bd75609dfc85152c0128a3422d\",\"dweb:/ipfs/QmNrhFC1XgBKuuxfahFeiwi1MCdu3FLNpHj2uStgmf4iJj\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xf7291d7213336b00ee7edbf7cd5034778dd7b0bda2a7489e664f1e5cacc6c24e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3671a157cfdc73f334fc9e584862e1b3b48e8b771cde69d79834b03dc5c2826\",\"dweb:/ipfs/QmVJnMc3FLyYzJFktqwinaZes3pnRPuU1wKmBGvGRfh4rc\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/ERC1155Safe.sol\":{\"keccak256\":\"0xdfd57708c59a2d70140ce95a29582da691ccf4c5bf88ef312506902239ceafe9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://1566a3ed011e76c20c27ae72676fcac33ee026773a3346c32036872c6ec7dcb2\",\"dweb:/ipfs/Qmc9sVi2pFG2dv9LRMZHrjWYo4M2MSmqcm455qH51pA43G\"]},\"project:/contracts/handlers/ERC1155Handler.sol\":{\"keccak256\":\"0x10fbf4f8cfdd6f478df24df80d982103273f3c63b1296250cba4491573cdb088\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://329a528724922ec0964430fc4e89d2ae42d7b63bc6af8d533f4342dc03f68620\",\"dweb:/ipfs/QmeS6LT5uYDy6MxGnvcBPrsHKNEGjN9t287uBPjkcw3fPo\"]},\"project:/contracts/handlers/ERCHandlerHelpers.sol\":{\"keccak256\":\"0xd70404586cae33b8ff8d3cc4557a570cd1d05c5ef1aac7af392941bd01430828\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3bb0e917a0d8bf33de6579f33a258040ee9515584ff840d3755acbb87ed6192f\",\"dweb:/ipfs/Qmcvx29x8c1wGrxAx8h8XQxsNUW9UKdvE76PxKufQv4LHP\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xf360099ea5a64a9ba351b0807e0bf376c432239af1cc314ef2e44b157afe56fd\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3b05bd76975b1d128c7b1c8ed93cf35c532737b84807605320a41f193c0e00ef\",\"dweb:/ipfs/QmNQLZWyPb2Nd3JmPaDN5rPyvFzcMtuW9xgp8a7hmgPsUo\"]},\"project:/contracts/interfaces/IHandler.sol\":{\"keccak256\":\"0x6ff2c7a2a169c519a9ebd670069c8dc902e09cf9dccd52ce87a110799d3dfd2e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://73eacb1eaa4de346d24fd3174fb21d2b16f1350b9599813f1bb292eecbce806d\",\"dweb:/ipfs/QmTGT3orocKxkJ3wud312TFB4CSVYJeGiTHGZie8vkNKxM\"]},\"project:/contracts/utils/SanityChecks.sol\":{\"keccak256\":\"0xe0a497950a5f1f9e127a5684c6c562e6fb0fa72dcde056b8c6da933e6bf8afc2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://47e5918856c922f1408cd15660d451062820121bd1ef3057d1dccad9f9785241\",\"dweb:/ipfs/QmZUEfFPEtiRKnfAUGhN6HoWCyLLUs9XgJbmqEq7pbABHq\"]}},\"version\":1}",
  "bytecode": "0x60a060405234801561001057600080fd5b5060405161133138038061133183398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161129f610092600039600081816101690152610633015261129f6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063ac607c2111610071578063ac607c211461018b578063b07e54bb14610220578063bc197c8114610240578063e248cff214610278578063f23a6e611461028b578063fa8675b0146102aa57600080fd5b806301ffc9a7146100b957806307b7ed99146100e15780630968f264146100f65780630a6d55d81461010957806330f08abd1461014a578063318c136e14610164575b600080fd5b6100cc6100c73660046109fd565b6102bd565b60405190151581526020015b60405180910390f35b6100f46100ef366004610a3c565b6102f4565b005b6100f4610104366004610b1e565b610308565b610132610117366004610b5b565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b610152601281565b60405160ff90911681526020016100d8565b6101327f000000000000000000000000000000000000000000000000000000000000000081565b6101e8610199366004610a3c565b600160208181526000928352604092839020805492810154845180860190955260029091015460ff81811615158652610100918290048116938601939093529293828216939091049091169084565b6040805194855292151560208086019190915291151592840192909252815115156060840152015160ff16608082015260a0016100d8565b61023361022e366004610bbd565b610361565b6040516100d89190610c71565b61025f61024e366004610d0e565b63bc197c8160e01b95945050505050565b6040516001600160e01b031990911681526020016100d8565b610233610286366004610dbc565b610457565b61025f610299366004610e08565b63f23a6e6160e01b95945050505050565b6100f46102b8366004610bbd565b61056c565b60006001600160e01b03198216630271189760e51b14806102ee57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102fc610628565b610305816106a2565b50565b610310610628565b60008060608060608580602001905181019061032c9190610ecc565b93985091965094509250905061034a6001600160a01b038516610714565b50610359853086868686610741565b505050505050565b606061036b610628565b60608061037a84860186610fb8565b60008981526020819052604090205491935091506001600160a01b0316806103f45760405162461bcd60e51b815260206004820152602260248201527f70726f7669646564207265736f75726365494420646f6573206e6f74206578696044820152611cdd60f21b60648201526084015b60405180910390fd5b6001600160a01b03811660009081526001602081905260409091200154610100900460ff161561042f5761042a818885856107b2565b61044c565b61044c818830868660405180602001604052806000815250610741565b505050949350505050565b6060610461610628565b60608080806104728688018861101c565b81519397509195509350915061048990601461081d565b5060208281015160008a81528083526040808220546001600160a01b031680835260019485905291209092015490919060ff166104e4576040516325df77c560e11b81526001600160a01b03821660048201526024016103eb565b6001600160a01b03811660009081526001602081905260409091200154610100900460ff16156105235761051e818360601c888887610850565b610534565b61053481308460601c898988610741565b808260601c878760405160200161054e9493929190611104565b60405160208183030381529060405296505050505050509392505050565b610574610628565b61058e6001600160a01b038416636cdb3d1360e11b6108be565b6105da5760405162461bcd60e51b815260206004820152601f60248201527f746f6b656e20646f6573206e6f7420737570706f72742049455243313135350060448201526064016103eb565b60008481526020818152604080832080546001600160a01b0319166001600160a01b03881690811790915583526001918290529091208581558101805461ffff191690911790555b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106a05760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e7472616374000060448201526064016103eb565b565b6001600160a01b0381166000908152600160208190526040909120015460ff166106ea576040516325df77c560e11b81526001600160a01b03821660048201526024016103eb565b6001600160a01b0316600090815260016020819052604090912001805461ff001916610100179055565b60006001600160a01b03821661073d5760405163d92e233d60e01b815260040160405180910390fd5b5090565b604051631759616b60e11b815286906001600160a01b03821690632eb2c2d690610777908990899089908990899060040161114d565b600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b5050505050505050505050565b604051631ac8311560e21b815284906001600160a01b03821690636b20c454906107e4908790879087906004016111ab565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b505050505050505050565b60008183146108495760405163c230690360e01b815260048101849052602481018390526044016103eb565b5090919050565b604051630fbfeffd60e11b815285906001600160a01b03821690631f7fdffa906108849088908890889088906004016111e1565b600060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b50505050505050505050565b60006108c9836108e1565b80156108da57506108da8383610914565b9392505050565b60006108f4826301ffc9a760e01b610914565b80156102ee575061090d826001600160e01b0319610914565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b179052905160009190829081906001600160a01b038716906175309061097b90869061122b565b6000604051808303818686fa925050503d80600081146109b7576040519150601f19603f3d011682016040523d82523d6000602084013e6109bc565b606091505b50915091506020815110156109d757600093505050506102ee565b8180156109f35750808060200190518101906109f39190611247565b9695505050505050565b600060208284031215610a0f57600080fd5b81356001600160e01b0319811681146108da57600080fd5b6001600160a01b038116811461030557600080fd5b600060208284031215610a4e57600080fd5b81356108da81610a27565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a9857610a98610a59565b604052919050565b600067ffffffffffffffff821115610aba57610aba610a59565b50601f01601f191660200190565b600082601f830112610ad957600080fd5b8135610aec610ae782610aa0565b610a6f565b818152846020838601011115610b0157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b3057600080fd5b813567ffffffffffffffff811115610b4757600080fd5b610b5384828501610ac8565b949350505050565b600060208284031215610b6d57600080fd5b5035919050565b60008083601f840112610b8657600080fd5b50813567ffffffffffffffff811115610b9e57600080fd5b602083019150836020828501011115610bb657600080fd5b9250929050565b60008060008060608587031215610bd357600080fd5b843593506020850135610be581610a27565b9250604085013567ffffffffffffffff811115610c0157600080fd5b610c0d87828801610b74565b95989497509550505050565b60005b83811015610c34578181015183820152602001610c1c565b838111156106225750506000910152565b60008151808452610c5d816020860160208601610c19565b601f01601f19169290920160200192915050565b6020815260006108da6020830184610c45565b600067ffffffffffffffff821115610c9e57610c9e610a59565b5060051b60200190565b600082601f830112610cb957600080fd5b81356020610cc9610ae783610c84565b82815260059290921b84018101918181019086841115610ce857600080fd5b8286015b84811015610d035780358352918301918301610cec565b509695505050505050565b600080600080600060a08688031215610d2657600080fd5b8535610d3181610a27565b94506020860135610d4181610a27565b9350604086013567ffffffffffffffff80821115610d5e57600080fd5b610d6a89838a01610ca8565b94506060880135915080821115610d8057600080fd5b610d8c89838a01610ca8565b93506080880135915080821115610da257600080fd5b50610daf88828901610ac8565b9150509295509295909350565b600080600060408486031215610dd157600080fd5b83359250602084013567ffffffffffffffff811115610def57600080fd5b610dfb86828701610b74565b9497909650939450505050565b600080600080600060a08688031215610e2057600080fd5b8535610e2b81610a27565b94506020860135610e3b81610a27565b93506040860135925060608601359150608086013567ffffffffffffffff811115610e6557600080fd5b610daf88828901610ac8565b600082601f830112610e8257600080fd5b81516020610e92610ae783610c84565b82815260059290921b84018101918181019086841115610eb157600080fd5b8286015b84811015610d035780518352918301918301610eb5565b600080600080600060a08688031215610ee457600080fd5b8551610eef81610a27565b6020870151909550610f0081610a27565b604087015190945067ffffffffffffffff80821115610f1e57600080fd5b610f2a89838a01610e71565b94506060880151915080821115610f4057600080fd5b610f4c89838a01610e71565b93506080880151915080821115610f6257600080fd5b508601601f81018813610f7457600080fd5b8051610f82610ae782610aa0565b818152896020838501011115610f9757600080fd5b610fa8826020830160208601610c19565b8093505050509295509295909350565b60008060408385031215610fcb57600080fd5b823567ffffffffffffffff80821115610fe357600080fd5b610fef86838701610ca8565b9350602085013591508082111561100557600080fd5b5061101285828601610ca8565b9150509250929050565b6000806000806080858703121561103257600080fd5b843567ffffffffffffffff8082111561104a57600080fd5b61105688838901610ca8565b9550602087013591508082111561106c57600080fd5b61107888838901610ca8565b9450604087013591508082111561108e57600080fd5b61109a88838901610ac8565b935060608701359150808211156110b057600080fd5b506110bd87828801610ac8565b91505092959194509250565b600081518084526020808501945080840160005b838110156110f9578151875295820195908201906001016110dd565b509495945050505050565b6001600160a01b03858116825284166020820152608060408201819052600090611130908301856110c9565b828103606084015261114281856110c9565b979650505050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611179908301866110c9565b828103606084015261118b81866110c9565b9050828103608084015261119f8185610c45565b98975050505050505050565b6001600160a01b03841681526060602082018190526000906111cf908301856110c9565b82810360408401526109f381856110c9565b6001600160a01b0385168152608060208201819052600090611205908301866110c9565b828103604084015261121781866110c9565b905082810360608401526111428185610c45565b6000825161123d818460208701610c19565b9190910192915050565b60006020828403121561125957600080fd5b815180151581146108da57600080fdfea2646970667358221220b2b8a27ec4ec5a80267933354ff19492921af3edc3086549939805f92054a12d64736f6c634300080b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063ac607c2111610071578063ac607c211461018b578063b07e54bb14610220578063bc197c8114610240578063e248cff214610278578063f23a6e611461028b578063fa8675b0146102aa57600080fd5b806301ffc9a7146100b957806307b7ed99146100e15780630968f264146100f65780630a6d55d81461010957806330f08abd1461014a578063318c136e14610164575b600080fd5b6100cc6100c73660046109fd565b6102bd565b60405190151581526020015b60405180910390f35b6100f46100ef366004610a3c565b6102f4565b005b6100f4610104366004610b1e565b610308565b610132610117366004610b5b565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b610152601281565b60405160ff90911681526020016100d8565b6101327f000000000000000000000000000000000000000000000000000000000000000081565b6101e8610199366004610a3c565b600160208181526000928352604092839020805492810154845180860190955260029091015460ff81811615158652610100918290048116938601939093529293828216939091049091169084565b6040805194855292151560208086019190915291151592840192909252815115156060840152015160ff16608082015260a0016100d8565b61023361022e366004610bbd565b610361565b6040516100d89190610c71565b61025f61024e366004610d0e565b63bc197c8160e01b95945050505050565b6040516001600160e01b031990911681526020016100d8565b610233610286366004610dbc565b610457565b61025f610299366004610e08565b63f23a6e6160e01b95945050505050565b6100f46102b8366004610bbd565b61056c565b60006001600160e01b03198216630271189760e51b14806102ee57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102fc610628565b610305816106a2565b50565b610310610628565b60008060608060608580602001905181019061032c9190610ecc565b93985091965094509250905061034a6001600160a01b038516610714565b50610359853086868686610741565b505050505050565b606061036b610628565b60608061037a84860186610fb8565b60008981526020819052604090205491935091506001600160a01b0316806103f45760405162461bcd60e51b815260206004820152602260248201527f70726f7669646564207265736f75726365494420646f6573206e6f74206578696044820152611cdd60f21b60648201526084015b60405180910390fd5b6001600160a01b03811660009081526001602081905260409091200154610100900460ff161561042f5761042a818885856107b2565b61044c565b61044c818830868660405180602001604052806000815250610741565b505050949350505050565b6060610461610628565b60608080806104728688018861101c565b81519397509195509350915061048990601461081d565b5060208281015160008a81528083526040808220546001600160a01b031680835260019485905291209092015490919060ff166104e4576040516325df77c560e11b81526001600160a01b03821660048201526024016103eb565b6001600160a01b03811660009081526001602081905260409091200154610100900460ff16156105235761051e818360601c888887610850565b610534565b61053481308460601c898988610741565b808260601c878760405160200161054e9493929190611104565b60405160208183030381529060405296505050505050509392505050565b610574610628565b61058e6001600160a01b038416636cdb3d1360e11b6108be565b6105da5760405162461bcd60e51b815260206004820152601f60248201527f746f6b656e20646f6573206e6f7420737570706f72742049455243313135350060448201526064016103eb565b60008481526020818152604080832080546001600160a01b0319166001600160a01b03881690811790915583526001918290529091208581558101805461ffff191690911790555b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106a05760405162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e7472616374000060448201526064016103eb565b565b6001600160a01b0381166000908152600160208190526040909120015460ff166106ea576040516325df77c560e11b81526001600160a01b03821660048201526024016103eb565b6001600160a01b0316600090815260016020819052604090912001805461ff001916610100179055565b60006001600160a01b03821661073d5760405163d92e233d60e01b815260040160405180910390fd5b5090565b604051631759616b60e11b815286906001600160a01b03821690632eb2c2d690610777908990899089908990899060040161114d565b600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b5050505050505050505050565b604051631ac8311560e21b815284906001600160a01b03821690636b20c454906107e4908790879087906004016111ab565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b505050505050505050565b60008183146108495760405163c230690360e01b815260048101849052602481018390526044016103eb565b5090919050565b604051630fbfeffd60e11b815285906001600160a01b03821690631f7fdffa906108849088908890889088906004016111e1565b600060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b50505050505050505050565b60006108c9836108e1565b80156108da57506108da8383610914565b9392505050565b60006108f4826301ffc9a760e01b610914565b80156102ee575061090d826001600160e01b0319610914565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b179052905160009190829081906001600160a01b038716906175309061097b90869061122b565b6000604051808303818686fa925050503d80600081146109b7576040519150601f19603f3d011682016040523d82523d6000602084013e6109bc565b606091505b50915091506020815110156109d757600093505050506102ee565b8180156109f35750808060200190518101906109f39190611247565b9695505050505050565b600060208284031215610a0f57600080fd5b81356001600160e01b0319811681146108da57600080fd5b6001600160a01b038116811461030557600080fd5b600060208284031215610a4e57600080fd5b81356108da81610a27565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a9857610a98610a59565b604052919050565b600067ffffffffffffffff821115610aba57610aba610a59565b50601f01601f191660200190565b600082601f830112610ad957600080fd5b8135610aec610ae782610aa0565b610a6f565b818152846020838601011115610b0157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b3057600080fd5b813567ffffffffffffffff811115610b4757600080fd5b610b5384828501610ac8565b949350505050565b600060208284031215610b6d57600080fd5b5035919050565b60008083601f840112610b8657600080fd5b50813567ffffffffffffffff811115610b9e57600080fd5b602083019150836020828501011115610bb657600080fd5b9250929050565b60008060008060608587031215610bd357600080fd5b843593506020850135610be581610a27565b9250604085013567ffffffffffffffff811115610c0157600080fd5b610c0d87828801610b74565b95989497509550505050565b60005b83811015610c34578181015183820152602001610c1c565b838111156106225750506000910152565b60008151808452610c5d816020860160208601610c19565b601f01601f19169290920160200192915050565b6020815260006108da6020830184610c45565b600067ffffffffffffffff821115610c9e57610c9e610a59565b5060051b60200190565b600082601f830112610cb957600080fd5b81356020610cc9610ae783610c84565b82815260059290921b84018101918181019086841115610ce857600080fd5b8286015b84811015610d035780358352918301918301610cec565b509695505050505050565b600080600080600060a08688031215610d2657600080fd5b8535610d3181610a27565b94506020860135610d4181610a27565b9350604086013567ffffffffffffffff80821115610d5e57600080fd5b610d6a89838a01610ca8565b94506060880135915080821115610d8057600080fd5b610d8c89838a01610ca8565b93506080880135915080821115610da257600080fd5b50610daf88828901610ac8565b9150509295509295909350565b600080600060408486031215610dd157600080fd5b83359250602084013567ffffffffffffffff811115610def57600080fd5b610dfb86828701610b74565b9497909650939450505050565b600080600080600060a08688031215610e2057600080fd5b8535610e2b81610a27565b94506020860135610e3b81610a27565b93506040860135925060608601359150608086013567ffffffffffffffff811115610e6557600080fd5b610daf88828901610ac8565b600082601f830112610e8257600080fd5b81516020610e92610ae783610c84565b82815260059290921b84018101918181019086841115610eb157600080fd5b8286015b84811015610d035780518352918301918301610eb5565b600080600080600060a08688031215610ee457600080fd5b8551610eef81610a27565b6020870151909550610f0081610a27565b604087015190945067ffffffffffffffff80821115610f1e57600080fd5b610f2a89838a01610e71565b94506060880151915080821115610f4057600080fd5b610f4c89838a01610e71565b93506080880151915080821115610f6257600080fd5b508601601f81018813610f7457600080fd5b8051610f82610ae782610aa0565b818152896020838501011115610f9757600080fd5b610fa8826020830160208601610c19565b8093505050509295509295909350565b60008060408385031215610fcb57600080fd5b823567ffffffffffffffff80821115610fe357600080fd5b610fef86838701610ca8565b9350602085013591508082111561100557600080fd5b5061101285828601610ca8565b9150509250929050565b6000806000806080858703121561103257600080fd5b843567ffffffffffffffff8082111561104a57600080fd5b61105688838901610ca8565b9550602087013591508082111561106c57600080fd5b61107888838901610ca8565b9450604087013591508082111561108e57600080fd5b61109a88838901610ac8565b935060608701359150808211156110b057600080fd5b506110bd87828801610ac8565b91505092959194509250565b600081518084526020808501945080840160005b838110156110f9578151875295820195908201906001016110dd565b509495945050505050565b6001600160a01b03858116825284166020820152608060408201819052600090611130908301856110c9565b828103606084015261114281856110c9565b979650505050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611179908301866110c9565b828103606084015261118b81866110c9565b9050828103608084015261119f8185610c45565b98975050505050505050565b6001600160a01b03841681526060602082018190526000906111cf908301856110c9565b82810360408401526109f381856110c9565b6001600160a01b0385168152608060208201819052600090611205908301866110c9565b828103604084015261121781866110c9565b905082810360608401526111428185610c45565b6000825161123d818460208701610c19565b9190910192915050565b60006020828403121561125957600080fd5b815180151581146108da57600080fdfea2646970667358221220b2b8a27ec4ec5a80267933354ff19492921af3edc3086549939805f92054a12d64736f6c634300080b0033",
  "immutableReferences": {
    "14625": [
      {
        "length": 32,
        "start": 361
      },
      {
        "length": 32,
        "start": 1587
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:660:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:105",
                "type": ""
              }
            ],
            "src": "14:290:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "483:175:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "500:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "511:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "493:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "493:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "493:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "534:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "545:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "530:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "530:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "550:2:105",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "523:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "523:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "523:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "573:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "584:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "569:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "569:18:105"
                      },
                      {
                        "hexValue": "696e76616c6964204552433131353520696e74657266616365",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "589:27:105",
                        "type": "",
                        "value": "invalid ERC1155 interface"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "562:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "562:55:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "562:55:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "626:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "638:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "649:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "634:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "634:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "626:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "460:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "474:4:105",
                "type": ""
              }
            ],
            "src": "309:349:105"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"invalid ERC1155 interface\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:17332:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "83:217:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "129:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "138:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "141:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "131:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "131:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "131:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "104:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "113:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "100:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "100:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "125:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "96:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "93:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "154:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "180:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "167:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "167:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "158:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "254:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "263:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "266:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "256:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "256:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "256:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "212:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "223:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "234:3:105",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "239:10:105",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "230:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "230:20:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "219:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "219:32:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "209:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "209:43:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "202:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "202:51:105"
                  },
                  "nodeType": "YulIf",
                  "src": "199:71:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "279:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "289:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "279:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "49:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "60:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "72:6:105",
                "type": ""
              }
            ],
            "src": "14:286:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "400:92:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "410:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "422:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "433:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "418:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "418:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "410:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "452:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "477:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "470:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "470:14:105"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "463:6:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "463:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "445:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "445:41:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "445:41:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "369:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "380:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "391:4:105",
                "type": ""
              }
            ],
            "src": "305:187:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "542:86:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "606:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "615:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "618:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "608:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "608:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "608:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "565:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "576:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "591:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "596:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "587:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "587:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "600:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "583:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "572:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "572:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "562:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "562:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "555:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "555:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "552:70:105"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "531:5:105",
                "type": ""
              }
            ],
            "src": "497:131:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "703:177:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "749:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "758:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "761:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "751:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "751:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "751:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "724:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "733:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "720:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "720:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "745:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "716:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "716:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "713:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "774:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "800:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "787:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "787:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "778:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "844:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "819:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "819:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "819:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "859:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "869:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "859:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "669:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "680:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "692:6:105",
                "type": ""
              }
            ],
            "src": "633:247:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "917:95:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "934:1:105",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "941:3:105",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "946:10:105",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "937:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "937:20:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "927:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "927:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "927:31:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "974:1:105",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "977:4:105",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "967:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "967:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "967:15:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "998:1:105",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1001:4:105",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "991:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "991:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "991:15:105"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "885:127:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1062:230:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1072:19:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1088:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1082:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1082:9:105"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "1072:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1100:58:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1122:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "1138:4:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1144:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1134:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1134:13:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1153:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "1149:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1149:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1130:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1130:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1118:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1118:40:105"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "1104:10:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1233:22:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1235:16:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1235:18:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1235:18:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1176:10:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1188:18:105",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1173:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1173:34:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1212:10:105"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1224:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1209:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1209:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "1170:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1170:62:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1167:88:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1271:2:105",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "1275:10:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1264:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1264:22:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1264:22:105"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "1042:4:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "1051:6:105",
                "type": ""
              }
            ],
            "src": "1017:275:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1354:129:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1398:22:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1400:16:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1400:18:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1400:18:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1370:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1378:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1367:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1367:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1364:56:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1429:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1449:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1457:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1445:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1445:15:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1466:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "1462:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1462:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1441:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1441:29:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1472:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1437:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1437:40:105"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "1429:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1334:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "1345:4:105",
                "type": ""
              }
            ],
            "src": "1297:186:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1540:410:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1589:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1598:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1601:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1591:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1591:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1591:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1568:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1576:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1564:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1564:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1583:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1560:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1560:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1553:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1553:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1550:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1614:30:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1637:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1624:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1624:20:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1618:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1653:63:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "1712:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "1684:27:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1684:31:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "1668:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1668:48:105"
                  },
                  "variables": [
                    {
                      "name": "array_1",
                      "nodeType": "YulTypedName",
                      "src": "1657:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array_1",
                        "nodeType": "YulIdentifier",
                        "src": "1732:7:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1741:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1725:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1725:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1725:19:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1792:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1801:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1804:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1794:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1794:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1794:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1767:6:105"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1775:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1763:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1763:15:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1780:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1759:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1759:26:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1787:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1756:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1756:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1753:55:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array_1",
                            "nodeType": "YulIdentifier",
                            "src": "1834:7:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1843:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1830:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1830:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1854:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1862:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1850:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1850:17:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1869:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "1817:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1817:55:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1817:55:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "1896:7:105"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1905:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1892:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1892:16:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1910:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1888:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1888:27:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1917:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1881:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1881:38:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1881:38:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1928:16:105",
                  "value": {
                    "name": "array_1",
                    "nodeType": "YulIdentifier",
                    "src": "1937:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1928:5:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1514:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1522:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "1530:5:105",
                "type": ""
              }
            ],
            "src": "1488:462:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2034:241:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2080:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2089:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2092:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2082:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2082:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2082:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2055:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2064:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2051:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2051:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2076:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2047:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2047:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2044:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2105:37:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2132:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2119:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2119:23:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2109:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2185:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2194:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2197:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2187:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2187:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2187:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2157:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2165:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2154:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2154:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2151:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2210:59:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2241:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2252:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2237:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2237:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2261:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "2220:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2220:49:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2210:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2000:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2011:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2023:6:105",
                "type": ""
              }
            ],
            "src": "1955:320:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2350:110:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2396:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2405:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2408:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2398:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2398:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2398:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2371:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2380:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2367:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2367:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2392:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2363:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2363:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2360:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2421:33:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2444:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2431:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2431:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2421:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2316:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2327:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2339:6:105",
                "type": ""
              }
            ],
            "src": "2280:180:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2566:102:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2576:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2588:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2599:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2584:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2584:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2576:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2618:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "2633:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2649:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2654:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2645:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2645:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2658:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "2641:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2641:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2629:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2629:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2611:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2611:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2611:51:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2535:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2546:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2557:4:105",
                "type": ""
              }
            ],
            "src": "2465:203:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2770:87:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2780:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2792:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2803:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2788:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2788:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2780:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2822:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "2837:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2845:4:105",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2833:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2833:17:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2815:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2815:36:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2815:36:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2739:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2750:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2761:4:105",
                "type": ""
              }
            ],
            "src": "2673:184:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3089:332:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3099:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3111:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3122:3:105",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3107:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3107:19:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3099:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3142:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "3153:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3135:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3135:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3135:25:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3180:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3191:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3176:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3176:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "3210:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "3203:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3203:14:105"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "3196:6:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3196:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3169:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3169:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3169:50:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3239:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3250:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3235:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3235:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value2",
                                "nodeType": "YulIdentifier",
                                "src": "3269:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "3262:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3262:14:105"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "3255:6:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3255:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3228:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3228:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3228:50:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3298:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3309:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3294:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3294:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3334:6:105"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3328:5:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3328:13:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "3321:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3321:21:105"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "3314:6:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3314:29:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3287:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3287:57:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3287:57:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3364:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3375:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3360:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3360:19:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3395:6:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3403:2:105",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3391:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3391:15:105"
                              }
                            ],
                            "functionName": {
                              "name": "mload",
                              "nodeType": "YulIdentifier",
                              "src": "3385:5:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3385:22:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3409:4:105",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3381:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3381:33:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3353:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3353:62:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3353:62:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_bool_t_bool_t_struct$_Decimals_$14633_memory_ptr__to_t_bytes32_t_bool_t_bool_t_struct$_Decimals_$14633_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3034:9:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3045:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3053:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3061:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3069:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3080:4:105",
                "type": ""
              }
            ],
            "src": "2862:559:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3498:275:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3547:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3556:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3559:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3549:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3549:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3549:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3526:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3534:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3522:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3522:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "3541:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3518:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3518:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "3511:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3511:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3508:55:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3572:30:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3595:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3582:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3582:20:105"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "3572:6:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3645:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3654:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3657:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3647:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3647:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3647:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3617:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3625:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3614:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3614:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3611:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3670:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3686:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3694:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3682:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3682:17:105"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "3670:8:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3751:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3760:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3763:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3753:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3753:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3753:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3722:6:105"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "3730:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3718:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3718:19:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3739:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3714:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3714:30:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "3746:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3711:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3711:39:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3708:59:105"
                }
              ]
            },
            "name": "abi_decode_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "3461:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3469:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "3477:8:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3487:6:105",
                "type": ""
              }
            ],
            "src": "3426:347:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3901:489:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3947:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3956:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3959:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3949:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3949:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3949:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3922:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3931:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3918:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3918:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3943:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3914:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3914:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3911:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3972:33:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3995:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3982:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3982:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3972:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4014:45:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4044:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4055:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4040:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4040:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4027:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4027:32:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4018:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4093:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4068:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4068:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4068:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4108:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4118:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4108:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4132:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4163:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4174:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4159:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4159:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4146:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4146:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4136:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4221:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4230:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4233:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4223:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4223:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4223:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4193:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4201:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4190:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4190:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4187:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4246:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4302:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4313:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4298:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4298:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4322:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "4272:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4272:58:105"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "4250:8:105",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "4260:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4339:18:105",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "4349:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4339:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4366:18:105",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "4376:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "4366:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3843:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3854:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3866:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3874:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3882:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3890:6:105",
                "type": ""
              }
            ],
            "src": "3778:612:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4448:205:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4458:10:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4467:1:105",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "4462:1:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4527:63:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4552:3:105"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "4557:1:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "4548:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4548:11:105"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "4571:3:105"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "4576:1:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "4567:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4567:11:105"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "4561:5:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4561:18:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4541:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4541:39:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4541:39:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "4488:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4491:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4485:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4485:13:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "4499:19:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4501:15:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "4510:1:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4513:2:105",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4506:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4506:10:105"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "4501:1:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "4481:3:105",
                    "statements": []
                  },
                  "src": "4477:113:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4616:31:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4629:3:105"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "4634:6:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "4625:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4625:16:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4643:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4618:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4618:27:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4618:27:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "4605:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4608:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4602:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4602:13:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4599:48:105"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "4426:3:105",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "4431:3:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "4436:6:105",
                "type": ""
              }
            ],
            "src": "4395:258:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4707:208:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4717:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4737:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4731:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4731:12:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "4721:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4759:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4764:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4752:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4752:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4752:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4806:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4813:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4802:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4802:16:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4824:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4829:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4820:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4820:14:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4836:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "4780:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4780:63:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4780:63:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4852:57:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4867:3:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4880:6:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4888:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4876:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4876:15:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4897:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "4893:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4893:7:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4872:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4872:29:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4863:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4863:39:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4904:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4859:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4859:50:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "4852:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4684:5:105",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4691:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4699:3:105",
                "type": ""
              }
            ],
            "src": "4658:257:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5039:98:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5056:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5067:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5049:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5049:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5049:21:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5079:52:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5104:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5116:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5127:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5112:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5112:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5087:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5087:44:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5079:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5008:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5019:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5030:4:105",
                "type": ""
              }
            ],
            "src": "4920:217:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5211:114:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5255:22:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "5257:16:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5257:18:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5257:18:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5227:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5235:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5224:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5224:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "5221:56:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5286:33:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5302:1:105",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "5305:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "5298:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5298:14:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5314:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5294:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5294:25:105"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "5286:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "5191:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "5202:4:105",
                "type": ""
              }
            ],
            "src": "5142:183:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5394:598:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5443:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5452:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5455:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5445:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5445:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5445:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "5422:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5430:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5418:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5418:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "5437:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "5414:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5414:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "5407:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5407:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "5404:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5468:30:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5491:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5478:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5478:20:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5472:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5507:14:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5517:4:105",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "5511:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5530:71:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5597:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_uint256_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "5557:39:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5557:43:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "5541:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5541:60:105"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "5534:3:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5610:16:105",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "5623:3:105"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "5614:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "5642:3:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5647:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5635:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5635:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5635:15:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5659:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "5670:3:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "5675:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5666:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5666:12:105"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "5659:3:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5687:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5709:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5721:1:105",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "5724:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "5717:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5717:10:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5705:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5705:23:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "5730:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5701:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5701:32:105"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "5691:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5761:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5770:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5773:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5763:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5763:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5763:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5748:6:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "5756:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5745:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5745:15:105"
                  },
                  "nodeType": "YulIf",
                  "src": "5742:35:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5786:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5801:6:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "5809:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5797:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5797:15:105"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "5790:3:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5877:86:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "5898:3:105"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "5916:3:105"
                                }
                              ],
                              "functionName": {
                                "name": "calldataload",
                                "nodeType": "YulIdentifier",
                                "src": "5903:12:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5903:17:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5891:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5891:30:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5891:30:105"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5934:19:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "5945:3:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "5950:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5941:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5941:12:105"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "5934:3:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "5832:3:105"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5837:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5829:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5829:15:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5845:23:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5847:19:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "5858:3:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "5863:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5854:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5854:12:105"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "5847:3:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5825:3:105",
                    "statements": []
                  },
                  "src": "5821:142:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5972:14:105",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "5981:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "5972:5:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "5368:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "5376:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "5384:5:105",
                "type": ""
              }
            ],
            "src": "5330:662:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6194:874:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6241:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6250:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6253:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6243:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6243:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6243:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6215:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6224:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6211:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6211:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6236:3:105",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6207:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6207:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6204:53:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6266:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6292:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6279:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6279:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6270:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6336:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "6311:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6311:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6311:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6351:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6361:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6351:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6375:47:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6407:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6418:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6403:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6403:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6390:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6390:32:105"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "6379:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "6456:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "6431:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6431:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6431:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6473:17:105",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "6483:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6473:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6499:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6530:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6541:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6526:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6526:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6513:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6513:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6503:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6554:28:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6564:18:105",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6558:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6609:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6618:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6621:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6611:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6611:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6611:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6597:6:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6605:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6594:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6594:14:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6591:34:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6634:71:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6677:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "6688:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6673:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6673:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6697:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6644:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6644:61:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6634:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6714:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6747:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6758:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6743:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6743:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6730:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6730:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "6718:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6791:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6800:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6803:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6793:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6793:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6793:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6777:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6787:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6774:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6774:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6771:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6816:73:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6859:9:105"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "6870:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6855:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6855:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6881:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6826:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6826:63:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6816:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6898:49:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6931:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6942:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6927:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6927:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6914:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6914:33:105"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "6902:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6976:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6985:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6988:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6978:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6978:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6978:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "6962:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6972:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6959:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6959:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6956:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7001:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7032:9:105"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "7043:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7028:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7028:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7054:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7011:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7011:51:105"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "7001:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6128:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6139:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6151:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6159:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6167:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "6175:6:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "6183:6:105",
                "type": ""
              }
            ],
            "src": "5997:1071:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7172:103:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7182:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7194:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7205:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7190:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7190:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7182:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7224:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "7239:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7251:3:105",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7256:10:105",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "7247:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7247:20:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7235:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7235:33:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7217:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7217:52:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7217:52:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7141:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7152:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7163:4:105",
                "type": ""
              }
            ],
            "src": "7073:202:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7386:371:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7432:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7441:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7444:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7434:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7434:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7434:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7407:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7416:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7403:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7403:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7428:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7399:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7399:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7396:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7457:33:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7480:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7467:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7467:23:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7457:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7499:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7530:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7541:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7526:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7526:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7513:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7513:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "7503:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7588:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7597:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7600:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7590:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7590:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7590:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7560:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7568:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7557:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7557:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7554:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7613:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7669:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7680:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7665:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7665:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7689:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "7639:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7639:58:105"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "7617:8:105",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "7627:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7706:18:105",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "7716:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7706:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7733:18:105",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "7743:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "7733:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7336:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7347:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7359:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7367:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7375:6:105",
                "type": ""
              }
            ],
            "src": "7280:477:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7909:587:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7956:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7965:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7968:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7958:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7958:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7958:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7930:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7939:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7926:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7926:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7951:3:105",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7922:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7922:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7919:53:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7981:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8007:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7994:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7994:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7985:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8051:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "8026:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8026:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8026:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8066:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8076:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8066:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8090:47:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8122:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8133:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8118:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8118:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8105:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8105:32:105"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "8094:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "8171:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "8146:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8146:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8146:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8188:17:105",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "8198:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8188:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8214:42:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8241:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8252:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8237:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8237:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8224:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8224:32:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "8214:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8265:42:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8292:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8303:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8288:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8288:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8275:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8275:32:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "8265:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8316:47:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8347:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8358:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8343:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8343:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8330:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8330:33:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8320:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8406:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8415:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8418:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8408:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8408:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8408:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8378:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8386:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8375:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8375:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "8372:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8431:59:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8462:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8473:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8458:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8458:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8482:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8441:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8441:49:105"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "8431:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7843:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7854:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7866:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7874:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7882:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "7890:6:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "7898:6:105",
                "type": ""
              }
            ],
            "src": "7762:734:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8576:584:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8625:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8634:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8637:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8627:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8627:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8627:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "8604:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8612:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8600:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8600:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "8619:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "8596:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8596:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8589:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8589:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "8586:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8650:23:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8666:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8660:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8660:13:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8654:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8682:14:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8692:4:105",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "8686:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8705:71:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8772:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_uint256_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "8732:39:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8732:43:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8716:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8716:60:105"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "8709:3:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8785:16:105",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "8798:3:105"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "8789:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "8817:3:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8822:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8810:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8810:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8810:15:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8834:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "8845:3:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8850:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8841:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8841:12:105"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "8834:3:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8862:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8884:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8896:1:105",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "8899:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8892:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8892:10:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8880:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8880:23:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8905:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8876:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8876:32:105"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "8866:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8936:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8945:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8948:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8938:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8938:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8938:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8923:6:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "8931:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8920:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8920:15:105"
                  },
                  "nodeType": "YulIf",
                  "src": "8917:35:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8961:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8976:6:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8984:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8972:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8972:15:105"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "8965:3:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9052:79:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "9073:3:105"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "9084:3:105"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "9078:5:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9078:10:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "9066:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9066:23:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9066:23:105"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "9102:19:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "9113:3:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "9118:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9109:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9109:12:105"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "9102:3:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "9007:3:105"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9012:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "9004:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9004:15:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "9020:23:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "9022:19:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "9033:3:105"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "9038:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9029:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9029:12:105"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "9022:3:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "9000:3:105",
                    "statements": []
                  },
                  "src": "8996:135:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9140:14:105",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "9149:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "9140:5:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "8550:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8558:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "8566:5:105",
                "type": ""
              }
            ],
            "src": "8501:659:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9389:1171:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9436:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9445:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9448:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9438:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9438:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9438:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9410:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9419:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9406:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9406:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9431:3:105",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9402:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9402:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "9399:53:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9461:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9480:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9474:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9474:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "9465:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9524:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "9499:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9499:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9499:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9539:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9549:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9539:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9563:40:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9588:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9599:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9584:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9584:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9578:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9578:25:105"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "9567:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "9637:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "9612:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9612:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9612:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9654:17:105",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "9664:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9654:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9680:39:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9704:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9715:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9700:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9700:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9694:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9694:25:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9684:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9728:28:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9738:18:105",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9732:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9783:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9792:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9795:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9785:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9785:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9785:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9771:6:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9779:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9768:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9768:14:105"
                  },
                  "nodeType": "YulIf",
                  "src": "9765:34:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9808:82:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9862:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9873:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9858:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9858:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9882:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "9818:39:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9818:72:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "9808:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9899:41:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9925:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9936:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9921:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9921:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9915:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9915:25:105"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "9903:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9969:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9978:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9981:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9971:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9971:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9971:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "9955:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9965:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9952:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9952:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "9949:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9994:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10048:9:105"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "10059:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10044:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10044:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10070:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "10004:39:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10004:74:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "9994:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10087:42:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10113:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10124:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10109:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10109:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10103:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10103:26:105"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "10091:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10158:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10167:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10170:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10160:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10160:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10160:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "10144:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10154:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10141:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10141:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "10138:36:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10183:34:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10197:9:105"
                      },
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "10208:8:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10193:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10193:24:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "10187:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10265:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10274:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10277:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10267:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10267:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10267:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "10244:2:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10248:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "10240:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10240:13:105"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10255:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "10236:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10236:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10229:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10229:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "10226:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10290:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "10306:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10300:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10300:9:105"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "10294:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10318:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "10375:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "10347:27:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10347:31:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "10331:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10331:48:105"
                  },
                  "variables": [
                    {
                      "name": "array",
                      "nodeType": "YulTypedName",
                      "src": "10322:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "10395:5:105"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "10402:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10388:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10388:17:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10388:17:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10451:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10460:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10463:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10453:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10453:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10453:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "10428:2:105"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "10432:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "10424:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10424:11:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10437:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10420:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10420:20:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10442:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10417:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10417:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "10414:53:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "10502:2:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10506:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10498:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10498:11:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "10515:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10522:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10511:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10511:14:105"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "10527:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "10476:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10476:54:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10476:54:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10539:15:105",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "10549:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "10539:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_payablet_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9323:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9334:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9346:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9354:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9362:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9370:6:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9378:6:105",
                "type": ""
              }
            ],
            "src": "9165:1395:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10702:458:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10748:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10757:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10760:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10750:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10750:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10750:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10723:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10732:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10719:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10719:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10744:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10715:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10715:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "10712:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10773:37:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10800:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10787:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10787:23:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "10777:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10819:28:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "10829:18:105",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "10823:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10874:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10883:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10886:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10876:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10876:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10876:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "10862:6:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10870:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10859:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10859:14:105"
                  },
                  "nodeType": "YulIf",
                  "src": "10856:34:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10899:71:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10942:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "10953:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10938:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10938:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10962:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "10909:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10909:61:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10899:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10979:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11012:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11023:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11008:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11008:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10995:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10995:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "10983:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11056:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11065:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11068:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11058:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11058:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11058:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "11042:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11052:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11039:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11039:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "11036:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11081:73:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11124:9:105"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "11135:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11120:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11120:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11146:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "11091:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11091:63:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11081:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10660:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10671:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10683:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10691:6:105",
                "type": ""
              }
            ],
            "src": "10565:595:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11339:224:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11356:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11367:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11349:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11349:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11349:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11390:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11401:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11386:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11386:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11406:2:105",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11379:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11379:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11379:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11429:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11440:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11425:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11425:18:105"
                      },
                      {
                        "hexValue": "70726f7669646564207265736f75726365494420646f6573206e6f7420657869",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11445:34:105",
                        "type": "",
                        "value": "provided resourceID does not exi"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11418:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11418:62:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11418:62:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11500:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11511:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11496:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11496:18:105"
                      },
                      {
                        "hexValue": "7374",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11516:4:105",
                        "type": "",
                        "value": "st"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11489:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11489:32:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11489:32:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11530:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11542:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11553:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11538:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11538:19:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11530:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11316:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11330:4:105",
                "type": ""
              }
            ],
            "src": "11165:398:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11757:803:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11804:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11813:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11816:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11806:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11806:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11806:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11778:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11787:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11774:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11774:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11799:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11770:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11770:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "11767:53:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11829:37:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11856:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11843:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11843:23:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11833:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11875:28:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "11885:18:105",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "11879:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11930:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11939:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11942:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11932:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11932:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11932:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11918:6:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11926:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11915:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11915:14:105"
                  },
                  "nodeType": "YulIf",
                  "src": "11912:34:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11955:71:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11998:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "12009:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11994:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11994:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12018:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "11965:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11965:61:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11955:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12035:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12068:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12079:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12064:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12064:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12051:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12051:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "12039:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12112:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12121:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12124:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12114:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12114:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12114:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "12098:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12108:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12095:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12095:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "12092:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12137:73:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12180:9:105"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "12191:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12176:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12176:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12202:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "12147:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12147:63:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "12137:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12219:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12252:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12263:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12248:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12248:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12235:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12235:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "12223:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12296:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12305:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12308:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12298:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12298:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12298:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "12282:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12292:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12279:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12279:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "12276:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12321:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12352:9:105"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "12363:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12348:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12348:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12374:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12331:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12331:51:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "12321:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12391:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12424:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12435:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12420:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12420:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12407:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12407:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nodeType": "YulTypedName",
                      "src": "12395:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12468:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12477:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12480:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12470:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12470:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12470:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nodeType": "YulIdentifier",
                        "src": "12454:8:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12464:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12451:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12451:16:105"
                  },
                  "nodeType": "YulIf",
                  "src": "12448:36:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12493:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12524:9:105"
                          },
                          {
                            "name": "offset_3",
                            "nodeType": "YulIdentifier",
                            "src": "12535:8:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12520:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12520:24:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12546:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12503:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12503:51:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "12493:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11699:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11710:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11722:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11730:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11738:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11746:6:105",
                "type": ""
              }
            ],
            "src": "11568:992:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12626:374:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12636:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12656:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "12650:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12650:12:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "12640:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12678:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12683:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12671:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12671:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12671:19:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12699:14:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "12709:4:105",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "12703:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12722:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12733:3:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12738:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12729:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12729:12:105"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "12722:3:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12750:28:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12768:5:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12775:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12764:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12764:14:105"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "12754:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12787:10:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "12796:1:105",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "12791:1:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12855:120:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "12876:3:105"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "12887:6:105"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "12881:5:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "12881:13:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "12869:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12869:26:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12869:26:105"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "12908:19:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "12919:3:105"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "12924:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "12915:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12915:12:105"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12908:3:105"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "12940:25:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "12954:6:105"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "12962:2:105"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "12950:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12950:15:105"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "12940:6:105"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "12817:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12820:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "12814:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12814:13:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "12828:18:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "12830:14:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "12839:1:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12842:1:105",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "12835:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12835:9:105"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "12830:1:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "12810:3:105",
                    "statements": []
                  },
                  "src": "12806:169:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12984:10:105",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "12991:3:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12984:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "12603:5:105",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12610:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12618:3:105",
                "type": ""
              }
            ],
            "src": "12565:435:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13290:380:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13300:29:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13318:3:105",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13323:1:105",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "13314:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13314:11:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13327:1:105",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "13310:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13310:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "13304:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13345:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13360:6:105"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13368:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13356:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13356:15:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13338:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13338:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13338:34:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13392:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13403:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13388:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13388:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "13412:6:105"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13420:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13408:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13408:15:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13381:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13381:43:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13381:43:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13444:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13455:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13440:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13440:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13460:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13433:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13433:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13433:31:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13473:71:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "13516:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13528:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13539:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13524:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13524:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "13487:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13487:57:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "13477:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13564:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13575:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13560:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13560:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "13584:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13592:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13580:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13580:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13553:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13553:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13553:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13612:52:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "13649:6:105"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "13657:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "13620:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13620:44:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13612:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13235:9:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13246:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13254:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13262:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13270:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13281:4:105",
                "type": ""
              }
            ],
            "src": "13005:665:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13849:181:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13866:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13877:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13859:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13859:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13859:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13900:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13911:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13896:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13896:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13916:2:105",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13889:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13889:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13889:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13939:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13950:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13935:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13935:18:105"
                      },
                      {
                        "hexValue": "746f6b656e20646f6573206e6f7420737570706f7274204945524331313535",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13955:33:105",
                        "type": "",
                        "value": "token does not support IERC1155"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13928:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13928:61:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13928:61:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13998:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14010:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14021:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14006:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14006:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13998:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13826:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13840:4:105",
                "type": ""
              }
            ],
            "src": "13675:355:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14209:180:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14226:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14237:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14219:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14219:21:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14219:21:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14260:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14271:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14256:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14256:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14276:2:105",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14249:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14249:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14249:30:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14299:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14310:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14295:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14295:18:105"
                      },
                      {
                        "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14315:32:105",
                        "type": "",
                        "value": "sender must be bridge contract"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14288:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14288:60:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14288:60:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14357:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14369:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14380:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14365:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14365:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14357:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14186:9:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14200:4:105",
                "type": ""
              }
            ],
            "src": "14035:354:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14725:495:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14735:29:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14753:3:105",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14758:1:105",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "14749:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14749:11:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14762:1:105",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "14745:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14745:19:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14739:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14780:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "14795:6:105"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14803:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14791:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14791:15:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14773:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14773:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14773:34:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14827:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14838:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14823:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14823:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "14847:6:105"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14855:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14843:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14843:15:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14816:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14816:43:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14816:43:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14879:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14890:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14875:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14875:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14895:3:105",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14868:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14868:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14868:31:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14908:71:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14951:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14963:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14974:3:105",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14959:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14959:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "14922:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14922:57:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "14912:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14999:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15010:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14995:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14995:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "15019:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15027:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15015:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15015:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14988:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14988:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14988:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15047:58:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "15090:6:105"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "15098:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "15061:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15061:44:105"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "15051:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15125:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15136:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15121:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15121:19:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "15146:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15154:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15142:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15142:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15114:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15114:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15114:51:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15174:40:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "15199:6:105"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "15207:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "15182:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15182:32:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15174:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14662:9:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "14673:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "14681:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "14689:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14697:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14705:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14716:4:105",
                "type": ""
              }
            ],
            "src": "14394:826:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15482:305:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15499:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "15514:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15530:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15535:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "15526:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15526:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15539:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "15522:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15522:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "15510:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15510:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15492:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15492:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15492:51:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15563:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15574:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15559:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15559:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15579:2:105",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15552:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15552:30:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15552:30:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15591:70:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "15634:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15646:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15657:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15642:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15642:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "15605:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15605:56:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "15595:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15681:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15692:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15677:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15677:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "15701:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15709:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15697:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15697:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15670:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15670:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15670:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15729:52:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "15766:6:105"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "15774:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "15737:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15737:44:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15729:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15435:9:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15446:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15454:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15462:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15473:4:105",
                "type": ""
              }
            ],
            "src": "15225:562:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15921:119:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "15931:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15943:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15954:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15939:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15939:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15931:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15973:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "15984:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15966:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15966:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15966:25:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16011:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16022:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16007:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16007:18:105"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "16027:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16000:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16000:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16000:34:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15882:9:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15893:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15901:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15912:4:105",
                "type": ""
              }
            ],
            "src": "15792:248:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16348:421:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16365:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "16380:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16396:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16401:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "16392:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16392:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16405:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "16388:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16388:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "16376:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16376:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16358:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16358:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16358:51:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16429:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16440:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16425:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16425:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16445:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16418:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16418:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16418:31:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16458:71:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "16501:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16513:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16524:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16509:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16509:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "16472:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16472:57:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "16462:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16549:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16560:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16545:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16545:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "16569:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16577:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16565:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16565:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16538:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16538:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16538:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16597:58:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "16640:6:105"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "16648:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "16611:28:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16611:44:105"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "16601:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16675:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16686:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16671:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16671:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "16695:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16703:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16691:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16691:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16664:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16664:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16664:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16723:40:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "16748:6:105"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "16756:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "16731:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16731:32:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16723:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16293:9:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "16304:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "16312:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16320:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16328:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16339:4:105",
                "type": ""
              }
            ],
            "src": "16045:724:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16911:137:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16921:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16941:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16935:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16935:13:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "16925:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "16983:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16991:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16979:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16979:17:105"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16998:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17003:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "16957:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16957:53:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16957:53:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17019:23:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17030:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17035:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17026:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17026:16:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "17019:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "16887:3:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16892:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16903:3:105",
                "type": ""
              }
            ],
            "src": "16774:274:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17131:199:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17177:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17186:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17189:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17179:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17179:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17179:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "17152:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17161:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17148:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17148:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17173:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "17144:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17144:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "17141:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17202:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17221:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17215:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17215:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "17206:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17284:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17293:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17296:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17286:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17286:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17286:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "17253:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "17274:5:105"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17267:6:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17267:13:105"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "17260:6:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17260:21:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "17250:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17250:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "17243:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17243:40:105"
                  },
                  "nodeType": "YulIf",
                  "src": "17240:60:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17309:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "17319:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "17309:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17097:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "17108:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17120:6:105",
                "type": ""
              }
            ],
            "src": "17053:277:105"
          }
        ]
      },
      "contents": "{\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        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\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 validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := 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 allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32(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_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bool_t_bool_t_struct$_Decimals_$14633_memory_ptr__to_t_bytes32_t_bool_t_bool_t_struct$_Decimals_$14633_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n        mstore(add(headStart, 96), iszero(iszero(mload(value3))))\n        mstore(add(headStart, 128), and(mload(add(value3, 32)), 0xff))\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_array_uint256_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let offset := mload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        let offset_2 := mload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset_2)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let array := allocate_memory(array_allocation_size_bytes(_3))\n        mstore(array, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(array, 32), _3)\n        value4 := array\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"provided resourceID does not exi\")\n        mstore(add(headStart, 96), \"st\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_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), 128)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 128))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value3, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"token does not support IERC1155\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"sender must be bridge contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, 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), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_array_uint256_dyn(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value2, tail_1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 128)\n        let tail_1 := abi_encode_array_uint256_dyn(value1, add(headStart, 128))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value3, tail_2)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "434:5531:73:-:0;;;730:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1298:30:76;;;434:5531:73;;14:290:105;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:105;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:105:o;309:349::-;434:5531:73;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "434:5531:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;387:221:14;;;;;;:::i;:::-;;:::i;:::-;;;470:14:105;;463:22;445:41;;433:2;418:18;387:221:14;;;;;;;;1745:120:76;;;;;;:::i;:::-;;:::i;:::-;;4532:497:73;;;;;;:::i;:::-;;:::i;830:69:76:-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;830:69:76;;;;;;-1:-1:-1;;;;;2629:32:105;;;2611:51;;2599:2;2584:18;830:69:76;2465:203:105;442:42:76;;482:2;442:42;;;;;2845:4:105;2833:17;;;2815:36;;2803:2;2788:18;442:42:76;2673:184:105;396:39:76;;;;;966:93;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:25:105;;;3203:14;;3196:22;3191:2;3176:18;;;3169:50;;;;3262:14;;3255:22;3235:18;;;3228:50;;;;3328:13;;3321:21;3314:29;3309:2;3294:18;;3287:57;3391:15;3385:22;3409:4;3381:33;3375:3;3360:19;;3353:62;3122:3;3107:19;966:93:76;2862:559:105;1630:711:73;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;724:247:13:-;;;;;;:::i;:::-;-1:-1:-1;;;724:247:13;;;;;;;;;;;-1:-1:-1;;;;;;7235:33:105;;;7217:52;;7205:2;7190:18;724:247:13;7073:202:105;3108:1155:73;;;;;;:::i;:::-;;:::i;499:219:13:-;;;;;;:::i;:::-;-1:-1:-1;;;499:219:13;;;;;;;;5683:280:73;;;;;;:::i;:::-;;:::i;387:221:14:-;489:4;-1:-1:-1;;;;;;512:49:14;;-1:-1:-1;;;512:49:14;;:89;;-1:-1:-1;;;;;;;;;;937:40:38;;;565:36:14;505:96;387:221;-1:-1:-1;;387:221:14:o;1745:120:76:-;1100:13;:11;:13::i;:::-;1829:29:::1;1842:15;1829:12;:29::i;:::-;1745:120:::0;:::o;4532:497:73:-;1100:13:76;:11;:13::i;:::-;4608:20:73::1;4638:17:::0;4665:22:::1;4697:21:::0;4728:25:::1;4836:4;4825:59;;;;;;;;;;;;:::i;:::-;4764:120:::0;;-1:-1:-1;4764:120:73;;-1:-1:-1;4764:120:73;-1:-1:-1;4764:120:73;-1:-1:-1;4764:120:73;-1:-1:-1;4895:25:73::1;-1:-1:-1::0;;;;;4895:23:73;::::1;;:25::i;:::-;;4930:92;4950:12;4972:4;4979:9;4990:8;5000:7;5009:12;4930:19;:92::i;:::-;4598:431;;;;;4532:497:::0;:::o;1630:711::-;1745:12;1100:13:76;:11;:13::i;:::-;1769:22:73::1;::::0;1855:34:::1;::::0;;::::1;1866:4:::0;1855:34:::1;:::i;:::-;1900:20;1923:45:::0;;;::::1;::::0;;;;;;;1833:56;;-1:-1:-1;1833:56:73;-1:-1:-1;;;;;;1923:45:73::1;1986:26:::0;1978:73:::1;;;::::0;-1:-1:-1;;;1978:73:73;;11367:2:105;1978:73:73::1;::::0;::::1;11349:21:105::0;11406:2;11386:18;;;11379:30;11445:34;11425:18;;;11418:62;-1:-1:-1;;;11496:18:105;;;11489:32;11538:19;;1978:73:73::1;;;;;;;;;-1:-1:-1::0;;;;;2066:52:73;::::1;;::::0;;;:38:::1;:52;::::0;;;;;;;:63:::1;::::0;::::1;::::0;::::1;;;2062:273;;;2145:60;2162:12;2176:9;2187:8;2197:7;2145:16;:60::i;:::-;2062:273;;;2236:88;2253:12;2267:9;2286:4;2293:8;2303:7;2312:11;;;;;;;;;;;::::0;2236:16:::1;:88::i;:::-;1759:582;;;1630:711:::0;;;;;;:::o;3108:1155::-;3212:12;1100:13:76;:11;:13::i;:::-;3236:22:73::1;::::0;;;3414:48:::1;::::0;;::::1;3425:4:::0;3414:48:::1;:::i;:::-;3473:16:::0;;3367:95;;-1:-1:-1;3367:95:73;;-1:-1:-1;3367:95:73;-1:-1:-1;3367:95:73;-1:-1:-1;3473:27:73::1;::::0;3497:2:::1;3473:23;:27::i;:::-;-1:-1:-1::0;3609:4:73::1;3594:20:::0;;::::1;3588:27:::0;3510:24:::1;3658:45:::0;;;;;;;;;;;-1:-1:-1;;;;;3658:45:73::1;3718:52:::0;;;3658:45;3718:52;;;;;;:66;;::::1;::::0;3588:27;;3658:45;3718:66:::1;;3713:123;;3793:43;::::0;-1:-1:-1;;;3793:43:73;;-1:-1:-1;;;;;2629:32:105;;3793:43:73::1;::::0;::::1;2611:51:105::0;2584:18;;3793:43:73::1;2465:203:105::0;3713:123:73::1;-1:-1:-1::0;;;;;3851:52:73;::::1;;::::0;;;:38:::1;:52;::::0;;;;;;;:63:::1;::::0;::::1;::::0;::::1;;;3847:323;;;3930:90;3947:12;3969:16;3961:25;;3988:8;3998:7;4007:12;3930:16;:90::i;:::-;3847:323;;;4051:108;4071:12;4093:4;4108:16;4100:25;;4127:8;4137:7;4146:12;4051:19;:108::i;:::-;4197:12;4219:16;4211:25;;4238:8;4248:7;4186:70;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4179:77;;;;;;;;3108:1155:::0;;;;;:::o;5683:280::-;1100:13:76;:11;:13::i;:::-;5808:61:73::1;-1:-1:-1::0;;;;;5808:33:73;::::1;-1:-1:-1::0;;;5808:33:73::1;:61::i;:::-;5800:105;;;::::0;-1:-1:-1;;;5800:105:73;;13877:2:105;5800:105:73::1;::::0;::::1;13859:21:105::0;13916:2;13896:18;;;13889:30;13955:33;13935:18;;;13928:61;14006:18;;5800:105:73::1;13675:355:105::0;5800:105:73::1;2028:33:76::0;:45;;;;;;;;;;;:63;;-1:-1:-1;;;;;;2028:63:76;-1:-1:-1;;;;;2028:63:76;;;;;;;;2101:55;;-1:-1:-1;2101:55:76;;;;;;;:79;;;2190:69;;:76;;-1:-1:-1;;2276:74:76;;;;;;5915:41:73::1;5683:280:::0;;;;:::o;1341:124:76:-;1395:10;-1:-1:-1;;;;;1409:14:76;1395:28;;1387:71;;;;-1:-1:-1;;;1387:71:76;;14237:2:105;1387:71:76;;;14219:21:105;14276:2;14256:18;;;14249:30;14315:32;14295:18;;;14288:60;14365:18;;1387:71:76;14035:354:105;1387:71:76;1341:124::o;2363:285::-;-1:-1:-1;;;;;2434:55:76;;;;;;:38;:55;;;;;;;;:69;;;;2429:129;;2512:46;;-1:-1:-1;;;2512:46:76;;-1:-1:-1;;;;;2629:32:105;;2512:46:76;;;2611:51:105;2584:18;;2512:46:76;2465:203:105;2429:129:76;-1:-1:-1;;;;;2568:55:76;;;;;2637:4;2568:55;;;;;;;;:66;:73;;-1:-1:-1;;2568:73:76;;;;;2363:285::o;303:150:101:-;362:7;-1:-1:-1;;;;;385:18:101;;381:44;;412:13;;-1:-1:-1;;;412:13:101;;;;;;;;;;;381:44;-1:-1:-1;442:4:101;303:150::o;1615:303:52:-;1839:72;;-1:-1:-1;;;1839:72:52;;1816:12;;-1:-1:-1;;;;;1839:29:52;;;;;:72;;1869:5;;1876:9;;1887:8;;1897:7;;1906:4;;1839:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:140;1615:303;;;;;;:::o;2810:244::-;3004:43;;-1:-1:-1;;;3004:43:52;;2981:12;;-1:-1:-1;;;;;3004:17:52;;;;;:43;;3022:5;;3029:8;;3039:7;;3004:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:125;2810:244;;;;:::o;459:185:101:-;531:7;564:8;554:6;:18;550:64;;581:33;;-1:-1:-1;;;581:33:101;;;;;15966:25:105;;;16007:18;;;16000:34;;;15939:18;;581:33:101;15792:248:105;550:64:101;-1:-1:-1;631:6:101;;459:185;-1:-1:-1;459:185:101:o;2239:297:52:-;2476:53;;-1:-1:-1;;;2476:53:52;;2453:12;;-1:-1:-1;;;;;2476:17:52;;;;;:53;;2494:9;;2505:8;;2515:7;;2524:4;;2476:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2381:155;2239:297;;;;;:::o;1318:274:39:-;1405:4;1512:23;1527:7;1512:14;:23::i;:::-;:73;;;;;1539:46;1564:7;1573:11;1539:24;:46::i;:::-;1505:80;1318:274;-1:-1:-1;;;1318:274:39:o;689:411::-;753:4;960:60;985:7;-1:-1:-1;;;960:24:39;:60::i;:::-;:133;;;;-1:-1:-1;1037:56:39;1062:7;-1:-1:-1;;;;;;1037:24:39;:56::i;:::-;1036:57;941:152;689:411;-1:-1:-1;;689:411:39:o;4208:409::-;4346:71;;;-1:-1:-1;;;;;;7235:33:105;;4346:71:39;;;;7217:52:105;;;;4346:71:39;;;;;;;;;;7190:18:105;;;;4346:71:39;;;;;;;-1:-1:-1;;;;;4346:71:39;-1:-1:-1;;;4346:71:39;;;4465:45;;4301:4;;4346:71;4301:4;;;;-1:-1:-1;;;;;4465:18:39;;;4489:5;;4465:45;;4346:71;;4465:45;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4427:83;;;;4540:2;4524:6;:13;:18;4520:36;;;4551:5;4544:12;;;;;;;4520:36;4573:7;:37;;;;;4595:6;4584:26;;;;;;;;;;;;:::i;:::-;4566:44;4208:409;-1:-1:-1;;;;;;4208:409:39:o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:105;;562:42;;552:70;;618:1;615;608:12;633:247;692:6;745:2;733:9;724:7;720:23;716:32;713:52;;;761:1;758;751:12;713:52;800:9;787:23;819:31;844:5;819:31;:::i;885:127::-;946:10;941:3;937:20;934:1;927:31;977:4;974:1;967:15;1001:4;998:1;991:15;1017:275;1088:2;1082:9;1153:2;1134:13;;-1:-1:-1;;1130:27:105;1118:40;;1188:18;1173:34;;1209:22;;;1170:62;1167:88;;;1235:18;;:::i;:::-;1271:2;1264:22;1017:275;;-1:-1:-1;1017:275:105:o;1297:186::-;1345:4;1378:18;1370:6;1367:30;1364:56;;;1400:18;;:::i;:::-;-1:-1:-1;1466:2:105;1445:15;-1:-1:-1;;1441:29:105;1472:4;1437:40;;1297:186::o;1488:462::-;1530:5;1583:3;1576:4;1568:6;1564:17;1560:27;1550:55;;1601:1;1598;1591:12;1550:55;1637:6;1624:20;1668:48;1684:31;1712:2;1684:31;:::i;:::-;1668:48;:::i;:::-;1741:2;1732:7;1725:19;1787:3;1780:4;1775:2;1767:6;1763:15;1759:26;1756:35;1753:55;;;1804:1;1801;1794:12;1753:55;1869:2;1862:4;1854:6;1850:17;1843:4;1834:7;1830:18;1817:55;1917:1;1892:16;;;1910:4;1888:27;1881:38;;;;1896:7;1488:462;-1:-1:-1;;;1488:462:105:o;1955:320::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2132:9;2119:23;2165:18;2157:6;2154:30;2151:50;;;2197:1;2194;2187:12;2151:50;2220:49;2261:7;2252:6;2241:9;2237:22;2220:49;:::i;:::-;2210:59;1955:320;-1:-1:-1;;;;1955:320:105:o;2280:180::-;2339:6;2392:2;2380:9;2371:7;2367:23;2363:32;2360:52;;;2408:1;2405;2398:12;2360:52;-1:-1:-1;2431:23:105;;2280:180;-1:-1:-1;2280:180:105:o;3426:347::-;3477:8;3487:6;3541:3;3534:4;3526:6;3522:17;3518:27;3508:55;;3559:1;3556;3549:12;3508:55;-1:-1:-1;3582:20:105;;3625:18;3614:30;;3611:50;;;3657:1;3654;3647:12;3611:50;3694:4;3686:6;3682:17;3670:29;;3746:3;3739:4;3730:6;3722;3718:19;3714:30;3711:39;3708:59;;;3763:1;3760;3753:12;3708:59;3426:347;;;;;:::o;3778:612::-;3866:6;3874;3882;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3995:9;3982:23;3972:33;;4055:2;4044:9;4040:18;4027:32;4068:31;4093:5;4068:31;:::i;:::-;4118:5;-1:-1:-1;4174:2:105;4159:18;;4146:32;4201:18;4190:30;;4187:50;;;4233:1;4230;4223:12;4187:50;4272:58;4322:7;4313:6;4302:9;4298:22;4272:58;:::i;:::-;3778:612;;;;-1:-1:-1;4349:8:105;-1:-1:-1;;;;3778:612:105:o;4395:258::-;4467:1;4477:113;4491:6;4488:1;4485:13;4477:113;;;4567:11;;;4561:18;4548:11;;;4541:39;4513:2;4506:10;4477:113;;;4608:6;4605:1;4602:13;4599:48;;;-1:-1:-1;;4643:1:105;4625:16;;4618:27;4395:258::o;4658:257::-;4699:3;4737:5;4731:12;4764:6;4759:3;4752:19;4780:63;4836:6;4829:4;4824:3;4820:14;4813:4;4806:5;4802:16;4780:63;:::i;:::-;4897:2;4876:15;-1:-1:-1;;4872:29:105;4863:39;;;;4904:4;4859:50;;4658:257;-1:-1:-1;;4658:257:105:o;4920:217::-;5067:2;5056:9;5049:21;5030:4;5087:44;5127:2;5116:9;5112:18;5104:6;5087:44;:::i;5142:183::-;5202:4;5235:18;5227:6;5224:30;5221:56;;;5257:18;;:::i;:::-;-1:-1:-1;5302:1:105;5298:14;5314:4;5294:25;;5142:183::o;5330:662::-;5384:5;5437:3;5430:4;5422:6;5418:17;5414:27;5404:55;;5455:1;5452;5445:12;5404:55;5491:6;5478:20;5517:4;5541:60;5557:43;5597:2;5557:43;:::i;5541:60::-;5635:15;;;5721:1;5717:10;;;;5705:23;;5701:32;;;5666:12;;;;5745:15;;;5742:35;;;5773:1;5770;5763:12;5742:35;5809:2;5801:6;5797:15;5821:142;5837:6;5832:3;5829:15;5821:142;;;5903:17;;5891:30;;5941:12;;;;5854;;5821:142;;;-1:-1:-1;5981:5:105;5330:662;-1:-1:-1;;;;;;5330:662:105:o;5997:1071::-;6151:6;6159;6167;6175;6183;6236:3;6224:9;6215:7;6211:23;6207:33;6204:53;;;6253:1;6250;6243:12;6204:53;6292:9;6279:23;6311:31;6336:5;6311:31;:::i;:::-;6361:5;-1:-1:-1;6418:2:105;6403:18;;6390:32;6431:33;6390:32;6431:33;:::i;:::-;6483:7;-1:-1:-1;6541:2:105;6526:18;;6513:32;6564:18;6594:14;;;6591:34;;;6621:1;6618;6611:12;6591:34;6644:61;6697:7;6688:6;6677:9;6673:22;6644:61;:::i;:::-;6634:71;;6758:2;6747:9;6743:18;6730:32;6714:48;;6787:2;6777:8;6774:16;6771:36;;;6803:1;6800;6793:12;6771:36;6826:63;6881:7;6870:8;6859:9;6855:24;6826:63;:::i;:::-;6816:73;;6942:3;6931:9;6927:19;6914:33;6898:49;;6972:2;6962:8;6959:16;6956:36;;;6988:1;6985;6978:12;6956:36;;7011:51;7054:7;7043:8;7032:9;7028:24;7011:51;:::i;:::-;7001:61;;;5997:1071;;;;;;;;:::o;7280:477::-;7359:6;7367;7375;7428:2;7416:9;7407:7;7403:23;7399:32;7396:52;;;7444:1;7441;7434:12;7396:52;7480:9;7467:23;7457:33;;7541:2;7530:9;7526:18;7513:32;7568:18;7560:6;7557:30;7554:50;;;7600:1;7597;7590:12;7554:50;7639:58;7689:7;7680:6;7669:9;7665:22;7639:58;:::i;:::-;7280:477;;7716:8;;-1:-1:-1;7613:84:105;;-1:-1:-1;;;;7280:477:105:o;7762:734::-;7866:6;7874;7882;7890;7898;7951:3;7939:9;7930:7;7926:23;7922:33;7919:53;;;7968:1;7965;7958:12;7919:53;8007:9;7994:23;8026:31;8051:5;8026:31;:::i;:::-;8076:5;-1:-1:-1;8133:2:105;8118:18;;8105:32;8146:33;8105:32;8146:33;:::i;:::-;8198:7;-1:-1:-1;8252:2:105;8237:18;;8224:32;;-1:-1:-1;8303:2:105;8288:18;;8275:32;;-1:-1:-1;8358:3:105;8343:19;;8330:33;8386:18;8375:30;;8372:50;;;8418:1;8415;8408:12;8372:50;8441:49;8482:7;8473:6;8462:9;8458:22;8441:49;:::i;8501:659::-;8566:5;8619:3;8612:4;8604:6;8600:17;8596:27;8586:55;;8637:1;8634;8627:12;8586:55;8666:6;8660:13;8692:4;8716:60;8732:43;8772:2;8732:43;:::i;8716:60::-;8810:15;;;8896:1;8892:10;;;;8880:23;;8876:32;;;8841:12;;;;8920:15;;;8917:35;;;8948:1;8945;8938:12;8917:35;8984:2;8976:6;8972:15;8996:135;9012:6;9007:3;9004:15;8996:135;;;9078:10;;9066:23;;9109:12;;;;9029;;8996:135;;9165:1395;9346:6;9354;9362;9370;9378;9431:3;9419:9;9410:7;9406:23;9402:33;9399:53;;;9448:1;9445;9438:12;9399:53;9480:9;9474:16;9499:31;9524:5;9499:31;:::i;:::-;9599:2;9584:18;;9578:25;9549:5;;-1:-1:-1;9612:33:105;9578:25;9612:33;:::i;:::-;9715:2;9700:18;;9694:25;9664:7;;-1:-1:-1;9738:18:105;9768:14;;;9765:34;;;9795:1;9792;9785:12;9765:34;9818:72;9882:7;9873:6;9862:9;9858:22;9818:72;:::i;:::-;9808:82;;9936:2;9925:9;9921:18;9915:25;9899:41;;9965:2;9955:8;9952:16;9949:36;;;9981:1;9978;9971:12;9949:36;10004:74;10070:7;10059:8;10048:9;10044:24;10004:74;:::i;:::-;9994:84;;10124:3;10113:9;10109:19;10103:26;10087:42;;10154:2;10144:8;10141:16;10138:36;;;10170:1;10167;10160:12;10138:36;-1:-1:-1;10193:24:105;;10248:4;10240:13;;10236:27;-1:-1:-1;10226:55:105;;10277:1;10274;10267:12;10226:55;10306:2;10300:9;10331:48;10347:31;10375:2;10347:31;:::i;10331:48::-;10402:2;10395:5;10388:17;10442:7;10437:2;10432;10428;10424:11;10420:20;10417:33;10414:53;;;10463:1;10460;10453:12;10414:53;10476:54;10527:2;10522;10515:5;10511:14;10506:2;10502;10498:11;10476:54;:::i;:::-;10549:5;10539:15;;;;;9165:1395;;;;;;;;:::o;10565:595::-;10683:6;10691;10744:2;10732:9;10723:7;10719:23;10715:32;10712:52;;;10760:1;10757;10750:12;10712:52;10800:9;10787:23;10829:18;10870:2;10862:6;10859:14;10856:34;;;10886:1;10883;10876:12;10856:34;10909:61;10962:7;10953:6;10942:9;10938:22;10909:61;:::i;:::-;10899:71;;11023:2;11012:9;11008:18;10995:32;10979:48;;11052:2;11042:8;11039:16;11036:36;;;11068:1;11065;11058:12;11036:36;;11091:63;11146:7;11135:8;11124:9;11120:24;11091:63;:::i;:::-;11081:73;;;10565:595;;;;;:::o;11568:992::-;11722:6;11730;11738;11746;11799:3;11787:9;11778:7;11774:23;11770:33;11767:53;;;11816:1;11813;11806:12;11767:53;11856:9;11843:23;11885:18;11926:2;11918:6;11915:14;11912:34;;;11942:1;11939;11932:12;11912:34;11965:61;12018:7;12009:6;11998:9;11994:22;11965:61;:::i;:::-;11955:71;;12079:2;12068:9;12064:18;12051:32;12035:48;;12108:2;12098:8;12095:16;12092:36;;;12124:1;12121;12114:12;12092:36;12147:63;12202:7;12191:8;12180:9;12176:24;12147:63;:::i;:::-;12137:73;;12263:2;12252:9;12248:18;12235:32;12219:48;;12292:2;12282:8;12279:16;12276:36;;;12308:1;12305;12298:12;12276:36;12331:51;12374:7;12363:8;12352:9;12348:24;12331:51;:::i;:::-;12321:61;;12435:2;12424:9;12420:18;12407:32;12391:48;;12464:2;12454:8;12451:16;12448:36;;;12480:1;12477;12470:12;12448:36;;12503:51;12546:7;12535:8;12524:9;12520:24;12503:51;:::i;:::-;12493:61;;;11568:992;;;;;;;:::o;12565:435::-;12618:3;12656:5;12650:12;12683:6;12678:3;12671:19;12709:4;12738:2;12733:3;12729:12;12722:19;;12775:2;12768:5;12764:14;12796:1;12806:169;12820:6;12817:1;12814:13;12806:169;;;12881:13;;12869:26;;12915:12;;;;12950:15;;;;12842:1;12835:9;12806:169;;;-1:-1:-1;12991:3:105;;12565:435;-1:-1:-1;;;;;12565:435:105:o;13005:665::-;-1:-1:-1;;;;;13356:15:105;;;13338:34;;13408:15;;13403:2;13388:18;;13381:43;13460:3;13455:2;13440:18;;13433:31;;;13281:4;;13487:57;;13524:19;;13516:6;13487:57;:::i;:::-;13592:9;13584:6;13580:22;13575:2;13564:9;13560:18;13553:50;13620:44;13657:6;13649;13620:44;:::i;:::-;13612:52;13005:665;-1:-1:-1;;;;;;;13005:665:105:o;14394:826::-;-1:-1:-1;;;;;14791:15:105;;;14773:34;;14843:15;;14838:2;14823:18;;14816:43;14753:3;14890:2;14875:18;;14868:31;;;14716:4;;14922:57;;14959:19;;14951:6;14922:57;:::i;:::-;15027:9;15019:6;15015:22;15010:2;14999:9;14995:18;14988:50;15061:44;15098:6;15090;15061:44;:::i;:::-;15047:58;;15154:9;15146:6;15142:22;15136:3;15125:9;15121:19;15114:51;15182:32;15207:6;15199;15182:32;:::i;:::-;15174:40;14394:826;-1:-1:-1;;;;;;;;14394:826:105:o;15225:562::-;-1:-1:-1;;;;;15510:32:105;;15492:51;;15579:2;15574;15559:18;;15552:30;;;-1:-1:-1;;15605:56:105;;15642:18;;15634:6;15605:56;:::i;:::-;15709:9;15701:6;15697:22;15692:2;15681:9;15677:18;15670:50;15737:44;15774:6;15766;15737:44;:::i;16045:724::-;-1:-1:-1;;;;;16376:32:105;;16358:51;;16445:3;16440:2;16425:18;;16418:31;;;-1:-1:-1;;16472:57:105;;16509:19;;16501:6;16472:57;:::i;:::-;16577:9;16569:6;16565:22;16560:2;16549:9;16545:18;16538:50;16611:44;16648:6;16640;16611:44;:::i;:::-;16597:58;;16703:9;16695:6;16691:22;16686:2;16675:9;16671:18;16664:50;16731:32;16756:6;16748;16731:32;:::i;16774:274::-;16903:3;16941:6;16935:13;16957:53;17003:6;16998:3;16991:4;16983:6;16979:17;16957:53;:::i;:::-;17026:16;;;;;16774:274;-1:-1:-1;;16774:274:105:o;17053:277::-;17120:6;17173:2;17161:9;17152:7;17148:23;17144:32;17141:52;;;17189:1;17186;17179:12;17141:52;17221:9;17215:16;17274:5;17267:13;17260:21;17253:5;17250:32;17240:60;;17296:1;17293;17286:12",
  "source": "// The Licensed Work is (c) 2022 Sygma\n// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity 0.8.11;\n\nimport \"../interfaces/IHandler.sol\";\nimport \"./ERCHandlerHelpers.sol\";\nimport \"../ERC1155Safe.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\";\n\ncontract ERC1155Handler is IHandler, ERCHandlerHelpers, ERC1155Safe, ERC1155Holder {\n    using SanityChecks for *;\n    using ERC165Checker for address;\n\n    bytes private constant EMPTY_BYTES = \"\";\n\n    /**\n        @param bridgeAddress Contract address of previously deployed Bridge.\n     */\n    constructor(\n        address bridgeAddress\n    ) ERCHandlerHelpers(bridgeAddress) {\n        require(type(IERC1155).interfaceId == 0xd9b67a26, 'invalid ERC1155 interface');\n    }\n\n    /**\n        @notice A deposit is initiated by making a deposit in the Bridge contract.\n        @param resourceID ResourceID used to find address of token to be used for deposit.\n        @param depositor Address of account making the deposit in the Bridge contract.\n        @param data Consists of ABI-encoded arrays of tokenIDs and amounts.\n        @notice Data passed into the function should be constructed as ABI encoding of:\n        tokenIDs                                    uint256[]  bytes\n        amounts                                     uint256[]  bytes\n        destinationRecipientAddress                   bytes    bytes\n        transferData                                  bytes    bytes\n     */\n    function deposit(bytes32 resourceID, address depositor, bytes calldata data) external override onlyBridge returns (bytes memory) {\n        uint[] memory tokenIDs;\n        uint[] memory amounts;\n\n        (tokenIDs, amounts) = abi.decode(data, (uint[], uint[]));\n\n        address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n        require(tokenAddress != address(0), \"provided resourceID does not exist\");\n\n        if (_tokenContractAddressToTokenProperties[tokenAddress].isBurnable) {\n            burnBatchERC1155(tokenAddress, depositor, tokenIDs, amounts);\n        } else {\n            lockBatchERC1155(tokenAddress, depositor, address(this), tokenIDs, amounts, EMPTY_BYTES);\n        }\n    }\n\n    /**\n        @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n        by a relayer on the deposit's destination chain.\n        @param resourceID ResourceID to be used when making deposits.\n        @param data Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient},\n        and {transferData} of types uint[], uint[], bytes, bytes.\n        @notice Data passed into the function should be constructed as ABI encoding of:\n        tokenIDs                                    uint256[]  bytes\n        amounts                                     uint256[]  bytes\n        destinationRecipientAddress                   bytes    bytes\n        transferData                                  bytes    bytes\n     */\n    function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge returns (bytes memory) {\n        uint[] memory tokenIDs;\n        uint[] memory amounts;\n        bytes memory recipient;\n        bytes memory transferData;\n\n        (tokenIDs, amounts, recipient, transferData) = abi.decode(data, (uint[], uint[], bytes, bytes));\n\n        recipient.length.mustBe(20);\n        bytes20 recipientAddress;\n\n        assembly {\n            recipientAddress := mload(add(recipient, 0x20))\n        }\n\n        address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n        if (!_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted) revert ContractAddressNotWhitelisted(tokenAddress);\n\n        if (_tokenContractAddressToTokenProperties[tokenAddress].isBurnable) {\n            mintBatchERC1155(tokenAddress, address(recipientAddress), tokenIDs, amounts, transferData);\n        } else {\n            releaseBatchERC1155(tokenAddress, address(this), address(recipientAddress), tokenIDs, amounts, transferData);\n        }\n        return abi.encode(tokenAddress, address(recipientAddress), tokenIDs, amounts);\n    }\n\n    /**\n        @notice Used to manually release ERC1155 tokens from ERC1155Safe.\n        @param data Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs},\n        {amounts}, and {transferData} of types address, address, uint[], uint[], bytes.\n     */\n    function withdraw(bytes memory data) external override onlyBridge {\n        address tokenAddress;\n        address recipient;\n        uint[] memory tokenIDs;\n        uint[] memory amounts;\n        bytes memory transferData;\n\n        (tokenAddress, recipient, tokenIDs, amounts, transferData) = abi.decode(data, (address, address, uint[], uint[], bytes));\n\n        recipient.mustNotBeZero();\n        releaseBatchERC1155(tokenAddress, address(this), recipient, tokenIDs, amounts, transferData);\n    }\n\n    /**\n        @notice Sets {_resourceIDToContractAddress} with {contractAddress},\n        {_tokenContractAddressToTokenProperties[tokenAddress].resourceID} with {resourceID} and\n        {_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted} to true for {contractAddress} in ERCHandlerHelpers contract.\n        Reverts if {contractAddress} doesn't support {IERC1155}.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n        @param args Additional data to be passed to specified handler.\n     */\n    function setResource(bytes32 resourceID, address contractAddress, bytes calldata args) external onlyBridge {\n        require(contractAddress.supportsInterface(type(IERC1155).interfaceId), \"token does not support IERC1155\");\n        _setResource(resourceID, contractAddress);\n    }\n}\n",
  "sourcePath": "/home/runner/work/sygma-solidity/sygma-solidity/contracts/handlers/ERC1155Handler.sol",
  "ast": {
    "absolutePath": "project:/contracts/handlers/ERC1155Handler.sol",
    "exportedSymbols": {
      "AccessControl": [
        308
      ],
      "AccessControlEnumerable": [
        433
      ],
      "Address": [
        5283
      ],
      "Context": [
        5305
      ],
      "ERC1155": [
        1824
      ],
      "ERC1155Burnable": [
        2056
      ],
      "ERC1155Handler": [
        13936
      ],
      "ERC1155Holder": [
        2368
      ],
      "ERC1155Pausable": [
        2104
      ],
      "ERC1155PresetMinterPauser": [
        2317
      ],
      "ERC1155Receiver": [
        2402
      ],
      "ERC1155Safe": [
        9008
      ],
      "ERC165": [
        6167
      ],
      "ERC165Checker": [
        6369
      ],
      "ERCHandlerHelpers": [
        14917
      ],
      "EnumerableSet": [
        7373
      ],
      "IAccessControl": [
        506
      ],
      "IAccessControlEnumerable": [
        531
      ],
      "IERC1155": [
        1946
      ],
      "IERC1155MetadataURI": [
        2119
      ],
      "IERC1155Receiver": [
        1987
      ],
      "IERC165": [
        6381
      ],
      "IERCHandler": [
        18195
      ],
      "IHandler": [
        18301
      ],
      "Pausable": [
        728
      ],
      "SanityChecks": [
        19158
      ],
      "Strings": [
        5582
      ]
    },
    "id": 13937,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13579,
        "literals": [
          "solidity",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "81:23:73"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IHandler.sol",
        "file": "../interfaces/IHandler.sol",
        "id": 13580,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 18302,
        "src": "106:36:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/handlers/ERCHandlerHelpers.sol",
        "file": "./ERCHandlerHelpers.sol",
        "id": 13581,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 14918,
        "src": "143:33:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/ERC1155Safe.sol",
        "file": "../ERC1155Safe.sol",
        "id": 13582,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 9009,
        "src": "177:28:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol",
        "file": "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol",
        "id": 13583,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 6370,
        "src": "206:71:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol",
        "id": 13584,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 2369,
        "src": "278:71:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
        "id": 13585,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 2120,
        "src": "350:82:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 13586,
              "name": "IHandler",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18301,
              "src": "461:8:73"
            },
            "id": 13587,
            "nodeType": "InheritanceSpecifier",
            "src": "461:8:73"
          },
          {
            "baseName": {
              "id": 13588,
              "name": "ERCHandlerHelpers",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14917,
              "src": "471:17:73"
            },
            "id": 13589,
            "nodeType": "InheritanceSpecifier",
            "src": "471:17:73"
          },
          {
            "baseName": {
              "id": 13590,
              "name": "ERC1155Safe",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9008,
              "src": "490:11:73"
            },
            "id": 13591,
            "nodeType": "InheritanceSpecifier",
            "src": "490:11:73"
          },
          {
            "baseName": {
              "id": 13592,
              "name": "ERC1155Holder",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2368,
              "src": "503:13:73"
            },
            "id": 13593,
            "nodeType": "InheritanceSpecifier",
            "src": "503:13:73"
          }
        ],
        "canonicalName": "ERC1155Handler",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 13936,
        "linearizedBaseContracts": [
          13936,
          2368,
          2402,
          1987,
          6167,
          6381,
          9008,
          14917,
          18195,
          18301
        ],
        "name": "ERC1155Handler",
        "nameLocation": "443:14:73",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 13595,
            "libraryName": {
              "id": 13594,
              "name": "SanityChecks",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19158,
              "src": "529:12:73"
            },
            "nodeType": "UsingForDirective",
            "src": "523:25:73"
          },
          {
            "id": 13598,
            "libraryName": {
              "id": 13596,
              "name": "ERC165Checker",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 6369,
              "src": "559:13:73"
            },
            "nodeType": "UsingForDirective",
            "src": "553:32:73",
            "typeName": {
              "id": 13597,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "577:7:73",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "constant": true,
            "id": 13601,
            "mutability": "constant",
            "name": "EMPTY_BYTES",
            "nameLocation": "614:11:73",
            "nodeType": "VariableDeclaration",
            "scope": 13936,
            "src": "591:39:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory_ptr",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 13599,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "591:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "",
              "id": 13600,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "628:2:73",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                "typeString": "literal_string \"\""
              },
              "value": ""
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 13620,
              "nodeType": "Block",
              "src": "812:95:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 13616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 13612,
                                "name": "IERC1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1946,
                                "src": "835:8:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              ],
                              "id": 13611,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "830:4:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "830:14:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1946",
                              "typeString": "type(contract IERC1155)"
                            }
                          },
                          "id": 13614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "830:26:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30786439623637613236",
                          "id": 13615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "860:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3652614694_by_1",
                            "typeString": "int_const 3652614694"
                          },
                          "value": "0xd9b67a26"
                        },
                        "src": "830:40:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e76616c6964204552433131353520696e74657266616365",
                        "id": 13617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "872:27:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64",
                          "typeString": "literal_string \"invalid ERC1155 interface\""
                        },
                        "value": "invalid ERC1155 interface"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64",
                          "typeString": "literal_string \"invalid ERC1155 interface\""
                        }
                      ],
                      "id": 13610,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "822:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "822:78:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13619,
                  "nodeType": "ExpressionStatement",
                  "src": "822:78:73"
                }
              ]
            },
            "documentation": {
              "id": 13602,
              "nodeType": "StructuredDocumentation",
              "src": "637:88:73",
              "text": "@param bridgeAddress Contract address of previously deployed Bridge."
            },
            "id": 13621,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 13607,
                    "name": "bridgeAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13604,
                    "src": "797:13:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 13608,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 13606,
                  "name": "ERCHandlerHelpers",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14917,
                  "src": "779:17:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "779:32:73"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13604,
                  "mutability": "mutable",
                  "name": "bridgeAddress",
                  "nameLocation": "759:13:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13621,
                  "src": "751:21:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13603,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "751:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "741:37:73"
            },
            "returnParameters": {
              "id": 13609,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "812:0:73"
            },
            "scope": 13936,
            "src": "730:177:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              18280
            ],
            "body": {
              "id": 13706,
              "nodeType": "Block",
              "src": "1759:582:73",
              "statements": [
                {
                  "assignments": [
                    13640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13640,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "1783:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1769:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13638,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1769:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13639,
                        "nodeType": "ArrayTypeName",
                        "src": "1769:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13641,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1769:22:73"
                },
                {
                  "assignments": [
                    13646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13646,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "1815:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1801:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13644,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13645,
                        "nodeType": "ArrayTypeName",
                        "src": "1801:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13647,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1801:21:73"
                },
                {
                  "expression": {
                    "id": 13662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13648,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13640,
                          "src": "1834:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13649,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13646,
                          "src": "1844:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "id": 13650,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1833:19:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13653,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13628,
                          "src": "1866:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 13655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1873:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13654,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1873:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1873:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1881:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13657,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1881:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1881:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            }
                          ],
                          "id": 13660,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1872:16:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory))"
                          }
                        ],
                        "expression": {
                          "id": 13651,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "1855:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1855:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1855:34:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory)"
                      }
                    },
                    "src": "1833:56:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13663,
                  "nodeType": "ExpressionStatement",
                  "src": "1833:56:73"
                },
                {
                  "assignments": [
                    13665
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13665,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "1908:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1900:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13664,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1900:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13669,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13666,
                      "name": "_resourceIDToTokenContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14651,
                      "src": "1923:33:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 13668,
                    "indexExpression": {
                      "id": 13667,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13624,
                      "src": "1957:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1923:45:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1900:68:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 13676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 13671,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13665,
                          "src": "1986:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 13674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2010:1:73",
                              "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": 13673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2002:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13672,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2002:7:73",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2002:10:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1986:26:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "70726f7669646564207265736f75726365494420646f6573206e6f74206578697374",
                        "id": 13677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2014:36:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7",
                          "typeString": "literal_string \"provided resourceID does not exist\""
                        },
                        "value": "provided resourceID does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7",
                          "typeString": "literal_string \"provided resourceID does not exist\""
                        }
                      ],
                      "id": 13670,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1978:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1978:73:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13679,
                  "nodeType": "ExpressionStatement",
                  "src": "1978:73:73"
                },
                {
                  "condition": {
                    "expression": {
                      "baseExpression": {
                        "id": 13680,
                        "name": "_tokenContractAddressToTokenProperties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14656,
                        "src": "2066:38:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                          "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                        }
                      },
                      "id": 13682,
                      "indexExpression": {
                        "id": 13681,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13665,
                        "src": "2105:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2066:52:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                        "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                      }
                    },
                    "id": 13683,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isBurnable",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 14639,
                    "src": "2066:63:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13704,
                    "nodeType": "Block",
                    "src": "2222:113:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13693,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13665,
                              "src": "2253:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13694,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2267:9:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13697,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "2286:4:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                ],
                                "id": 13696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2278:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13695,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2278:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2278:13:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13699,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13640,
                              "src": "2293:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13700,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13646,
                              "src": "2303:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13701,
                              "name": "EMPTY_BYTES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13601,
                              "src": "2312:11:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13692,
                            "name": "lockBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8908,
                            "src": "2236:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2236:88:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13703,
                        "nodeType": "ExpressionStatement",
                        "src": "2236:88:73"
                      }
                    ]
                  },
                  "id": 13705,
                  "nodeType": "IfStatement",
                  "src": "2062:273:73",
                  "trueBody": {
                    "id": 13691,
                    "nodeType": "Block",
                    "src": "2131:85:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13685,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13665,
                              "src": "2162:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13686,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2176:9:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13687,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13640,
                              "src": "2187:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13688,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13646,
                              "src": "2197:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 13684,
                            "name": "burnBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9007,
                            "src": "2145:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 13689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2145:60:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13690,
                        "nodeType": "ExpressionStatement",
                        "src": "2145:60:73"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13622,
              "nodeType": "StructuredDocumentation",
              "src": "913:712:73",
              "text": "@notice A deposit is initiated by making a deposit in the Bridge contract.\n@param resourceID ResourceID used to find address of token to be used for deposit.\n@param depositor Address of account making the deposit in the Bridge contract.\n@param data Consists of ABI-encoded arrays of tokenIDs and amounts.\n@notice Data passed into the function should be constructed as ABI encoding of:\ntokenIDs                                    uint256[]  bytes\namounts                                     uint256[]  bytes\ndestinationRecipientAddress                   bytes    bytes\ntransferData                                  bytes    bytes"
            },
            "functionSelector": "b07e54bb",
            "id": 13707,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13632,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13631,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "1725:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "1725:10:73"
              }
            ],
            "name": "deposit",
            "nameLocation": "1639:7:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13630,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1716:8:73"
            },
            "parameters": {
              "id": 13629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13624,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "1655:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1647:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13623,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13626,
                  "mutability": "mutable",
                  "name": "depositor",
                  "nameLocation": "1675:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1667:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13625,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13628,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1701:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1686:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13627,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1686:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1646:60:73"
            },
            "returnParameters": {
              "id": 13635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13634,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1745:12:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13633,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1745:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1744:14:73"
            },
            "scope": 13936,
            "src": "1630:711:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18290
            ],
            "body": {
              "id": 13832,
              "nodeType": "Block",
              "src": "3226:1037:73",
              "statements": [
                {
                  "assignments": [
                    13724
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13724,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "3250:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3236:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13722,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3236:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13723,
                        "nodeType": "ArrayTypeName",
                        "src": "3236:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13725,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3236:22:73"
                },
                {
                  "assignments": [
                    13730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13730,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "3282:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3268:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13728,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3268:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13729,
                        "nodeType": "ArrayTypeName",
                        "src": "3268:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13731,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3268:21:73"
                },
                {
                  "assignments": [
                    13733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13733,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nameLocation": "3312:9:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3299:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13732,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3299:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13734,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3299:22:73"
                },
                {
                  "assignments": [
                    13736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13736,
                      "mutability": "mutable",
                      "name": "transferData",
                      "nameLocation": "3344:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3331:25:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13735,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3331:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13737,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3331:25:73"
                },
                {
                  "expression": {
                    "id": 13758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13738,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13724,
                          "src": "3368:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13739,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13730,
                          "src": "3378:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13740,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13733,
                          "src": "3387:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 13741,
                          "name": "transferData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13736,
                          "src": "3398:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 13742,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3367:44:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory,bytes memory,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13745,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13712,
                          "src": "3425:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 13747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3432:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13746,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3432:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3432:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3440:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13749,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3440:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3440:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "id": 13753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3448:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13752,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3448:5:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "id": 13755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3455:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13754,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3455:5:73",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 13756,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3431:30:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer),type(bytes storage pointer))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer),type(bytes storage pointer))"
                          }
                        ],
                        "expression": {
                          "id": 13743,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "3414:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "3414:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3414:48:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory,bytes memory,bytes memory)"
                      }
                    },
                    "src": "3367:95:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13759,
                  "nodeType": "ExpressionStatement",
                  "src": "3367:95:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 13765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3497:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 13760,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13733,
                          "src": "3473:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 13763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "3473:16:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "3473:23:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 13766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3473:27:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13767,
                  "nodeType": "ExpressionStatement",
                  "src": "3473:27:73"
                },
                {
                  "assignments": [
                    13769
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13769,
                      "mutability": "mutable",
                      "name": "recipientAddress",
                      "nameLocation": "3518:16:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3510:24:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      },
                      "typeName": {
                        "id": 13768,
                        "name": "bytes20",
                        "nodeType": "ElementaryTypeName",
                        "src": "3510:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13770,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3510:24:73"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3554:71:73",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3568:47:73",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "recipient",
                                  "nodeType": "YulIdentifier",
                                  "src": "3598:9:73"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3609:4:73",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3594:3:73"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3594:20:73"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "3588:5:73"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3588:27:73"
                        },
                        "variableNames": [
                          {
                            "name": "recipientAddress",
                            "nodeType": "YulIdentifier",
                            "src": "3568:16:73"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 13733,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3598:9:73",
                      "valueSize": 1
                    },
                    {
                      "declaration": 13769,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3568:16:73",
                      "valueSize": 1
                    }
                  ],
                  "id": 13771,
                  "nodeType": "InlineAssembly",
                  "src": "3545:80:73"
                },
                {
                  "assignments": [
                    13773
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13773,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "3643:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3635:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13772,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3635:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13777,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13774,
                      "name": "_resourceIDToTokenContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14651,
                      "src": "3658:33:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 13776,
                    "indexExpression": {
                      "id": 13775,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13710,
                      "src": "3692:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3658:45:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3635:68:73"
                },
                {
                  "condition": {
                    "id": 13782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3717:67:73",
                    "subExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 13778,
                          "name": "_tokenContractAddressToTokenProperties",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14656,
                          "src": "3718:38:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                            "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                          }
                        },
                        "id": 13780,
                        "indexExpression": {
                          "id": 13779,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13773,
                          "src": "3757:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3718:52:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                          "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                        }
                      },
                      "id": 13781,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isWhitelisted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14637,
                      "src": "3718:66:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13787,
                  "nodeType": "IfStatement",
                  "src": "3713:123:73",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "id": 13784,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13773,
                          "src": "3823:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 13783,
                        "name": "ContractAddressNotWhitelisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14647,
                        "src": "3793:29:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                          "typeString": "function (address) pure"
                        }
                      },
                      "id": 13785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3793:43:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 13786,
                    "nodeType": "RevertStatement",
                    "src": "3786:50:73"
                  }
                },
                {
                  "condition": {
                    "expression": {
                      "baseExpression": {
                        "id": 13788,
                        "name": "_tokenContractAddressToTokenProperties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14656,
                        "src": "3851:38:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                          "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                        }
                      },
                      "id": 13790,
                      "indexExpression": {
                        "id": 13789,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13773,
                        "src": "3890:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3851:52:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                        "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                      }
                    },
                    "id": 13791,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isBurnable",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 14639,
                    "src": "3851:63:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13819,
                    "nodeType": "Block",
                    "src": "4037:133:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13805,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "4071:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13808,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "4093:4:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                ],
                                "id": 13807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4085:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13806,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4085:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4085:13:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13812,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13769,
                                  "src": "4108:16:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 13811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4100:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13810,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4100:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4100:25:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13814,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13724,
                              "src": "4127:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13815,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13730,
                              "src": "4137:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13816,
                              "name": "transferData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "4146:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13804,
                            "name": "releaseBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8944,
                            "src": "4051:19:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4051:108:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13818,
                        "nodeType": "ExpressionStatement",
                        "src": "4051:108:73"
                      }
                    ]
                  },
                  "id": 13820,
                  "nodeType": "IfStatement",
                  "src": "3847:323:73",
                  "trueBody": {
                    "id": 13803,
                    "nodeType": "Block",
                    "src": "3916:115:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13793,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "3947:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13796,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13769,
                                  "src": "3969:16:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 13795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3961:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13794,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3961:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3961:25:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13798,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13724,
                              "src": "3988:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13799,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13730,
                              "src": "3998:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13800,
                              "name": "transferData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "4007:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13792,
                            "name": "mintBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8977,
                            "src": "3930:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3930:90:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13802,
                        "nodeType": "ExpressionStatement",
                        "src": "3930:90:73"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13823,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13773,
                        "src": "4197:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 13826,
                            "name": "recipientAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13769,
                            "src": "4219:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          ],
                          "id": 13825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4211:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13824,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4211:7:73",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4211:25:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13828,
                        "name": "tokenIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13724,
                        "src": "4238:8:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13829,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13730,
                        "src": "4248:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "id": 13821,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "4186:3:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 13822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "4186:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 13830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4186:70:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 13719,
                  "id": 13831,
                  "nodeType": "Return",
                  "src": "4179:77:73"
                }
              ]
            },
            "documentation": {
              "id": 13708,
              "nodeType": "StructuredDocumentation",
              "src": "2347:756:73",
              "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param resourceID ResourceID to be used when making deposits.\n@param data Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient},\nand {transferData} of types uint[], uint[], bytes, bytes.\n@notice Data passed into the function should be constructed as ABI encoding of:\ntokenIDs                                    uint256[]  bytes\namounts                                     uint256[]  bytes\ndestinationRecipientAddress                   bytes    bytes\ntransferData                                  bytes    bytes"
            },
            "functionSelector": "e248cff2",
            "id": 13833,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13716,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13715,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "3192:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "3192:10:73"
              }
            ],
            "name": "executeProposal",
            "nameLocation": "3117:15:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13714,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3183:8:73"
            },
            "parameters": {
              "id": 13713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13710,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "3141:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3133:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13709,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3133:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13712,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "3168:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3153:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13711,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3153:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3132:41:73"
            },
            "returnParameters": {
              "id": 13719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13718,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3212:12:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13717,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3212:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3211:14:73"
            },
            "scope": 13936,
            "src": "3108:1155:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14707
            ],
            "body": {
              "id": 13905,
              "nodeType": "Block",
              "src": "4598:431:73",
              "statements": [
                {
                  "assignments": [
                    13843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13843,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "4616:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4608:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13842,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4608:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13844,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4608:20:73"
                },
                {
                  "assignments": [
                    13846
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13846,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nameLocation": "4646:9:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4638:17:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13845,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4638:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13847,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4638:17:73"
                },
                {
                  "assignments": [
                    13852
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13852,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "4679:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4665:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13850,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4665:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13851,
                        "nodeType": "ArrayTypeName",
                        "src": "4665:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13853,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4665:22:73"
                },
                {
                  "assignments": [
                    13858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13858,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "4711:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4697:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13856,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4697:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13857,
                        "nodeType": "ArrayTypeName",
                        "src": "4697:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13859,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4697:21:73"
                },
                {
                  "assignments": [
                    13861
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13861,
                      "mutability": "mutable",
                      "name": "transferData",
                      "nameLocation": "4741:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4728:25:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13860,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4728:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13862,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4728:25:73"
                },
                {
                  "expression": {
                    "id": 13886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13863,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13843,
                          "src": "4765:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 13864,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13846,
                          "src": "4779:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 13865,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13852,
                          "src": "4790:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13866,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13858,
                          "src": "4800:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13867,
                          "name": "transferData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13861,
                          "src": "4809:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 13868,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4764:58:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13871,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13836,
                          "src": "4836:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 13873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4843:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13872,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4843:7:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "id": 13875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4852:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13874,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4852:7:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4861:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13876,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4861:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4861:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4869:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13879,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4869:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4869:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "id": 13883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4877:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13882,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "4877:5:73",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 13884,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4842:41:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(address),type(address),type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(address),type(address),type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer))"
                          }
                        ],
                        "expression": {
                          "id": 13869,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "4825:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "4825:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4825:59:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(address payable,address payable,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "src": "4764:120:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13887,
                  "nodeType": "ExpressionStatement",
                  "src": "4764:120:73"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 13888,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13846,
                        "src": "4895:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 13890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustNotBeZero",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19136,
                      "src": "4895:23:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_address_$bound_to$_t_address_$",
                        "typeString": "function (address) pure returns (address)"
                      }
                    },
                    "id": 13891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4895:25:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13892,
                  "nodeType": "ExpressionStatement",
                  "src": "4895:25:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13894,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "4950:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 13897,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "4972:4:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                              "typeString": "contract ERC1155Handler"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                              "typeString": "contract ERC1155Handler"
                            }
                          ],
                          "id": 13896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4964:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13895,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4964:7:73",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4964:13:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13899,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13846,
                        "src": "4979:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13900,
                        "name": "tokenIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13852,
                        "src": "4990:8:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13901,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13858,
                        "src": "5000:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13902,
                        "name": "transferData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13861,
                        "src": "5009:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13893,
                      "name": "releaseBatchERC1155",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8944,
                      "src": "4930:19:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 13903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4930:92:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13904,
                  "nodeType": "ExpressionStatement",
                  "src": "4930:92:73"
                }
              ]
            },
            "documentation": {
              "id": 13834,
              "nodeType": "StructuredDocumentation",
              "src": "4269:258:73",
              "text": "@notice Used to manually release ERC1155 tokens from ERC1155Safe.\n@param data Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs},\n{amounts}, and {transferData} of types address, address, uint[], uint[], bytes."
            },
            "functionSelector": "0968f264",
            "id": 13906,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13840,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13839,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "4587:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "4587:10:73"
              }
            ],
            "name": "withdraw",
            "nameLocation": "4541:8:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13838,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4578:8:73"
            },
            "parameters": {
              "id": 13837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13836,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4563:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13906,
                  "src": "4550:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13835,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4550:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4549:19:73"
            },
            "returnParameters": {
              "id": 13841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4598:0:73"
            },
            "scope": 13936,
            "src": "4532:497:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18300
            ],
            "body": {
              "id": 13934,
              "nodeType": "Block",
              "src": "5790:173:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 13922,
                                  "name": "IERC1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1946,
                                  "src": "5847:8:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                ],
                                "id": 13921,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967269,
                                "src": "5842:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 13923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5842:14:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1946",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 13924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "5842:26:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 13919,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13911,
                            "src": "5808:15:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 13920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6217,
                          "src": "5808:33:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address,bytes4) view returns (bool)"
                          }
                        },
                        "id": 13925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5808:61:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "746f6b656e20646f6573206e6f7420737570706f7274204945524331313535",
                        "id": 13926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5871:33:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a",
                          "typeString": "literal_string \"token does not support IERC1155\""
                        },
                        "value": "token does not support IERC1155"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a",
                          "typeString": "literal_string \"token does not support IERC1155\""
                        }
                      ],
                      "id": 13918,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5800:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5800:105:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13928,
                  "nodeType": "ExpressionStatement",
                  "src": "5800:105:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13930,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13909,
                        "src": "5928:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 13931,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13911,
                        "src": "5940:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13929,
                      "name": "_setResource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14742,
                      "src": "5915:12:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5915:41:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13933,
                  "nodeType": "ExpressionStatement",
                  "src": "5915:41:73"
                }
              ]
            },
            "documentation": {
              "id": 13907,
              "nodeType": "StructuredDocumentation",
              "src": "5035:643:73",
              "text": "@notice Sets {_resourceIDToContractAddress} with {contractAddress},\n{_tokenContractAddressToTokenProperties[tokenAddress].resourceID} with {resourceID} and\n{_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted} to true for {contractAddress} in ERCHandlerHelpers contract.\nReverts if {contractAddress} doesn't support {IERC1155}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param args Additional data to be passed to specified handler."
            },
            "functionSelector": "fa8675b0",
            "id": 13935,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13916,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13915,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "5779:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "5779:10:73"
              }
            ],
            "name": "setResource",
            "nameLocation": "5692:11:73",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13909,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "5712:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5704:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5704:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13911,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nameLocation": "5732:15:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5724:23:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5724:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13913,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "5764:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5749:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13912,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5749:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5703:66:73"
            },
            "returnParameters": {
              "id": 13917,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5790:0:73"
            },
            "scope": 13936,
            "src": "5683:280:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 13937,
        "src": "434:5531:73",
        "usedErrors": [
          14647,
          19110,
          19116
        ]
      }
    ],
    "src": "81:5885:73"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/handlers/ERC1155Handler.sol",
    "exportedSymbols": {
      "AccessControl": [
        308
      ],
      "AccessControlEnumerable": [
        433
      ],
      "Address": [
        5283
      ],
      "Context": [
        5305
      ],
      "ERC1155": [
        1824
      ],
      "ERC1155Burnable": [
        2056
      ],
      "ERC1155Handler": [
        13936
      ],
      "ERC1155Holder": [
        2368
      ],
      "ERC1155Pausable": [
        2104
      ],
      "ERC1155PresetMinterPauser": [
        2317
      ],
      "ERC1155Receiver": [
        2402
      ],
      "ERC1155Safe": [
        9008
      ],
      "ERC165": [
        6167
      ],
      "ERC165Checker": [
        6369
      ],
      "ERCHandlerHelpers": [
        14917
      ],
      "EnumerableSet": [
        7373
      ],
      "IAccessControl": [
        506
      ],
      "IAccessControlEnumerable": [
        531
      ],
      "IERC1155": [
        1946
      ],
      "IERC1155MetadataURI": [
        2119
      ],
      "IERC1155Receiver": [
        1987
      ],
      "IERC165": [
        6381
      ],
      "IERCHandler": [
        18195
      ],
      "IHandler": [
        18301
      ],
      "Pausable": [
        728
      ],
      "SanityChecks": [
        19158
      ],
      "Strings": [
        5582
      ]
    },
    "id": 13937,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13579,
        "literals": [
          "solidity",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "81:23:73"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IHandler.sol",
        "file": "../interfaces/IHandler.sol",
        "id": 13580,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 18302,
        "src": "106:36:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/handlers/ERCHandlerHelpers.sol",
        "file": "./ERCHandlerHelpers.sol",
        "id": 13581,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 14918,
        "src": "143:33:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/ERC1155Safe.sol",
        "file": "../ERC1155Safe.sol",
        "id": 13582,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 9009,
        "src": "177:28:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol",
        "file": "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol",
        "id": 13583,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 6370,
        "src": "206:71:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol",
        "id": 13584,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 2369,
        "src": "278:71:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
        "id": 13585,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13937,
        "sourceUnit": 2120,
        "src": "350:82:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 13586,
              "name": "IHandler",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18301,
              "src": "461:8:73"
            },
            "id": 13587,
            "nodeType": "InheritanceSpecifier",
            "src": "461:8:73"
          },
          {
            "baseName": {
              "id": 13588,
              "name": "ERCHandlerHelpers",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14917,
              "src": "471:17:73"
            },
            "id": 13589,
            "nodeType": "InheritanceSpecifier",
            "src": "471:17:73"
          },
          {
            "baseName": {
              "id": 13590,
              "name": "ERC1155Safe",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9008,
              "src": "490:11:73"
            },
            "id": 13591,
            "nodeType": "InheritanceSpecifier",
            "src": "490:11:73"
          },
          {
            "baseName": {
              "id": 13592,
              "name": "ERC1155Holder",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2368,
              "src": "503:13:73"
            },
            "id": 13593,
            "nodeType": "InheritanceSpecifier",
            "src": "503:13:73"
          }
        ],
        "canonicalName": "ERC1155Handler",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 13936,
        "linearizedBaseContracts": [
          13936,
          2368,
          2402,
          1987,
          6167,
          6381,
          9008,
          14917,
          18195,
          18301
        ],
        "name": "ERC1155Handler",
        "nameLocation": "443:14:73",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 13595,
            "libraryName": {
              "id": 13594,
              "name": "SanityChecks",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19158,
              "src": "529:12:73"
            },
            "nodeType": "UsingForDirective",
            "src": "523:25:73"
          },
          {
            "id": 13598,
            "libraryName": {
              "id": 13596,
              "name": "ERC165Checker",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 6369,
              "src": "559:13:73"
            },
            "nodeType": "UsingForDirective",
            "src": "553:32:73",
            "typeName": {
              "id": 13597,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "577:7:73",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "constant": true,
            "id": 13601,
            "mutability": "constant",
            "name": "EMPTY_BYTES",
            "nameLocation": "614:11:73",
            "nodeType": "VariableDeclaration",
            "scope": 13936,
            "src": "591:39:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory_ptr",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 13599,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "591:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "",
              "id": 13600,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "628:2:73",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                "typeString": "literal_string \"\""
              },
              "value": ""
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 13620,
              "nodeType": "Block",
              "src": "812:95:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 13616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 13612,
                                "name": "IERC1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1946,
                                "src": "835:8:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              ],
                              "id": 13611,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "830:4:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "830:14:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1946",
                              "typeString": "type(contract IERC1155)"
                            }
                          },
                          "id": 13614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "830:26:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30786439623637613236",
                          "id": 13615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "860:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3652614694_by_1",
                            "typeString": "int_const 3652614694"
                          },
                          "value": "0xd9b67a26"
                        },
                        "src": "830:40:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e76616c6964204552433131353520696e74657266616365",
                        "id": 13617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "872:27:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64",
                          "typeString": "literal_string \"invalid ERC1155 interface\""
                        },
                        "value": "invalid ERC1155 interface"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30d2962610e5b45c519624b05228b32c67a752a5328333b85c94d0e466330f64",
                          "typeString": "literal_string \"invalid ERC1155 interface\""
                        }
                      ],
                      "id": 13610,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "822:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "822:78:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13619,
                  "nodeType": "ExpressionStatement",
                  "src": "822:78:73"
                }
              ]
            },
            "documentation": {
              "id": 13602,
              "nodeType": "StructuredDocumentation",
              "src": "637:88:73",
              "text": "@param bridgeAddress Contract address of previously deployed Bridge."
            },
            "id": 13621,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 13607,
                    "name": "bridgeAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13604,
                    "src": "797:13:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 13608,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 13606,
                  "name": "ERCHandlerHelpers",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14917,
                  "src": "779:17:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "779:32:73"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13604,
                  "mutability": "mutable",
                  "name": "bridgeAddress",
                  "nameLocation": "759:13:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13621,
                  "src": "751:21:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13603,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "751:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "741:37:73"
            },
            "returnParameters": {
              "id": 13609,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "812:0:73"
            },
            "scope": 13936,
            "src": "730:177:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              18280
            ],
            "body": {
              "id": 13706,
              "nodeType": "Block",
              "src": "1759:582:73",
              "statements": [
                {
                  "assignments": [
                    13640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13640,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "1783:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1769:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13638,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1769:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13639,
                        "nodeType": "ArrayTypeName",
                        "src": "1769:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13641,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1769:22:73"
                },
                {
                  "assignments": [
                    13646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13646,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "1815:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1801:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13644,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13645,
                        "nodeType": "ArrayTypeName",
                        "src": "1801:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13647,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1801:21:73"
                },
                {
                  "expression": {
                    "id": 13662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13648,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13640,
                          "src": "1834:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13649,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13646,
                          "src": "1844:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "id": 13650,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1833:19:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13653,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13628,
                          "src": "1866:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 13655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1873:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13654,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1873:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1873:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1881:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13657,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1881:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1881:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            }
                          ],
                          "id": 13660,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1872:16:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory))"
                          }
                        ],
                        "expression": {
                          "id": 13651,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "1855:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1855:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1855:34:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory)"
                      }
                    },
                    "src": "1833:56:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13663,
                  "nodeType": "ExpressionStatement",
                  "src": "1833:56:73"
                },
                {
                  "assignments": [
                    13665
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13665,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "1908:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13706,
                      "src": "1900:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13664,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1900:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13669,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13666,
                      "name": "_resourceIDToTokenContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14651,
                      "src": "1923:33:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 13668,
                    "indexExpression": {
                      "id": 13667,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13624,
                      "src": "1957:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1923:45:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1900:68:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 13676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 13671,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13665,
                          "src": "1986:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 13674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2010:1:73",
                              "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": 13673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2002:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13672,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2002:7:73",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2002:10:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1986:26:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "70726f7669646564207265736f75726365494420646f6573206e6f74206578697374",
                        "id": 13677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2014:36:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7",
                          "typeString": "literal_string \"provided resourceID does not exist\""
                        },
                        "value": "provided resourceID does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_332ad783fca7afaaf41f0edcb6cee70fdf565d876fb0a0f4efb93b3a113da6c7",
                          "typeString": "literal_string \"provided resourceID does not exist\""
                        }
                      ],
                      "id": 13670,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1978:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1978:73:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13679,
                  "nodeType": "ExpressionStatement",
                  "src": "1978:73:73"
                },
                {
                  "condition": {
                    "expression": {
                      "baseExpression": {
                        "id": 13680,
                        "name": "_tokenContractAddressToTokenProperties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14656,
                        "src": "2066:38:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                          "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                        }
                      },
                      "id": 13682,
                      "indexExpression": {
                        "id": 13681,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13665,
                        "src": "2105:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2066:52:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                        "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                      }
                    },
                    "id": 13683,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isBurnable",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 14639,
                    "src": "2066:63:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13704,
                    "nodeType": "Block",
                    "src": "2222:113:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13693,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13665,
                              "src": "2253:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13694,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2267:9:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13697,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "2286:4:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                ],
                                "id": 13696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2278:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13695,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2278:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2278:13:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13699,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13640,
                              "src": "2293:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13700,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13646,
                              "src": "2303:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13701,
                              "name": "EMPTY_BYTES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13601,
                              "src": "2312:11:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13692,
                            "name": "lockBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8908,
                            "src": "2236:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2236:88:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13703,
                        "nodeType": "ExpressionStatement",
                        "src": "2236:88:73"
                      }
                    ]
                  },
                  "id": 13705,
                  "nodeType": "IfStatement",
                  "src": "2062:273:73",
                  "trueBody": {
                    "id": 13691,
                    "nodeType": "Block",
                    "src": "2131:85:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13685,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13665,
                              "src": "2162:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13686,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2176:9:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13687,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13640,
                              "src": "2187:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13688,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13646,
                              "src": "2197:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 13684,
                            "name": "burnBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9007,
                            "src": "2145:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 13689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2145:60:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13690,
                        "nodeType": "ExpressionStatement",
                        "src": "2145:60:73"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13622,
              "nodeType": "StructuredDocumentation",
              "src": "913:712:73",
              "text": "@notice A deposit is initiated by making a deposit in the Bridge contract.\n@param resourceID ResourceID used to find address of token to be used for deposit.\n@param depositor Address of account making the deposit in the Bridge contract.\n@param data Consists of ABI-encoded arrays of tokenIDs and amounts.\n@notice Data passed into the function should be constructed as ABI encoding of:\ntokenIDs                                    uint256[]  bytes\namounts                                     uint256[]  bytes\ndestinationRecipientAddress                   bytes    bytes\ntransferData                                  bytes    bytes"
            },
            "functionSelector": "b07e54bb",
            "id": 13707,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13632,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13631,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "1725:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "1725:10:73"
              }
            ],
            "name": "deposit",
            "nameLocation": "1639:7:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13630,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1716:8:73"
            },
            "parameters": {
              "id": 13629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13624,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "1655:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1647:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13623,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13626,
                  "mutability": "mutable",
                  "name": "depositor",
                  "nameLocation": "1675:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1667:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13625,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13628,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1701:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1686:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13627,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1686:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1646:60:73"
            },
            "returnParameters": {
              "id": 13635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13634,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13707,
                  "src": "1745:12:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13633,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1745:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1744:14:73"
            },
            "scope": 13936,
            "src": "1630:711:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18290
            ],
            "body": {
              "id": 13832,
              "nodeType": "Block",
              "src": "3226:1037:73",
              "statements": [
                {
                  "assignments": [
                    13724
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13724,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "3250:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3236:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13722,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3236:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13723,
                        "nodeType": "ArrayTypeName",
                        "src": "3236:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13725,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3236:22:73"
                },
                {
                  "assignments": [
                    13730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13730,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "3282:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3268:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13728,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3268:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13729,
                        "nodeType": "ArrayTypeName",
                        "src": "3268:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13731,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3268:21:73"
                },
                {
                  "assignments": [
                    13733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13733,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nameLocation": "3312:9:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3299:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13732,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3299:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13734,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3299:22:73"
                },
                {
                  "assignments": [
                    13736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13736,
                      "mutability": "mutable",
                      "name": "transferData",
                      "nameLocation": "3344:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3331:25:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13735,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3331:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13737,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3331:25:73"
                },
                {
                  "expression": {
                    "id": 13758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13738,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13724,
                          "src": "3368:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13739,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13730,
                          "src": "3378:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13740,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13733,
                          "src": "3387:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 13741,
                          "name": "transferData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13736,
                          "src": "3398:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 13742,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3367:44:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory,bytes memory,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13745,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13712,
                          "src": "3425:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 13747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3432:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13746,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3432:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3432:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3440:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13749,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3440:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3440:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "id": 13753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3448:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13752,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3448:5:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "id": 13755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3455:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13754,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3455:5:73",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 13756,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3431:30:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer),type(bytes storage pointer))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer),type(bytes storage pointer))"
                          }
                        ],
                        "expression": {
                          "id": 13743,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "3414:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "3414:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3414:48:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(uint256[] memory,uint256[] memory,bytes memory,bytes memory)"
                      }
                    },
                    "src": "3367:95:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13759,
                  "nodeType": "ExpressionStatement",
                  "src": "3367:95:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3230",
                        "id": 13765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3497:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        },
                        "value": "20"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_20_by_1",
                          "typeString": "int_const 20"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 13760,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13733,
                          "src": "3473:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 13763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "3473:16:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustBe",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19157,
                      "src": "3473:23:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 13766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3473:27:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13767,
                  "nodeType": "ExpressionStatement",
                  "src": "3473:27:73"
                },
                {
                  "assignments": [
                    13769
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13769,
                      "mutability": "mutable",
                      "name": "recipientAddress",
                      "nameLocation": "3518:16:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3510:24:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      },
                      "typeName": {
                        "id": 13768,
                        "name": "bytes20",
                        "nodeType": "ElementaryTypeName",
                        "src": "3510:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13770,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3510:24:73"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3554:71:73",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3568:47:73",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "recipient",
                                  "nodeType": "YulIdentifier",
                                  "src": "3598:9:73"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3609:4:73",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3594:3:73"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3594:20:73"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "3588:5:73"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3588:27:73"
                        },
                        "variableNames": [
                          {
                            "name": "recipientAddress",
                            "nodeType": "YulIdentifier",
                            "src": "3568:16:73"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 13733,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3598:9:73",
                      "valueSize": 1
                    },
                    {
                      "declaration": 13769,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3568:16:73",
                      "valueSize": 1
                    }
                  ],
                  "id": 13771,
                  "nodeType": "InlineAssembly",
                  "src": "3545:80:73"
                },
                {
                  "assignments": [
                    13773
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13773,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "3643:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13832,
                      "src": "3635:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13772,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3635:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13777,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13774,
                      "name": "_resourceIDToTokenContractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14651,
                      "src": "3658:33:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 13776,
                    "indexExpression": {
                      "id": 13775,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13710,
                      "src": "3692:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3658:45:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3635:68:73"
                },
                {
                  "condition": {
                    "id": 13782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3717:67:73",
                    "subExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 13778,
                          "name": "_tokenContractAddressToTokenProperties",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14656,
                          "src": "3718:38:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                            "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                          }
                        },
                        "id": 13780,
                        "indexExpression": {
                          "id": 13779,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13773,
                          "src": "3757:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3718:52:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                          "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                        }
                      },
                      "id": 13781,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isWhitelisted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14637,
                      "src": "3718:66:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13787,
                  "nodeType": "IfStatement",
                  "src": "3713:123:73",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "id": 13784,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13773,
                          "src": "3823:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 13783,
                        "name": "ContractAddressNotWhitelisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14647,
                        "src": "3793:29:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                          "typeString": "function (address) pure"
                        }
                      },
                      "id": 13785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3793:43:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 13786,
                    "nodeType": "RevertStatement",
                    "src": "3786:50:73"
                  }
                },
                {
                  "condition": {
                    "expression": {
                      "baseExpression": {
                        "id": 13788,
                        "name": "_tokenContractAddressToTokenProperties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14656,
                        "src": "3851:38:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ERCTokenContractProperties_$14643_storage_$",
                          "typeString": "mapping(address => struct ERCHandlerHelpers.ERCTokenContractProperties storage ref)"
                        }
                      },
                      "id": 13790,
                      "indexExpression": {
                        "id": 13789,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13773,
                        "src": "3890:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3851:52:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERCTokenContractProperties_$14643_storage",
                        "typeString": "struct ERCHandlerHelpers.ERCTokenContractProperties storage ref"
                      }
                    },
                    "id": 13791,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isBurnable",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 14639,
                    "src": "3851:63:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13819,
                    "nodeType": "Block",
                    "src": "4037:133:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13805,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "4071:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13808,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "4093:4:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                                    "typeString": "contract ERC1155Handler"
                                  }
                                ],
                                "id": 13807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4085:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13806,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4085:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4085:13:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13812,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13769,
                                  "src": "4108:16:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 13811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4100:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13810,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4100:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4100:25:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13814,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13724,
                              "src": "4127:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13815,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13730,
                              "src": "4137:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13816,
                              "name": "transferData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "4146:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13804,
                            "name": "releaseBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8944,
                            "src": "4051:19:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4051:108:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13818,
                        "nodeType": "ExpressionStatement",
                        "src": "4051:108:73"
                      }
                    ]
                  },
                  "id": 13820,
                  "nodeType": "IfStatement",
                  "src": "3847:323:73",
                  "trueBody": {
                    "id": 13803,
                    "nodeType": "Block",
                    "src": "3916:115:73",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13793,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "3947:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13796,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13769,
                                  "src": "3969:16:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "id": 13795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3961:7:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13794,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3961:7:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3961:25:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13798,
                              "name": "tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13724,
                              "src": "3988:8:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13799,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13730,
                              "src": "3998:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13800,
                              "name": "transferData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "4007:12:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13792,
                            "name": "mintBatchERC1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8977,
                            "src": "3930:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 13801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3930:90:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13802,
                        "nodeType": "ExpressionStatement",
                        "src": "3930:90:73"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13823,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13773,
                        "src": "4197:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 13826,
                            "name": "recipientAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13769,
                            "src": "4219:16:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          ],
                          "id": 13825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4211:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13824,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4211:7:73",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4211:25:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13828,
                        "name": "tokenIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13724,
                        "src": "4238:8:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13829,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13730,
                        "src": "4248:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "id": 13821,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "4186:3:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 13822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "4186:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 13830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4186:70:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 13719,
                  "id": 13831,
                  "nodeType": "Return",
                  "src": "4179:77:73"
                }
              ]
            },
            "documentation": {
              "id": 13708,
              "nodeType": "StructuredDocumentation",
              "src": "2347:756:73",
              "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param resourceID ResourceID to be used when making deposits.\n@param data Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient},\nand {transferData} of types uint[], uint[], bytes, bytes.\n@notice Data passed into the function should be constructed as ABI encoding of:\ntokenIDs                                    uint256[]  bytes\namounts                                     uint256[]  bytes\ndestinationRecipientAddress                   bytes    bytes\ntransferData                                  bytes    bytes"
            },
            "functionSelector": "e248cff2",
            "id": 13833,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13716,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13715,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "3192:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "3192:10:73"
              }
            ],
            "name": "executeProposal",
            "nameLocation": "3117:15:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13714,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3183:8:73"
            },
            "parameters": {
              "id": 13713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13710,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "3141:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3133:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13709,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3133:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13712,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "3168:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3153:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13711,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3153:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3132:41:73"
            },
            "returnParameters": {
              "id": 13719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13718,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13833,
                  "src": "3212:12:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13717,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3212:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3211:14:73"
            },
            "scope": 13936,
            "src": "3108:1155:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14707
            ],
            "body": {
              "id": 13905,
              "nodeType": "Block",
              "src": "4598:431:73",
              "statements": [
                {
                  "assignments": [
                    13843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13843,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nameLocation": "4616:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4608:20:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13842,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4608:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13844,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4608:20:73"
                },
                {
                  "assignments": [
                    13846
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13846,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nameLocation": "4646:9:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4638:17:73",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13845,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4638:7:73",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13847,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4638:17:73"
                },
                {
                  "assignments": [
                    13852
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13852,
                      "mutability": "mutable",
                      "name": "tokenIDs",
                      "nameLocation": "4679:8:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4665:22:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13850,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4665:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13851,
                        "nodeType": "ArrayTypeName",
                        "src": "4665:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13853,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4665:22:73"
                },
                {
                  "assignments": [
                    13858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13858,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nameLocation": "4711:7:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4697:21:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 13856,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4697:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13857,
                        "nodeType": "ArrayTypeName",
                        "src": "4697:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13859,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4697:21:73"
                },
                {
                  "assignments": [
                    13861
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13861,
                      "mutability": "mutable",
                      "name": "transferData",
                      "nameLocation": "4741:12:73",
                      "nodeType": "VariableDeclaration",
                      "scope": 13905,
                      "src": "4728:25:73",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 13860,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4728:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13862,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4728:25:73"
                },
                {
                  "expression": {
                    "id": 13886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 13863,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13843,
                          "src": "4765:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 13864,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13846,
                          "src": "4779:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 13865,
                          "name": "tokenIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13852,
                          "src": "4790:8:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13866,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13858,
                          "src": "4800:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "id": 13867,
                          "name": "transferData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13861,
                          "src": "4809:12:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 13868,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4764:58:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 13871,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13836,
                          "src": "4836:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 13873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4843:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13872,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4843:7:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "id": 13875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4852:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13874,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4852:7:73",
                                "typeDescriptions": {}
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4861:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13876,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4861:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4861:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 13880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4869:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13879,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4869:4:73",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4869:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "type(uint256[] memory)"
                              }
                            },
                            {
                              "id": 13883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4877:5:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 13882,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "4877:5:73",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 13884,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4842:41:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(address),type(address),type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                            "typeString": "tuple(type(address),type(address),type(uint256[] memory),type(uint256[] memory),type(bytes storage pointer))"
                          }
                        ],
                        "expression": {
                          "id": 13869,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967295,
                          "src": "4825:3:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 13870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "4825:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 13885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4825:59:73",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(address payable,address payable,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "src": "4764:120:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13887,
                  "nodeType": "ExpressionStatement",
                  "src": "4764:120:73"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 13888,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13846,
                        "src": "4895:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 13890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mustNotBeZero",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19136,
                      "src": "4895:23:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_address_$bound_to$_t_address_$",
                        "typeString": "function (address) pure returns (address)"
                      }
                    },
                    "id": 13891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4895:25:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13892,
                  "nodeType": "ExpressionStatement",
                  "src": "4895:25:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13894,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "4950:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 13897,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "4972:4:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                              "typeString": "contract ERC1155Handler"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC1155Handler_$13936",
                              "typeString": "contract ERC1155Handler"
                            }
                          ],
                          "id": 13896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4964:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13895,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4964:7:73",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4964:13:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13899,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13846,
                        "src": "4979:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 13900,
                        "name": "tokenIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13852,
                        "src": "4990:8:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13901,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13858,
                        "src": "5000:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 13902,
                        "name": "transferData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13861,
                        "src": "5009:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13893,
                      "name": "releaseBatchERC1155",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8944,
                      "src": "4930:19:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 13903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4930:92:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13904,
                  "nodeType": "ExpressionStatement",
                  "src": "4930:92:73"
                }
              ]
            },
            "documentation": {
              "id": 13834,
              "nodeType": "StructuredDocumentation",
              "src": "4269:258:73",
              "text": "@notice Used to manually release ERC1155 tokens from ERC1155Safe.\n@param data Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs},\n{amounts}, and {transferData} of types address, address, uint[], uint[], bytes."
            },
            "functionSelector": "0968f264",
            "id": 13906,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13840,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13839,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "4587:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "4587:10:73"
              }
            ],
            "name": "withdraw",
            "nameLocation": "4541:8:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13838,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4578:8:73"
            },
            "parameters": {
              "id": 13837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13836,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4563:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13906,
                  "src": "4550:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13835,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4550:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4549:19:73"
            },
            "returnParameters": {
              "id": 13841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4598:0:73"
            },
            "scope": 13936,
            "src": "4532:497:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18300
            ],
            "body": {
              "id": 13934,
              "nodeType": "Block",
              "src": "5790:173:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 13922,
                                  "name": "IERC1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1946,
                                  "src": "5847:8:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$1946_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                ],
                                "id": 13921,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967269,
                                "src": "5842:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 13923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5842:14:73",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1946",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 13924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "5842:26:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 13919,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13911,
                            "src": "5808:15:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 13920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6217,
                          "src": "5808:33:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address,bytes4) view returns (bool)"
                          }
                        },
                        "id": 13925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5808:61:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "746f6b656e20646f6573206e6f7420737570706f7274204945524331313535",
                        "id": 13926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5871:33:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a",
                          "typeString": "literal_string \"token does not support IERC1155\""
                        },
                        "value": "token does not support IERC1155"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a99272ecbc80fea18e303ac0c7ab7072826eae689d50d7997ab1d0e04b90d69a",
                          "typeString": "literal_string \"token does not support IERC1155\""
                        }
                      ],
                      "id": 13918,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5800:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5800:105:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13928,
                  "nodeType": "ExpressionStatement",
                  "src": "5800:105:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13930,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13909,
                        "src": "5928:10:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 13931,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13911,
                        "src": "5940:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13929,
                      "name": "_setResource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14742,
                      "src": "5915:12:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5915:41:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13933,
                  "nodeType": "ExpressionStatement",
                  "src": "5915:41:73"
                }
              ]
            },
            "documentation": {
              "id": 13907,
              "nodeType": "StructuredDocumentation",
              "src": "5035:643:73",
              "text": "@notice Sets {_resourceIDToContractAddress} with {contractAddress},\n{_tokenContractAddressToTokenProperties[tokenAddress].resourceID} with {resourceID} and\n{_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted} to true for {contractAddress} in ERCHandlerHelpers contract.\nReverts if {contractAddress} doesn't support {IERC1155}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param args Additional data to be passed to specified handler."
            },
            "functionSelector": "fa8675b0",
            "id": 13935,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 13916,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 13915,
                  "name": "onlyBridge",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14663,
                  "src": "5779:10:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "5779:10:73"
              }
            ],
            "name": "setResource",
            "nameLocation": "5692:11:73",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13909,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "5712:10:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5704:18:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5704:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13911,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nameLocation": "5732:15:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5724:23:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5724:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13913,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "5764:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "5749:19:73",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13912,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5749:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5703:66:73"
            },
            "returnParameters": {
              "id": 13917,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5790:0:73"
            },
            "scope": 13936,
            "src": "5683:280:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 13937,
        "src": "434:5531:73",
        "usedErrors": [
          14647,
          19110,
          19116
        ]
      }
    ],
    "src": "81:5885:73"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.11+commit.d7f03943.Emscripten.clang"
  },
  "networks": {
    "1727170272871": {
      "events": {},
      "links": {},
      "address": "0xE54Dc792c226AEF99D6086527b98b36a4ADDe56a",
      "transactionHash": "0x41d7fc31a3dae29d36479181e776887fe2d7990c72fc24f975d2fe210254a608"
    },
    "1727170313921": {
      "events": {},
      "links": {},
      "address": "0xE54Dc792c226AEF99D6086527b98b36a4ADDe56a",
      "transactionHash": "0x8da7e78fdae356842069edf1763b0358a9c34831d2dfb11a48a3a0a9ef48ffc8"
    }
  },
  "schemaVersion": "3.4.6",
  "updatedAt": "2024-09-24T09:32:10.977Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "constructor": {
        "params": {
          "bridgeAddress": "Contract address of previously deployed Bridge."
        }
      },
      "deposit(bytes32,address,bytes)": {
        "params": {
          "data": "Consists of ABI-encoded arrays of tokenIDs and amounts.",
          "depositor": "Address of account making the deposit in the Bridge contract.",
          "resourceID": "ResourceID used to find address of token to be used for deposit."
        }
      },
      "executeProposal(bytes32,bytes)": {
        "params": {
          "data": "Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient}, and {transferData} of types uint[], uint[], bytes, bytes.",
          "resourceID": "ResourceID to be used when making deposits."
        }
      },
      "setBurnable(address)": {
        "params": {
          "contractAddress": "Address of contract to be used when making or executing deposits."
        }
      },
      "setResource(bytes32,address,bytes)": {
        "params": {
          "args": "Additional data to be passed to specified handler.",
          "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
          "resourceID": "ResourceID to be used when making deposits."
        }
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "withdraw(bytes)": {
        "params": {
          "data": "Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs}, {amounts}, and {transferData} of types address, address, uint[], uint[], bytes."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "_resourceIDToTokenContractAddress(bytes32)": {
        "notice": "Exposing getter for {_resourceIDToTokenContractAddress}."
      },
      "deposit(bytes32,address,bytes)": {
        "notice": "A deposit is initiated by making a deposit in the Bridge contract.Data passed into the function should be constructed as ABI encoding of: tokenIDs                                    uint256[]  bytes amounts                                     uint256[]  bytes destinationRecipientAddress                   bytes    bytes transferData                                  bytes    bytes"
      },
      "executeProposal(bytes32,bytes)": {
        "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as ABI encoding of: tokenIDs                                    uint256[]  bytes amounts                                     uint256[]  bytes destinationRecipientAddress                   bytes    bytes transferData                                  bytes    bytes"
      },
      "setBurnable(address)": {
        "notice": "First verifies {contractAddress} is whitelisted, then sets {_tokenContractAddressToTokenProperties[contractAddress].isBurnable} to true."
      },
      "setResource(bytes32,address,bytes)": {
        "notice": "Sets {_resourceIDToContractAddress} with {contractAddress}, {_tokenContractAddressToTokenProperties[tokenAddress].resourceID} with {resourceID} and {_tokenContractAddressToTokenProperties[tokenAddress].isWhitelisted} to true for {contractAddress} in ERCHandlerHelpers contract. Reverts if {contractAddress} doesn't support {IERC1155}."
      },
      "withdraw(bytes)": {
        "notice": "Used to manually release ERC1155 tokens from ERC1155Safe."
      }
    },
    "version": 1
  }
}