{"abi":[],"bytecode":{"object":"0x","linkReferences":{}},"deployedBytecode":{"object":"0x","linkReferences":{}},"ast":{"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/utils/mem.sol","id":4593,"exportedSymbols":{"leftMask":[4592],"memcmp":[4555],"memcpy":[4463],"memeq":[4569],"memmove":[4493],"mload8":[4426],"mstoreN":[4481]},"nodeType":"SourceUnit","src":"33:4744:7","nodes":[{"id":4414,"nodeType":"PragmaDirective","src":"33:24:7","nodes":[],"literals":["solidity","^","0.8",".17"]},{"id":4426,"nodeType":"FunctionDefinition","src":"464:171:7","nodes":[],"body":{"id":4425,"nodeType":"Block","src":"519:116:7","nodes":[],"statements":[{"AST":{"nativeSrc":"573:43:7","nodeType":"YulBlock","src":"573:43:7","statements":[{"nativeSrc":"583:27:7","nodeType":"YulAssignment","src":"583:27:7","value":{"arguments":[{"kind":"number","nativeSrc":"596:1:7","nodeType":"YulLiteral","src":"596:1:7","type":"","value":"0"},{"arguments":[{"name":"ptr","nativeSrc":"605:3:7","nodeType":"YulIdentifier","src":"605:3:7"}],"functionName":{"name":"mload","nativeSrc":"599:5:7","nodeType":"YulIdentifier","src":"599:5:7"},"nativeSrc":"599:10:7","nodeType":"YulFunctionCall","src":"599:10:7"}],"functionName":{"name":"byte","nativeSrc":"591:4:7","nodeType":"YulIdentifier","src":"591:4:7"},"nativeSrc":"591:19:7","nodeType":"YulFunctionCall","src":"591:19:7"},"variableNames":[{"name":"item","nativeSrc":"583:4:7","nodeType":"YulIdentifier","src":"583:4:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4420,"isOffset":false,"isSlot":false,"src":"583:4:7","valueSize":1},{"declaration":4417,"isOffset":false,"isSlot":false,"src":"605:3:7","valueSize":1}],"id":4422,"nodeType":"InlineAssembly","src":"564:52:7"},{"expression":{"id":4423,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4420,"src":"628:4:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":4421,"id":4424,"nodeType":"Return","src":"621:11:7"}]},"documentation":{"id":4415,"nodeType":"StructuredDocumentation","src":"357:106:7","text":" @dev Load 1 byte from the pointer.\n The result is in the least significant byte, hence uint8."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mload8","nameLocation":"473:6:7","parameters":{"id":4418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4417,"mutability":"mutable","name":"ptr","nameLocation":"488:3:7","nodeType":"VariableDeclaration","scope":4426,"src":"480:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4416,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"479:13:7"},"returnParameters":{"id":4421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4420,"mutability":"mutable","name":"item","nameLocation":"513:4:7","nodeType":"VariableDeclaration","scope":4426,"src":"507:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4419,"name":"uint8","nodeType":"ElementaryTypeName","src":"507:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"506:12:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4463,"nodeType":"FunctionDefinition","src":"721:850:7","nodes":[],"body":{"id":4462,"nodeType":"Block","src":"791:780:7","nodes":[],"statements":[{"body":{"id":4453,"nodeType":"Block","src":"845:317:7","statements":[{"AST":{"nativeSrc":"907:54:7","nodeType":"YulBlock","src":"907:54:7","statements":[{"expression":{"arguments":[{"name":"ptrDest","nativeSrc":"928:7:7","nodeType":"YulIdentifier","src":"928:7:7"},{"arguments":[{"name":"ptrSrc","nativeSrc":"943:6:7","nodeType":"YulIdentifier","src":"943:6:7"}],"functionName":{"name":"mload","nativeSrc":"937:5:7","nodeType":"YulIdentifier","src":"937:5:7"},"nativeSrc":"937:13:7","nodeType":"YulFunctionCall","src":"937:13:7"}],"functionName":{"name":"mstore","nativeSrc":"921:6:7","nodeType":"YulIdentifier","src":"921:6:7"},"nativeSrc":"921:30:7","nodeType":"YulFunctionCall","src":"921:30:7"},"nativeSrc":"921:30:7","nodeType":"YulExpressionStatement","src":"921:30:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4429,"isOffset":false,"isSlot":false,"src":"928:7:7","valueSize":1},{"declaration":4431,"isOffset":false,"isSlot":false,"src":"943:6:7","valueSize":1}],"id":4439,"nodeType":"InlineAssembly","src":"898:63:7"},{"id":4452,"nodeType":"UncheckedBlock","src":"1056:100:7","statements":[{"expression":{"id":4442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4440,"name":"ptrDest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"1080:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1091:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1080:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4443,"nodeType":"ExpressionStatement","src":"1080:13:7"},{"expression":{"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4444,"name":"ptrSrc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"1107:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1117:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1107:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4447,"nodeType":"ExpressionStatement","src":"1107:12:7"},{"expression":{"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4448,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"1133:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3332","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1143:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1133:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4451,"nodeType":"ExpressionStatement","src":"1133:12:7"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4436,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"831:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":4437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"831:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4454,"nodeType":"WhileStatement","src":"824:338:7"},{"assignments":[4456],"declarations":[{"constant":false,"id":4456,"mutability":"mutable","name":"mask","nameLocation":"1250:4:7","nodeType":"VariableDeclaration","scope":4462,"src":"1242:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4455,"name":"uint256","nodeType":"ElementaryTypeName","src":"1242:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4460,"initialValue":{"arguments":[{"id":4458,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"1266:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4457,"name":"leftMask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"1257:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1257:16:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1242:31:7"},{"AST":{"nativeSrc":"1327:242:7","nodeType":"YulBlock","src":"1327:242:7","statements":[{"expression":{"arguments":[{"name":"ptrDest","nativeSrc":"1344:7:7","nodeType":"YulIdentifier","src":"1344:7:7"},{"arguments":[{"arguments":[{"arguments":[{"name":"ptrSrc","nativeSrc":"1434:6:7","nodeType":"YulIdentifier","src":"1434:6:7"}],"functionName":{"name":"mload","nativeSrc":"1428:5:7","nodeType":"YulIdentifier","src":"1428:5:7"},"nativeSrc":"1428:13:7","nodeType":"YulFunctionCall","src":"1428:13:7"},{"name":"mask","nativeSrc":"1443:4:7","nodeType":"YulIdentifier","src":"1443:4:7"}],"functionName":{"name":"and","nativeSrc":"1424:3:7","nodeType":"YulIdentifier","src":"1424:3:7"},"nativeSrc":"1424:24:7","nodeType":"YulFunctionCall","src":"1424:24:7"},{"arguments":[{"arguments":[{"name":"ptrDest","nativeSrc":"1519:7:7","nodeType":"YulIdentifier","src":"1519:7:7"}],"functionName":{"name":"mload","nativeSrc":"1513:5:7","nodeType":"YulIdentifier","src":"1513:5:7"},"nativeSrc":"1513:14:7","nodeType":"YulFunctionCall","src":"1513:14:7"},{"arguments":[{"name":"mask","nativeSrc":"1533:4:7","nodeType":"YulIdentifier","src":"1533:4:7"}],"functionName":{"name":"not","nativeSrc":"1529:3:7","nodeType":"YulIdentifier","src":"1529:3:7"},"nativeSrc":"1529:9:7","nodeType":"YulFunctionCall","src":"1529:9:7"}],"functionName":{"name":"and","nativeSrc":"1509:3:7","nodeType":"YulIdentifier","src":"1509:3:7"},"nativeSrc":"1509:30:7","nodeType":"YulFunctionCall","src":"1509:30:7"}],"functionName":{"name":"or","nativeSrc":"1365:2:7","nodeType":"YulIdentifier","src":"1365:2:7"},"nativeSrc":"1365:188:7","nodeType":"YulFunctionCall","src":"1365:188:7"}],"functionName":{"name":"mstore","nativeSrc":"1337:6:7","nodeType":"YulIdentifier","src":"1337:6:7"},"nativeSrc":"1337:226:7","nodeType":"YulFunctionCall","src":"1337:226:7"},"nativeSrc":"1337:226:7","nodeType":"YulExpressionStatement","src":"1337:226:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4456,"isOffset":false,"isSlot":false,"src":"1443:4:7","valueSize":1},{"declaration":4456,"isOffset":false,"isSlot":false,"src":"1533:4:7","valueSize":1},{"declaration":4429,"isOffset":false,"isSlot":false,"src":"1344:7:7","valueSize":1},{"declaration":4429,"isOffset":false,"isSlot":false,"src":"1519:7:7","valueSize":1},{"declaration":4431,"isOffset":false,"isSlot":false,"src":"1434:6:7","valueSize":1}],"id":4461,"nodeType":"InlineAssembly","src":"1318:251:7"}]},"documentation":{"id":4427,"nodeType":"StructuredDocumentation","src":"637:83:7","text":" @dev Copy `n` memory bytes.\n WARNING: Does not handle pointer overlap!"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"memcpy","nameLocation":"730:6:7","parameters":{"id":4434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4429,"mutability":"mutable","name":"ptrDest","nameLocation":"745:7:7","nodeType":"VariableDeclaration","scope":4463,"src":"737:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4428,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4431,"mutability":"mutable","name":"ptrSrc","nameLocation":"762:6:7","nodeType":"VariableDeclaration","scope":4463,"src":"754:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4430,"name":"uint256","nodeType":"ElementaryTypeName","src":"754:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4433,"mutability":"mutable","name":"length","nameLocation":"778:6:7","nodeType":"VariableDeclaration","scope":4463,"src":"770:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4432,"name":"uint256","nodeType":"ElementaryTypeName","src":"770:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"736:49:7"},"returnParameters":{"id":4435,"nodeType":"ParameterList","parameters":[],"src":"791:0:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4481,"nodeType":"FunctionDefinition","src":"1631:385:7","nodes":[],"body":{"id":4480,"nodeType":"Block","src":"1695:321:7","nodes":[],"statements":[{"assignments":[4474],"declarations":[{"constant":false,"id":4474,"mutability":"mutable","name":"mask","nameLocation":"1709:4:7","nodeType":"VariableDeclaration","scope":4480,"src":"1701:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1701:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4478,"initialValue":{"arguments":[{"id":4476,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4470,"src":"1725:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4475,"name":"leftMask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"1716:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1716:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1701:26:7"},{"AST":{"nativeSrc":"1781:233:7","nodeType":"YulBlock","src":"1781:233:7","statements":[{"expression":{"arguments":[{"name":"ptrDest","nativeSrc":"1798:7:7","nodeType":"YulIdentifier","src":"1798:7:7"},{"arguments":[{"arguments":[{"name":"data","nativeSrc":"1882:4:7","nodeType":"YulIdentifier","src":"1882:4:7"},{"name":"mask","nativeSrc":"1888:4:7","nodeType":"YulIdentifier","src":"1888:4:7"}],"functionName":{"name":"and","nativeSrc":"1878:3:7","nodeType":"YulIdentifier","src":"1878:3:7"},"nativeSrc":"1878:15:7","nodeType":"YulFunctionCall","src":"1878:15:7"},{"arguments":[{"arguments":[{"name":"ptrDest","nativeSrc":"1964:7:7","nodeType":"YulIdentifier","src":"1964:7:7"}],"functionName":{"name":"mload","nativeSrc":"1958:5:7","nodeType":"YulIdentifier","src":"1958:5:7"},"nativeSrc":"1958:14:7","nodeType":"YulFunctionCall","src":"1958:14:7"},{"arguments":[{"name":"mask","nativeSrc":"1978:4:7","nodeType":"YulIdentifier","src":"1978:4:7"}],"functionName":{"name":"not","nativeSrc":"1974:3:7","nodeType":"YulIdentifier","src":"1974:3:7"},"nativeSrc":"1974:9:7","nodeType":"YulFunctionCall","src":"1974:9:7"}],"functionName":{"name":"and","nativeSrc":"1954:3:7","nodeType":"YulIdentifier","src":"1954:3:7"},"nativeSrc":"1954:30:7","nodeType":"YulFunctionCall","src":"1954:30:7"}],"functionName":{"name":"or","nativeSrc":"1819:2:7","nodeType":"YulIdentifier","src":"1819:2:7"},"nativeSrc":"1819:179:7","nodeType":"YulFunctionCall","src":"1819:179:7"}],"functionName":{"name":"mstore","nativeSrc":"1791:6:7","nodeType":"YulIdentifier","src":"1791:6:7"},"nativeSrc":"1791:217:7","nodeType":"YulFunctionCall","src":"1791:217:7"},"nativeSrc":"1791:217:7","nodeType":"YulExpressionStatement","src":"1791:217:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4468,"isOffset":false,"isSlot":false,"src":"1882:4:7","valueSize":1},{"declaration":4474,"isOffset":false,"isSlot":false,"src":"1888:4:7","valueSize":1},{"declaration":4474,"isOffset":false,"isSlot":false,"src":"1978:4:7","valueSize":1},{"declaration":4466,"isOffset":false,"isSlot":false,"src":"1798:7:7","valueSize":1},{"declaration":4466,"isOffset":false,"isSlot":false,"src":"1964:7:7","valueSize":1}],"id":4479,"nodeType":"InlineAssembly","src":"1772:242:7"}]},"documentation":{"id":4464,"nodeType":"StructuredDocumentation","src":"1573:57:7","text":" @dev mstore `n` bytes (left-aligned) of `data`"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mstoreN","nameLocation":"1640:7:7","parameters":{"id":4471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4466,"mutability":"mutable","name":"ptrDest","nameLocation":"1656:7:7","nodeType":"VariableDeclaration","scope":4481,"src":"1648:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4468,"mutability":"mutable","name":"data","nameLocation":"1673:4:7","nodeType":"VariableDeclaration","scope":4481,"src":"1665:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1665:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4470,"mutability":"mutable","name":"n","nameLocation":"1687:1:7","nodeType":"VariableDeclaration","scope":4481,"src":"1679:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:42:7"},"returnParameters":{"id":4472,"nodeType":"ParameterList","parameters":[],"src":"1695:0:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4493,"nodeType":"FunctionDefinition","src":"2083:487:7","nodes":[],"body":{"id":4492,"nodeType":"Block","src":"2149:421:7","nodes":[],"statements":[{"AST":{"nativeSrc":"2203:365:7","nodeType":"YulBlock","src":"2203:365:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"2258:3:7","nodeType":"YulIdentifier","src":"2258:3:7"},"nativeSrc":"2258:5:7","nodeType":"YulFunctionCall","src":"2258:5:7"},{"kind":"number","nativeSrc":"2311:4:7","nodeType":"YulLiteral","src":"2311:4:7","type":"","value":"0x04"},{"name":"ptrSrc","nativeSrc":"2367:6:7","nodeType":"YulIdentifier","src":"2367:6:7"},{"name":"n","nativeSrc":"2406:1:7","nodeType":"YulIdentifier","src":"2406:1:7"},{"name":"ptrDest","nativeSrc":"2462:7:7","nodeType":"YulIdentifier","src":"2462:7:7"},{"name":"n","nativeSrc":"2500:1:7","nodeType":"YulIdentifier","src":"2500:1:7"}],"functionName":{"name":"staticcall","nativeSrc":"2230:10:7","nodeType":"YulIdentifier","src":"2230:10:7"},"nativeSrc":"2230:322:7","nodeType":"YulFunctionCall","src":"2230:322:7"}],"functionName":{"name":"pop","nativeSrc":"2213:3:7","nodeType":"YulIdentifier","src":"2213:3:7"},"nativeSrc":"2213:349:7","nodeType":"YulFunctionCall","src":"2213:349:7"},"nativeSrc":"2213:349:7","nodeType":"YulExpressionStatement","src":"2213:349:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4488,"isOffset":false,"isSlot":false,"src":"2406:1:7","valueSize":1},{"declaration":4488,"isOffset":false,"isSlot":false,"src":"2500:1:7","valueSize":1},{"declaration":4484,"isOffset":false,"isSlot":false,"src":"2462:7:7","valueSize":1},{"declaration":4486,"isOffset":false,"isSlot":false,"src":"2367:6:7","valueSize":1}],"id":4491,"nodeType":"InlineAssembly","src":"2194:374:7"}]},"documentation":{"id":4482,"nodeType":"StructuredDocumentation","src":"2018:64:7","text":" @dev Copy `n` memory bytes using identity precompile."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"memmove","nameLocation":"2092:7:7","parameters":{"id":4489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4484,"mutability":"mutable","name":"ptrDest","nameLocation":"2108:7:7","nodeType":"VariableDeclaration","scope":4493,"src":"2100:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4483,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4486,"mutability":"mutable","name":"ptrSrc","nameLocation":"2125:6:7","nodeType":"VariableDeclaration","scope":4493,"src":"2117:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4488,"mutability":"mutable","name":"n","nameLocation":"2141:1:7","nodeType":"VariableDeclaration","scope":4493,"src":"2133:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4487,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2099:44:7"},"returnParameters":{"id":4490,"nodeType":"ParameterList","parameters":[],"src":"2149:0:7"},"scope":4593,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4555,"nodeType":"FunctionDefinition","src":"2782:1060:7","nodes":[],"body":{"id":4554,"nodeType":"Block","src":"2866:976:7","nodes":[],"statements":[{"body":{"id":4540,"nodeType":"Block","src":"2934:545:7","statements":[{"id":4539,"nodeType":"UncheckedBlock","src":"3025:448:7","statements":[{"assignments":[4509],"declarations":[{"constant":false,"id":4509,"mutability":"mutable","name":"nHalf","nameLocation":"3057:5:7","nodeType":"VariableDeclaration","scope":4539,"src":"3049:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3049:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4513,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4510,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4500,"src":"3065:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3069:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3065:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3049:21:7"},{"condition":{"arguments":[{"id":4515,"name":"ptrSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4496,"src":"3094:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4516,"name":"ptrOther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4498,"src":"3103:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4517,"name":"nHalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"3113:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4514,"name":"memeq","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"3088:5:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256,uint256) pure returns (bool)"}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4537,"nodeType":"Block","src":"3420:43:7","statements":[{"expression":{"id":4535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4533,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4500,"src":"3438:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4534,"name":"nHalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"3443:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3438:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4536,"nodeType":"ExpressionStatement","src":"3438:10:7"}]},"id":4538,"nodeType":"IfStatement","src":"3084:379:7","trueBody":{"id":4532,"nodeType":"Block","src":"3121:293:7","statements":[{"expression":{"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4519,"name":"ptrSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4496,"src":"3139:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4520,"name":"nHalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"3150:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3139:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4522,"nodeType":"ExpressionStatement","src":"3139:16:7"},{"expression":{"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4523,"name":"ptrOther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4498,"src":"3173:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4524,"name":"nHalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"3185:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3173:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4526,"nodeType":"ExpressionStatement","src":"3173:17:7"},{"expression":{"id":4529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4527,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4500,"src":"3291:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4528,"name":"nHalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"3296:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3291:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4530,"nodeType":"ExpressionStatement","src":"3291:10:7"},{"id":4531,"nodeType":"Continue","src":"3391:8:7"}]}}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4505,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4500,"src":"2925:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":4506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2930:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2925:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4541,"nodeType":"WhileStatement","src":"2918:561:7"},{"assignments":[4543],"declarations":[{"constant":false,"id":4543,"mutability":"mutable","name":"mask","nameLocation":"3493:4:7","nodeType":"VariableDeclaration","scope":4554,"src":"3485:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4542,"name":"uint256","nodeType":"ElementaryTypeName","src":"3485:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4547,"initialValue":{"arguments":[{"id":4545,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4500,"src":"3509:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4544,"name":"leftMask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"3500:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3500:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3485:26:7"},{"assignments":[4549],"declarations":[{"constant":false,"id":4549,"mutability":"mutable","name":"diff","nameLocation":"3524:4:7","nodeType":"VariableDeclaration","scope":4554,"src":"3517:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4548,"name":"int256","nodeType":"ElementaryTypeName","src":"3517:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4550,"nodeType":"VariableDeclarationStatement","src":"3517:11:7"},{"AST":{"nativeSrc":"3582:241:7","nodeType":"YulBlock","src":"3582:241:7","statements":[{"nativeSrc":"3701:116:7","nodeType":"YulAssignment","src":"3701:116:7","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3730:1:7","nodeType":"YulLiteral","src":"3730:1:7","type":"","value":"8"},{"arguments":[{"arguments":[{"name":"ptrSelf","nativeSrc":"3743:7:7","nodeType":"YulIdentifier","src":"3743:7:7"}],"functionName":{"name":"mload","nativeSrc":"3737:5:7","nodeType":"YulIdentifier","src":"3737:5:7"},"nativeSrc":"3737:14:7","nodeType":"YulFunctionCall","src":"3737:14:7"},{"name":"mask","nativeSrc":"3753:4:7","nodeType":"YulIdentifier","src":"3753:4:7"}],"functionName":{"name":"and","nativeSrc":"3733:3:7","nodeType":"YulIdentifier","src":"3733:3:7"},"nativeSrc":"3733:25:7","nodeType":"YulFunctionCall","src":"3733:25:7"}],"functionName":{"name":"shr","nativeSrc":"3726:3:7","nodeType":"YulIdentifier","src":"3726:3:7"},"nativeSrc":"3726:33:7","nodeType":"YulFunctionCall","src":"3726:33:7"},{"arguments":[{"kind":"number","nativeSrc":"3777:1:7","nodeType":"YulLiteral","src":"3777:1:7","type":"","value":"8"},{"arguments":[{"arguments":[{"name":"ptrOther","nativeSrc":"3790:8:7","nodeType":"YulIdentifier","src":"3790:8:7"}],"functionName":{"name":"mload","nativeSrc":"3784:5:7","nodeType":"YulIdentifier","src":"3784:5:7"},"nativeSrc":"3784:15:7","nodeType":"YulFunctionCall","src":"3784:15:7"},{"name":"mask","nativeSrc":"3801:4:7","nodeType":"YulIdentifier","src":"3801:4:7"}],"functionName":{"name":"and","nativeSrc":"3780:3:7","nodeType":"YulIdentifier","src":"3780:3:7"},"nativeSrc":"3780:26:7","nodeType":"YulFunctionCall","src":"3780:26:7"}],"functionName":{"name":"shr","nativeSrc":"3773:3:7","nodeType":"YulIdentifier","src":"3773:3:7"},"nativeSrc":"3773:34:7","nodeType":"YulFunctionCall","src":"3773:34:7"}],"functionName":{"name":"sub","nativeSrc":"3709:3:7","nodeType":"YulIdentifier","src":"3709:3:7"},"nativeSrc":"3709:108:7","nodeType":"YulFunctionCall","src":"3709:108:7"},"variableNames":[{"name":"diff","nativeSrc":"3701:4:7","nodeType":"YulIdentifier","src":"3701:4:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4549,"isOffset":false,"isSlot":false,"src":"3701:4:7","valueSize":1},{"declaration":4543,"isOffset":false,"isSlot":false,"src":"3753:4:7","valueSize":1},{"declaration":4543,"isOffset":false,"isSlot":false,"src":"3801:4:7","valueSize":1},{"declaration":4498,"isOffset":false,"isSlot":false,"src":"3790:8:7","valueSize":1},{"declaration":4496,"isOffset":false,"isSlot":false,"src":"3743:7:7","valueSize":1}],"id":4551,"nodeType":"InlineAssembly","src":"3573:250:7"},{"expression":{"id":4552,"name":"diff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"3835:4:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4504,"id":4553,"nodeType":"Return","src":"3828:11:7"}]},"documentation":{"id":4494,"nodeType":"StructuredDocumentation","src":"2572:209:7","text":" @dev Compare `n` memory bytes lexicographically.\n Returns 0 for equal, < 0 for less than and > 0 for greater than.\n https://doc.rust-lang.org/std/cmp/trait.Ord.html#lexicographical-comparison"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"memcmp","nameLocation":"2791:6:7","parameters":{"id":4501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4496,"mutability":"mutable","name":"ptrSelf","nameLocation":"2806:7:7","nodeType":"VariableDeclaration","scope":4555,"src":"2798:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4495,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4498,"mutability":"mutable","name":"ptrOther","nameLocation":"2823:8:7","nodeType":"VariableDeclaration","scope":4555,"src":"2815:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4497,"name":"uint256","nodeType":"ElementaryTypeName","src":"2815:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4500,"mutability":"mutable","name":"n","nameLocation":"2841:1:7","nodeType":"VariableDeclaration","scope":4555,"src":"2833:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2833:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2797:46:7"},"returnParameters":{"id":4504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4555,"src":"2858:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4502,"name":"int256","nodeType":"ElementaryTypeName","src":"2858:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2857:8:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4569,"nodeType":"FunctionDefinition","src":"4073:219:7","nodes":[],"body":{"id":4568,"nodeType":"Block","src":"4161:131:7","nodes":[],"statements":[{"AST":{"nativeSrc":"4215:75:7","nodeType":"YulBlock","src":"4215:75:7","statements":[{"nativeSrc":"4225:59:7","nodeType":"YulAssignment","src":"4225:59:7","value":{"arguments":[{"arguments":[{"name":"ptrSelf","nativeSrc":"4248:7:7","nodeType":"YulIdentifier","src":"4248:7:7"},{"name":"n","nativeSrc":"4257:1:7","nodeType":"YulIdentifier","src":"4257:1:7"}],"functionName":{"name":"keccak256","nativeSrc":"4238:9:7","nodeType":"YulIdentifier","src":"4238:9:7"},"nativeSrc":"4238:21:7","nodeType":"YulFunctionCall","src":"4238:21:7"},{"arguments":[{"name":"ptrOther","nativeSrc":"4271:8:7","nodeType":"YulIdentifier","src":"4271:8:7"},{"name":"n","nativeSrc":"4281:1:7","nodeType":"YulIdentifier","src":"4281:1:7"}],"functionName":{"name":"keccak256","nativeSrc":"4261:9:7","nodeType":"YulIdentifier","src":"4261:9:7"},"nativeSrc":"4261:22:7","nodeType":"YulFunctionCall","src":"4261:22:7"}],"functionName":{"name":"eq","nativeSrc":"4235:2:7","nodeType":"YulIdentifier","src":"4235:2:7"},"nativeSrc":"4235:49:7","nodeType":"YulFunctionCall","src":"4235:49:7"},"variableNames":[{"name":"result","nativeSrc":"4225:6:7","nodeType":"YulIdentifier","src":"4225:6:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4562,"isOffset":false,"isSlot":false,"src":"4257:1:7","valueSize":1},{"declaration":4562,"isOffset":false,"isSlot":false,"src":"4281:1:7","valueSize":1},{"declaration":4560,"isOffset":false,"isSlot":false,"src":"4271:8:7","valueSize":1},{"declaration":4558,"isOffset":false,"isSlot":false,"src":"4248:7:7","valueSize":1},{"declaration":4565,"isOffset":false,"isSlot":false,"src":"4225:6:7","valueSize":1}],"id":4567,"nodeType":"InlineAssembly","src":"4206:84:7"}]},"documentation":{"id":4556,"nodeType":"StructuredDocumentation","src":"3844:228:7","text":" @dev Returns true if `n` memory bytes are equal.\n It's faster (up to 4x) than memcmp, especially on medium byte lengths like 32-320.\n The benefit gets smaller for larger lengths, for 10000 it's only 30% faster."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"memeq","nameLocation":"4082:5:7","parameters":{"id":4563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4558,"mutability":"mutable","name":"ptrSelf","nameLocation":"4096:7:7","nodeType":"VariableDeclaration","scope":4569,"src":"4088:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4560,"mutability":"mutable","name":"ptrOther","nameLocation":"4113:8:7","nodeType":"VariableDeclaration","scope":4569,"src":"4105:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4105:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4562,"mutability":"mutable","name":"n","nameLocation":"4131:1:7","nodeType":"VariableDeclaration","scope":4569,"src":"4123:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4561,"name":"uint256","nodeType":"ElementaryTypeName","src":"4123:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:46:7"},"returnParameters":{"id":4566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4565,"mutability":"mutable","name":"result","nameLocation":"4153:6:7","nodeType":"VariableDeclaration","scope":4569,"src":"4148:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4564,"name":"bool","nodeType":"ElementaryTypeName","src":"4148:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4147:13:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4592,"nodeType":"FunctionDefinition","src":"4620:157:7","nodes":[],"body":{"id":4591,"nodeType":"Block","src":"4677:100:7","nodes":[],"statements":[{"id":4590,"nodeType":"UncheckedBlock","src":"4683:92:7","statements":[{"expression":{"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"4710:58:7","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4730:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4578,"name":"uint256","nodeType":"ElementaryTypeName","src":"4730:7:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4577,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4725:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4725:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4739:3:7","memberName":"max","nodeType":"MemberAccess","src":"4725:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4582,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"4747:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":4583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4756:1:7","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"4747:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4746:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4725:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4587,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4711:57:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4576,"id":4589,"nodeType":"Return","src":"4703:65:7"}]}]},"documentation":{"id":4570,"nodeType":"StructuredDocumentation","src":"4294:325:7","text":" @dev Left-aligned byte mask (e.g. for partial mload/mstore).\n For length >= 32 returns type(uint256).max\n length 0:   0x000000...000000\n length 1:   0xff0000...000000\n length 2:   0xffff00...000000\n ...\n length 30:  0xffffff...ff0000\n length 31:  0xffffff...ffff00\n length 32+: 0xffffff...ffffff"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"leftMask","nameLocation":"4629:8:7","parameters":{"id":4573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4572,"mutability":"mutable","name":"length","nameLocation":"4646:6:7","nodeType":"VariableDeclaration","scope":4592,"src":"4638:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4571,"name":"uint256","nodeType":"ElementaryTypeName","src":"4638:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4637:16:7"},"returnParameters":{"id":4576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4592,"src":"4668:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4574,"name":"uint256","nodeType":"ElementaryTypeName","src":"4668:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4667:9:7"},"scope":4593,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"license":"MIT"},"id":7}