UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 152 kB
{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"423:10792:78:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;423:10792:78;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"423:10792:78:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MerkleTrie\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie inclusion proofs. By default, this library assumes a hexary trie. One can change the trie radix constant to support other trie radixes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/trie/MerkleTrie.sol\":\"MerkleTrie\"},\"evmVersion\":\"cancun\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/rlp/RLPErrors.sol\":{\"keccak256\":\"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47\",\"dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96\",\"dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/libraries/trie/MerkleTrie.sol":"MerkleTrie"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/rlp/RLPErrors.sol":{"keccak256":"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26","urls":["bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47","dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db","urls":["bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96","dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie inclusion proofs. By default, this library assumes a hexary trie. One can change the trie radix constant to support other trie radixes."},"devdoc":{"version":1,"kind":"dev","title":"MerkleTrie"},"ast":{"absolutePath":"src/libraries/trie/MerkleTrie.sol","id":58646,"exportedSymbols":{"Bytes":[55153],"MerkleTrie":[58645],"RLPReader":[57578]},"nodeType":"SourceUnit","src":"32:11184:78","nodes":[{"id":58079,"nodeType":"PragmaDirective","src":"32:23:78","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":58081,"nodeType":"ImportDirective","src":"57:37:78","nodes":[],"absolutePath":"src/libraries/Bytes.sol","file":"../Bytes.sol","nameLocation":"-1:-1:-1","scope":58646,"sourceUnit":55154,"symbolAliases":[{"foreign":{"id":58080,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"66:5:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58083,"nodeType":"ImportDirective","src":"95:49:78","nodes":[],"absolutePath":"src/libraries/rlp/RLPReader.sol","file":"../rlp/RLPReader.sol","nameLocation":"-1:-1:-1","scope":58646,"sourceUnit":57579,"symbolAliases":[{"foreign":{"id":58082,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"104:9:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58645,"nodeType":"ContractDefinition","src":"423:10792:78","nodes":[{"id":58092,"nodeType":"StructDefinition","src":"608:83:78","nodes":[],"canonicalName":"MerkleTrie.TrieNode","documentation":{"id":58085,"nodeType":"StructuredDocumentation","src":"448:155:78","text":"@notice Struct representing a node in the trie.\n @custom:field encoded The RLP-encoded node.\n @custom:field decoded The RLP-decoded node."},"members":[{"constant":false,"id":58087,"mutability":"mutable","name":"encoded","nameLocation":"640:7:78","nodeType":"VariableDeclaration","scope":58092,"src":"634:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":58086,"name":"bytes","nodeType":"ElementaryTypeName","src":"634:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58091,"mutability":"mutable","name":"decoded","nameLocation":"677:7:78","nodeType":"VariableDeclaration","scope":58092,"src":"657:27:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"},"typeName":{"baseType":{"id":58089,"nodeType":"UserDefinedTypeName","pathNode":{"id":58088,"name":"RLPReader.RLPItem","nameLocations":["657:9:78","667:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":57059,"src":"657:17:78"},"referencedDeclaration":57059,"src":"657:17:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"id":58090,"nodeType":"ArrayTypeName","src":"657:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"}},"visibility":"internal"}],"name":"TrieNode","nameLocation":"615:8:78","scope":58645,"visibility":"public"},{"id":58096,"nodeType":"VariableDeclaration","src":"764:41:78","nodes":[],"constant":true,"documentation":{"id":58093,"nodeType":"StructuredDocumentation","src":"697:62:78","text":"@notice Determines the number of elements per branch node."},"mutability":"constant","name":"TREE_RADIX","nameLocation":"790:10:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58094,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":58095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"803:2:78","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"id":58102,"nodeType":"VariableDeclaration","src":"889:61:78","nodes":[],"constant":true,"documentation":{"id":58097,"nodeType":"StructuredDocumentation","src":"812:72:78","text":"@notice Branch nodes have TREE_RADIX elements and one value element."},"mutability":"constant","name":"BRANCH_NODE_LENGTH","nameLocation":"915:18:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58098,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":58099,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58096,"src":"936:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":58100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"949:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"936:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":58106,"nodeType":"VariableDeclaration","src":"1047:59:78","nodes":[],"constant":true,"documentation":{"id":58103,"nodeType":"StructuredDocumentation","src":"957:85:78","text":"@notice Leaf nodes and extension nodes have two elements, a `path` and a `value`."},"mutability":"constant","name":"LEAF_OR_EXTENSION_NODE_LENGTH","nameLocation":"1073:29:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1047:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":58105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":58110,"nodeType":"VariableDeclaration","src":"1175:49:78","nodes":[],"constant":true,"documentation":{"id":58107,"nodeType":"StructuredDocumentation","src":"1113:57:78","text":"@notice Prefix for even-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_EVEN","nameLocation":"1199:21:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58108,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":58109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":58114,"nodeType":"VariableDeclaration","src":"1292:48:78","nodes":[],"constant":true,"documentation":{"id":58111,"nodeType":"StructuredDocumentation","src":"1231:56:78","text":"@notice Prefix for odd-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_ODD","nameLocation":"1316:20:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58112,"name":"uint8","nodeType":"ElementaryTypeName","src":"1292:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":58113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1339:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":58118,"nodeType":"VariableDeclaration","src":"1404:44:78","nodes":[],"constant":true,"documentation":{"id":58115,"nodeType":"StructuredDocumentation","src":"1347:52:78","text":"@notice Prefix for even-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_EVEN","nameLocation":"1428:16:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58116,"name":"uint8","nodeType":"ElementaryTypeName","src":"1404:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":58117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":58122,"nodeType":"VariableDeclaration","src":"1511:43:78","nodes":[],"constant":true,"documentation":{"id":58119,"nodeType":"StructuredDocumentation","src":"1455:51:78","text":"@notice Prefix for odd-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_ODD","nameLocation":"1535:15:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58120,"name":"uint8","nodeType":"ElementaryTypeName","src":"1511:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":58121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1553:1:78","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":58150,"nodeType":"FunctionDefinition","src":"2253:281:78","nodes":[],"body":{"id":58149,"nodeType":"Block","src":"2463:71:78","nodes":[],"statements":[{"expression":{"id":58147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58137,"name":"valid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58135,"src":"2473:6:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":58140,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58127,"src":"2494:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":58142,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58125,"src":"2506:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58143,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58130,"src":"2512:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":58144,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58132,"src":"2520:5:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":58141,"name":"get","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58498,"src":"2502:3:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory[] memory,bytes32) pure returns (bytes memory)"}},"id":58145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2502:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58138,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"2482:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2488:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"2482:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":58146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2482:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2473:54:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58148,"nodeType":"ExpressionStatement","src":"2473:54:78"}]},"documentation":{"id":58123,"nodeType":"StructuredDocumentation","src":"1561:687:78","text":"@notice Verifies a proof that a given key/value pair is present in the trie.\n @param _key Key of the node to search for, as a hex string.\n @param _value Value of the node to search for, as a hex string.\n @param _proof Merkle trie inclusion proof for the desired node. Unlike traditional Merkle\n trees, this proof is executed top-down and consists of a list of RLP-encoded\n nodes that make a path down to the target node.\n @param _root Known root of the Merkle trie. Used to verify that the included proof is\n correctly constructed.\n @return valid_ Whether or not the proof is valid."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyInclusionProof","nameLocation":"2262:20:78","parameters":{"id":58133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58125,"mutability":"mutable","name":"_key","nameLocation":"2305:4:78","nodeType":"VariableDeclaration","scope":58150,"src":"2292:17:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58124,"name":"bytes","nodeType":"ElementaryTypeName","src":"2292:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58127,"mutability":"mutable","name":"_value","nameLocation":"2332:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2319:19:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58126,"name":"bytes","nodeType":"ElementaryTypeName","src":"2319:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58130,"mutability":"mutable","name":"_proof","nameLocation":"2363:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2348:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":58128,"name":"bytes","nodeType":"ElementaryTypeName","src":"2348:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":58129,"nodeType":"ArrayTypeName","src":"2348:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":58132,"mutability":"mutable","name":"_root","nameLocation":"2387:5:78","nodeType":"VariableDeclaration","scope":58150,"src":"2379:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":58131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2282:116:78"},"returnParameters":{"id":58136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58135,"mutability":"mutable","name":"valid_","nameLocation":"2451:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2446:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":58134,"name":"bool","nodeType":"ElementaryTypeName","src":"2446:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2445:13:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":58498,"nodeType":"FunctionDefinition","src":"2830:6314:78","nodes":[],"body":{"id":58497,"nodeType":"Block","src":"2944:6200:78","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58164,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58153,"src":"2962:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2967:6:78","memberName":"length","nodeType":"MemberAccess","src":"2962:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":58166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2976:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2962:15:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20656d707479206b6579","id":58168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:23:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""},"value":"MerkleTrie: empty key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""}],"id":58163,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2954:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2954:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58170,"nodeType":"ExpressionStatement","src":"2954:49:78"},{"assignments":[58175],"declarations":[{"constant":false,"id":58175,"mutability":"mutable","name":"proof","nameLocation":"3032:5:78","nodeType":"VariableDeclaration","scope":58497,"src":"3014:23:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":58173,"nodeType":"UserDefinedTypeName","pathNode":{"id":58172,"name":"TrieNode","nameLocations":["3014:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"3014:8:78"},"referencedDeclaration":58092,"src":"3014:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":58174,"nodeType":"ArrayTypeName","src":"3014:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"id":58179,"initialValue":{"arguments":[{"id":58177,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58156,"src":"3052:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":58176,"name":"_parseProof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58553,"src":"3040:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory[] memory) pure returns (struct MerkleTrie.TrieNode memory[] memory)"}},"id":58178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:19:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3014:45:78"},{"assignments":[58181],"declarations":[{"constant":false,"id":58181,"mutability":"mutable","name":"key","nameLocation":"3082:3:78","nodeType":"VariableDeclaration","scope":58497,"src":"3069:16:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58180,"name":"bytes","nodeType":"ElementaryTypeName","src":"3069:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58186,"initialValue":{"arguments":[{"id":58184,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58153,"src":"3104:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58182,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"3088:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3094:9:78","memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":55133,"src":"3088:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":58185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3069:40:78"},{"assignments":[58188],"declarations":[{"constant":false,"id":58188,"mutability":"mutable","name":"currentNodeID","nameLocation":"3132:13:78","nodeType":"VariableDeclaration","scope":58497,"src":"3119:26:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58187,"name":"bytes","nodeType":"ElementaryTypeName","src":"3119:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58193,"initialValue":{"arguments":[{"id":58191,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58158,"src":"3165:5:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":58189,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3148:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":58190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3152:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"3148:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":58192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3148:23:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3119:52:78"},{"assignments":[58195],"declarations":[{"constant":false,"id":58195,"mutability":"mutable","name":"currentKeyIndex","nameLocation":"3189:15:78","nodeType":"VariableDeclaration","scope":58497,"src":"3181:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58194,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58197,"initialValue":{"hexValue":"30","id":58196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3207:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3181:27:78"},{"body":{"id":58491,"nodeType":"Block","src":"3333:5747:78","statements":[{"assignments":[58211],"declarations":[{"constant":false,"id":58211,"mutability":"mutable","name":"currentNode","nameLocation":"3363:11:78","nodeType":"VariableDeclaration","scope":58491,"src":"3347:27:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":58210,"nodeType":"UserDefinedTypeName","pathNode":{"id":58209,"name":"TrieNode","nameLocations":["3347:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"3347:8:78"},"referencedDeclaration":58092,"src":"3347:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"id":58215,"initialValue":{"baseExpression":{"id":58212,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58175,"src":"3377:5:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58214,"indexExpression":{"id":58213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"3383:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3377:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"VariableDeclarationStatement","src":"3347:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58217,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"3497:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":58218,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58181,"src":"3516:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3520:6:78","memberName":"length","nodeType":"MemberAccess","src":"3516:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3497:29:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b657920696e646578206578636565647320746f74616c206b6579206c656e677468","id":58221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3528:48:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""},"value":"MerkleTrie: key index exceeds total key length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""}],"id":58216,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3489:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:88:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58223,"nodeType":"ExpressionStatement","src":"3489:88:78"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58224,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"3596:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":58225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3596:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":58243,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"3901:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3913:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"3901:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3921:6:78","memberName":"length","nodeType":"MemberAccess","src":"3901:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":58246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3931:2:78","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3901:32:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":58274,"nodeType":"Block","src":"4236:193:78","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":58267,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"4336:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4348:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"4336:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58269,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"4357:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58265,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"4324:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4330:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"4324:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":58270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:47:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f64652068617368","id":58271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4373:40:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""},"value":"MerkleTrie: invalid internal node hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""}],"id":58264,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4316:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4316:98:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58273,"nodeType":"ExpressionStatement","src":"4316:98:78"}]},"id":58275,"nodeType":"IfStatement","src":"3897:532:78","trueBody":{"id":58263,"nodeType":"Block","src":"3935:295:78","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":58254,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"4097:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4109:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"4097:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":58253,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4087:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4087:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":58251,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4070:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":58252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4074:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"4070:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":58257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4070:48:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58258,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"4120:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58249,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"4058:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4064:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"4058:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":58259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:76:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e616c2068617368","id":58260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4156:41:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""},"value":"MerkleTrie: invalid large internal hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""}],"id":58248,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4029:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:186:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58262,"nodeType":"ExpressionStatement","src":"4029:186:78"}]}},"id":58276,"nodeType":"IfStatement","src":"3592:837:78","trueBody":{"id":58242,"nodeType":"Block","src":"3618:273:78","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":58233,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"3768:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3780:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"3768:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":58232,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3758:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58235,