{ "contractName": "Strings", "abi": [], "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]}},\"version\":1}", "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2e3c639b25fe7dd66051b150ad6d4fc54abc0bdf00877d2fe20dbd83f94120864736f6c63430008130033", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2e3c639b25fe7dd66051b150ad6d4fc54abc0bdf00877d2fe20dbd83f94120864736f6c63430008130033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [], "sourceMap": "220:2559:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "220:2559:8:-:0;;;;;;;;", "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n", "sourcePath": "@openzeppelin/contracts/utils/Strings.sol", "ast": { "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "exportedSymbols": { "Math": [ 2691 ], "SignedMath": [ 2796 ], "Strings": [ 1789 ] }, "id": 1790, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 1562, "literals": [ "solidity", "^", "0.8", ".0" ], "nodeType": "PragmaDirective", "src": "101:23:8" }, { "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol", "file": "./math/Math.sol", "id": 1563, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1790, "sourceUnit": 2692, "src": "126:25:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol", "file": "./math/SignedMath.sol", "id": 1564, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1790, "sourceUnit": 2797, "src": "152:31:8", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [], "canonicalName": "Strings", "contractDependencies": [], "contractKind": "library", "documentation": { "id": 1565, "nodeType": "StructuredDocumentation", "src": "185:34:8", "text": " @dev String operations." }, "fullyImplemented": true, "id": 1789, "linearizedBaseContracts": [ 1789 ], "name": "Strings", "nameLocation": "228:7:8", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1568, "mutability": "constant", "name": "_SYMBOLS", "nameLocation": "267:8:8", "nodeType": "VariableDeclaration", "scope": 1789, "src": "242:54:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes16", "typeString": "bytes16" }, "typeName": { "id": 1566, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "242:7:8", "typeDescriptions": { "typeIdentifier": "t_bytes16", "typeString": "bytes16" } }, "value": { "hexValue": "30313233343536373839616263646566", "id": 1567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "278:18:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\"" }, "value": "0123456789abcdef" }, "visibility": "private" }, { "constant": true, "id": 1571, "mutability": "constant", "name": "_ADDRESS_LENGTH", "nameLocation": "325:15:8", "nodeType": "VariableDeclaration", "scope": 1789, "src": "302:43:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1569, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "302:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "3230", "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "343:2:8", "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "visibility": "private" }, { "body": { "id": 1618, "nodeType": "Block", "src": "518:625:8", "statements": [ { "id": 1617, "nodeType": "UncheckedBlock", "src": "528:609:8", "statements": [ { "assignments": [ 1580 ], "declarations": [ { "constant": false, "id": 1580, "mutability": "mutable", "name": "length", "nameLocation": "560:6:8", "nodeType": "VariableDeclaration", "scope": 1617, "src": "552:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1579, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "552:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1587, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 1583, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, "src": "580:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1581, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2691, "src": "569:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$2691_$", "typeString": "type(library Math)" } }, "id": 1582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "574:5:8", "memberName": "log10", "nodeType": "MemberAccess", "referencedDeclaration": 2528, "src": "569:10:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)" } }, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "569:17:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 1585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "589:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "569:21:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "552:38:8" }, { "assignments": [ 1589 ], "declarations": [ { "constant": false, "id": 1589, "mutability": "mutable", "name": "buffer", "nameLocation": "618:6:8", "nodeType": "VariableDeclaration", "scope": 1617, "src": "604:20:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1588, "name": "string", "nodeType": "ElementaryTypeName", "src": "604:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "id": 1594, "initialValue": { "arguments": [ { "id": 1592, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1580, "src": "638:6:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1591, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "627:10:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure returns (string memory)" }, "typeName": { "id": 1590, "name": "string", "nodeType": "ElementaryTypeName", "src": "631:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } } }, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "627:18:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "604:41:8" }, { "assignments": [ 1596 ], "declarations": [ { "constant": false, "id": 1596, "mutability": "mutable", "name": "ptr", "nameLocation": "667:3:8", "nodeType": "VariableDeclaration", "scope": 1617, "src": "659:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1595, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "659:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1597, "nodeType": "VariableDeclarationStatement", "src": "659:11:8" }, { "AST": { "nodeType": "YulBlock", "src": "740:67:8", "statements": [ { "nodeType": "YulAssignment", "src": "758:35:8", "value": { "arguments": [ { "name": "buffer", "nodeType": "YulIdentifier", "src": "769:6:8" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "781:2:8", "type": "", "value": "32" }, { "name": "length", "nodeType": "YulIdentifier", "src": "785:6:8" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "777:3:8" }, "nodeType": "YulFunctionCall", "src": "777:15:8" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "765:3:8" }, "nodeType": "YulFunctionCall", "src": "765:28:8" }, "variableNames": [ { "name": "ptr", "nodeType": "YulIdentifier", "src": "758:3:8" } ] } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [ { "declaration": 1589, "isOffset": false, "isSlot": false, "src": "769:6:8", "valueSize": 1 }, { "declaration": 1580, "isOffset": false, "isSlot": false, "src": "785:6:8", "valueSize": 1 }, { "declaration": 1596, "isOffset": false, "isSlot": false, "src": "758:3:8", "valueSize": 1 } ], "id": 1598, "nodeType": "InlineAssembly", "src": "731:76:8" }, { "body": { "id": 1613, "nodeType": "Block", "src": "833:267:8", "statements": [ { "expression": { "id": 1601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "851:5:8", "subExpression": { "id": 1600, "name": "ptr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1596, "src": "851:3:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1602, "nodeType": "ExpressionStatement", "src": "851:5:8" }, { "AST": { "nodeType": "YulBlock", "src": "934:84:8", "statements": [ { "expression": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", "src": "964:3:8" }, { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "978:5:8" }, { "kind": "number", "nodeType": "YulLiteral", "src": "985:2:8", "type": "", "value": "10" } ], "functionName": { "name": "mod", "nodeType": "YulIdentifier", "src": "974:3:8" }, "nodeType": "YulFunctionCall", "src": "974:14:8" }, { "name": "_SYMBOLS", "nodeType": "YulIdentifier", "src": "990:8:8" } ], "functionName": { "name": "byte", "nodeType": "YulIdentifier", "src": "969:4:8" }, "nodeType": "YulFunctionCall", "src": "969:30:8" } ], "functionName": { "name": "mstore8", "nodeType": "YulIdentifier", "src": "956:7:8" }, "nodeType": "YulFunctionCall", "src": "956:44:8" }, "nodeType": "YulExpressionStatement", "src": "956:44:8" } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [ { "declaration": 1568, "isOffset": false, "isSlot": false, "src": "990:8:8", "valueSize": 1 }, { "declaration": 1596, "isOffset": false, "isSlot": false, "src": "964:3:8", "valueSize": 1 }, { "declaration": 1574, "isOffset": false, "isSlot": false, "src": "978:5:8", "valueSize": 1 } ], "id": 1603, "nodeType": "InlineAssembly", "src": "925:93:8" }, { "expression": { "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1604, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, "src": "1035:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "/=", "rightHandSide": { "hexValue": "3130", "id": 1605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1044:2:8", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "src": "1035:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1607, "nodeType": "ExpressionStatement", "src": "1035:11:8" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1608, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, "src": "1068:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1609, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1077:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1068:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1612, "nodeType": "IfStatement", "src": "1064:21:8", "trueBody": { "id": 1611, "nodeType": "Break", "src": "1080:5:8" } } ] }, "condition": { "hexValue": "74727565", "id": 1599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "827:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "id": 1614, "nodeType": "WhileStatement", "src": "820:280:8" }, { "expression": { "id": 1615, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "1120:6:8", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 1578, "id": 1616, "nodeType": "Return", "src": "1113:13:8" } ] } ] }, "documentation": { "id": 1572, "nodeType": "StructuredDocumentation", "src": "352:90:8", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation." }, "id": 1619, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "456:8:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1575, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1574, "mutability": "mutable", "name": "value", "nameLocation": "473:5:8", "nodeType": "VariableDeclaration", "scope": 1619, "src": "465:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1573, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "465:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "464:15:8" }, "returnParameters": { "id": 1578, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1577, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1619, "src": "503:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1576, "name": "string", "nodeType": "ElementaryTypeName", "src": "503:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "502:15:8" }, "scope": 1789, "src": "447:696:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 1646, "nodeType": "Block", "src": "1313:103:8", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "condition": { "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 1633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1631, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "1354:5:8", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "hexValue": "30", "id": 1632, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1362:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1354:9:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "hexValue": "", "id": 1635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1372:2:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1354:20:8", "trueExpression": { "hexValue": "2d", "id": 1634, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1366:3:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", "typeString": "literal_string \"-\"" }, "value": "-" }, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "arguments": [ { "arguments": [ { "id": 1640, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "1400:5:8", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_int256", "typeString": "int256" } ], "expression": { "id": 1638, "name": "SignedMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2796, "src": "1385:10:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SignedMath_$2796_$", "typeString": "type(library SignedMath)" } }, "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1396:3:8", "memberName": "abs", "nodeType": "MemberAccess", "referencedDeclaration": 2795, "src": "1385:14:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$", "typeString": "function (int256) pure returns (uint256)" } }, "id": 1641, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1385:21:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1637, "name": "toString", "nodeType": "Identifier", "overloadedDeclarations": [ 1619, 1647 ], "referencedDeclaration": 1619, "src": "1376:8:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure returns (string memory)" } }, "id": 1642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1376:31:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "id": 1629, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967295, "src": "1337:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 1630, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1341:12:8", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1337:16:8", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1337:71:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1628, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1330:6:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 1627, "name": "string", "nodeType": "ElementaryTypeName", "src": "1330:6:8", "typeDescriptions": {} } }, "id": 1644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1330:79:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 1626, "id": 1645, "nodeType": "Return", "src": "1323:86:8" } ] }, "documentation": { "id": 1620, "nodeType": "StructuredDocumentation", "src": "1149:89:8", "text": " @dev Converts a `int256` to its ASCII `string` decimal representation." }, "id": 1647, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "1252:8:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1623, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1622, "mutability": "mutable", "name": "value", "nameLocation": "1268:5:8", "nodeType": "VariableDeclaration", "scope": 1647, "src": "1261:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 1621, "name": "int256", "nodeType": "ElementaryTypeName", "src": "1261:6:8", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "visibility": "internal" } ], "src": "1260:14:8" }, "returnParameters": { "id": 1626, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1625, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1647, "src": "1298:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1624, "name": "string", "nodeType": "ElementaryTypeName", "src": "1298:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1297:15:8" }, "scope": 1789, "src": "1243:173:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 1666, "nodeType": "Block", "src": "1595:100:8", "statements": [ { "id": 1665, "nodeType": "UncheckedBlock", "src": "1605:84:8", "statements": [ { "expression": { "arguments": [ { "id": 1656, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "1648:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 1659, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "1667:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1657, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2691, "src": "1655:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$2691_$", "typeString": "type(library Math)" } }, "id": 1658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1660:6:8", "memberName": "log256", "nodeType": "MemberAccess", "referencedDeclaration": 2651, "src": "1655:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)" } }, "id": 1660, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1655:18:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 1661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1676:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1655:22:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1655, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [ 1667, 1743, 1763 ], "referencedDeclaration": 1743, "src": "1636:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)" } }, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1636:42:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 1654, "id": 1664, "nodeType": "Return", "src": "1629:49:8" } ] } ] }, "documentation": { "id": 1648, "nodeType": "StructuredDocumentation", "src": "1422:94:8", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation." }, "id": 1667, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1530:11:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1651, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1650, "mutability": "mutable", "name": "value", "nameLocation": "1550:5:8", "nodeType": "VariableDeclaration", "scope": 1667, "src": "1542:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1542:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1541:15:8" }, "returnParameters": { "id": 1654, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1653, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1667, "src": "1580:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1652, "name": "string", "nodeType": "ElementaryTypeName", "src": "1580:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1579:15:8" }, "scope": 1789, "src": "1521:174:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 1742, "nodeType": "Block", "src": "1908:347:8", "statements": [ { "assignments": [ 1678 ], "declarations": [ { "constant": false, "id": 1678, "mutability": "mutable", "name": "buffer", "nameLocation": "1931:6:8", "nodeType": "VariableDeclaration", "scope": 1742, "src": "1918:19:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1677, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1918:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "id": 1687, "initialValue": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", "id": 1681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1950:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "id": 1682, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1672, "src": "1954:6:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1950:10:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "32", "id": 1684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1963:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "1950:14:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1680, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1940:9:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)" }, "typeName": { "id": 1679, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1944:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, "id": 1686, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1940:25:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "1918:47:8" }, { "expression": { "id": 1692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1688, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "1975:6:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1690, "indexExpression": { "hexValue": "30", "id": 1689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1982:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1975:9:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "30", "id": 1691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1987:3:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\"" }, "value": "0" }, "src": "1975:15:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "id": 1693, "nodeType": "ExpressionStatement", "src": "1975:15:8" }, { "expression": { "id": 1698, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1694, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "2000:6:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1696, "indexExpression": { "hexValue": "31", "id": 1695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2007:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2000:9:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "78", "id": 1697, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2012:3:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\"" }, "value": "x" }, "src": "2000:15:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "id": 1699, "nodeType": "ExpressionStatement", "src": "2000:15:8" }, { "body": { "id": 1728, "nodeType": "Block", "src": "2070:83:8", "statements": [ { "expression": { "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1714, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "2084:6:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1716, "indexExpression": { "id": 1715, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1701, "src": "2091:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2084:9:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "baseExpression": { "id": 1717, "name": "_SYMBOLS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1568, "src": "2096:8:8", "typeDescriptions": { "typeIdentifier": "t_bytes16", "typeString": "bytes16" } }, "id": 1721, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1718, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2105:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": { "hexValue": "307866", "id": 1719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2113:3:8", "typeDescriptions": { "typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15" }, "value": "0xf" }, "src": "2105:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2096:21:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "src": "2084:33:8", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "id": 1723, "nodeType": "ExpressionStatement", "src": "2084:33:8" }, { "expression": { "id": 1726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1724, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2131:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": { "hexValue": "34", "id": 1725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2141:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "2131:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1727, "nodeType": "ExpressionStatement", "src": "2131:11:8" } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1708, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1701, "src": "2058:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "31", "id": 1709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2062:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2058:5:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1729, "initializationExpression": { "assignments": [ 1701 ], "declarations": [ { "constant": false, "id": 1701, "mutability": "mutable", "name": "i", "nameLocation": "2038:1:8", "nodeType": "VariableDeclaration", "scope": 1729, "src": "2030:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2030:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1707, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", "id": 1702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2042:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "id": 1703, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1672, "src": "2046:6:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2042:10:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 1705, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2055:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2042:14:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2030:26:8" }, "loopExpression": { "expression": { "id": 1712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "2065:3:8", "subExpression": { "id": 1711, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1701, "src": "2067:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1713, "nodeType": "ExpressionStatement", "src": "2065:3:8" }, "nodeType": "ForStatement", "src": "2025:128:8" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1731, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2170:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1732, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2179:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2170:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", "id": 1734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2182:34:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\"" }, "value": "Strings: hex length insufficient" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\"" } ], "id": 1730, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2162:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2162:55:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1736, "nodeType": "ExpressionStatement", "src": "2162:55:8" }, { "expression": { "arguments": [ { "id": 1739, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "2241:6:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1738, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2234:6:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 1737, "name": "string", "nodeType": "ElementaryTypeName", "src": "2234:6:8", "typeDescriptions": {} } }, "id": 1740, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2234:14:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 1676, "id": 1741, "nodeType": "Return", "src": "2227:21:8" } ] }, "documentation": { "id": 1668, "nodeType": "StructuredDocumentation", "src": "1701:112:8", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length." }, "id": 1743, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1827:11:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1673, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1670, "mutability": "mutable", "name": "value", "nameLocation": "1847:5:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "1839:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1669, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1839:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1672, "mutability": "mutable", "name": "length", "nameLocation": "1862:6:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "1854:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1854:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1838:31:8" }, "returnParameters": { "id": 1676, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1675, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1743, "src": "1893:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1674, "name": "string", "nodeType": "ElementaryTypeName", "src": "1893:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1892:15:8" }, "scope": 1789, "src": "1818:437:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 1762, "nodeType": "Block", "src": "2480:76:8", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "id": 1756, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1746, "src": "2525:4:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1755, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2517:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { "id": 1754, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2517:7:8", "typeDescriptions": {} } }, "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2517:13:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "id": 1753, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2509:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1752, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2509:7:8", "typeDescriptions": {} } }, "id": 1758, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2509:22:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 1759, "name": "_ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1571, "src": "2533:15:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1751, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [ 1667, 1743, 1763 ], "referencedDeclaration": 1743, "src": "2497:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)" } }, "id": 1760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2497:52:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 1750, "id": 1761, "nodeType": "Return", "src": "2490:59:8" } ] }, "documentation": { "id": 1744, "nodeType": "StructuredDocumentation", "src": "2261:141:8", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation." }, "id": 1763, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2416:11:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1747, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1746, "mutability": "mutable", "name": "addr", "nameLocation": "2436:4:8", "nodeType": "VariableDeclaration", "scope": 1763, "src": "2428:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1745, "name": "address", "nodeType": "ElementaryTypeName", "src": "2428:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2427:14:8" }, "returnParameters": { "id": 1750, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1749, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1763, "src": "2465:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1748, "name": "string", "nodeType": "ElementaryTypeName", "src": "2465:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2464:15:8" }, "scope": 1789, "src": "2407:149:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 1787, "nodeType": "Block", "src": "2711:66:8", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 1785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "arguments": [ { "id": 1776, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1766, "src": "2744:1:8", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 1775, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2738:5:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 1774, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2738:5:8", "typeDescriptions": {} } }, "id": 1777, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2738:8:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1773, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, "src": "2728:9:8", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 1778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2728:19:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "arguments": [ { "id": 1782, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1768, "src": "2767:1:8", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 1781, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2761:5:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 1780, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2761:5:8", "typeDescriptions": {} } }, "id": 1783, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2761:8:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1779, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, "src": "2751:9:8", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2751:19:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "2728:42:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1772, "id": 1786, "nodeType": "Return", "src": "2721:49:8" } ] }, "documentation": { "id": 1764, "nodeType": "StructuredDocumentation", "src": "2562:66:8", "text": " @dev Returns true if the two strings are equal." }, "id": 1788, "implemented": true, "kind": "function", "modifiers": [], "name": "equal", "nameLocation": "2642:5:8", "nodeType": "FunctionDefinition", "parameters": { "id": 1769, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1766, "mutability": "mutable", "name": "a", "nameLocation": "2662:1:8", "nodeType": "VariableDeclaration", "scope": 1788, "src": "2648:15:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1765, "name": "string", "nodeType": "ElementaryTypeName", "src": "2648:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 1768, "mutability": "mutable", "name": "b", "nameLocation": "2679:1:8", "nodeType": "VariableDeclaration", "scope": 1788, "src": "2665:15:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1767, "name": "string", "nodeType": "ElementaryTypeName", "src": "2665:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2647:34:8" }, "returnParameters": { "id": 1772, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1771, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1788, "src": "2705:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1770, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2705:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "2704:6:8" }, "scope": 1789, "src": "2633:144:8", "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "scope": 1790, "src": "220:2559:8", "usedErrors": [] } ], "src": "101:2679:8" }, "compiler": { "name": "solc", "version": "0.8.19+commit.7dd6d404.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.4.13", "updatedAt": "2023-06-04T09:28:33.986Z", "devdoc": { "details": "String operations.", "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }