secure-transac-contracts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/build/contracts/AccessControl.json +4579 -0
  2. package/build/contracts/Context.json +356 -0
  3. package/build/contracts/CreditSystem.json +6037 -0
  4. package/build/contracts/ECDSA.json +4734 -0
  5. package/build/contracts/EIP712.json +3021 -0
  6. package/build/contracts/ERC165.json +352 -0
  7. package/build/contracts/ERC20.json +6816 -0
  8. package/build/contracts/ERC20Permit.json +2658 -0
  9. package/build/contracts/ERC721.json +12779 -0
  10. package/build/contracts/ERC721Utils.json +1058 -0
  11. package/build/contracts/Groth16Verifier.json +6298 -0
  12. package/build/contracts/Guardian.json +1116 -0
  13. package/build/contracts/IERC1155Errors.json +1687 -0
  14. package/build/contracts/IERC165.json +197 -0
  15. package/build/contracts/IERC20.json +1162 -0
  16. package/build/contracts/IERC20Errors.json +1662 -0
  17. package/build/contracts/IERC20Metadata.json +574 -0
  18. package/build/contracts/IERC20Permit.json +546 -0
  19. package/build/contracts/IERC5267.json +392 -0
  20. package/build/contracts/IERC721.json +1729 -0
  21. package/build/contracts/IERC721Errors.json +1694 -0
  22. package/build/contracts/IERC721Metadata.json +728 -0
  23. package/build/contracts/IERC721Receiver.json +296 -0
  24. package/build/contracts/IGuardian.json +215 -0
  25. package/build/contracts/ITrustRegistry.json +6767 -0
  26. package/build/contracts/IdentityVault.json +11584 -0
  27. package/build/contracts/Math.json +23115 -0
  28. package/build/contracts/MessageHashUtils.json +1668 -0
  29. package/build/contracts/Nonces.json +865 -0
  30. package/build/contracts/Ownable.json +1859 -0
  31. package/build/contracts/Panic.json +798 -0
  32. package/build/contracts/ReportingSystem.json +2787 -0
  33. package/build/contracts/SafeCast.json +21592 -0
  34. package/build/contracts/ScoringSystem.json +11245 -0
  35. package/build/contracts/SecureTransacSBT.json +18823 -0
  36. package/build/contracts/SecureTransacToken.json +19225 -0
  37. package/build/contracts/SecureVault.json +12890 -0
  38. package/build/contracts/ShortStrings.json +2852 -0
  39. package/build/contracts/SignedMath.json +1915 -0
  40. package/build/contracts/StorageSlot.json +1773 -0
  41. package/build/contracts/Strings.json +19001 -0
  42. package/build/contracts/TransactionLogger.json +5325 -0
  43. package/build/contracts/TrustDAO.json +23850 -0
  44. package/build/contracts/TrustRegistry.json +10948 -0
  45. package/build/contracts/VerificationRegistry.json +12811 -0
  46. package/build/contracts/ZKIdentityVerifier.json +13979 -0
  47. package/contracts/AccessControl.sol +34 -0
  48. package/contracts/CreditSystem.sol +48 -0
  49. package/contracts/Guardian.sol +33 -0
  50. package/contracts/IGuardian.sol +7 -0
  51. package/contracts/IdentityVault.sol +57 -0
  52. package/contracts/ReportingSystem.sol +14 -0
  53. package/contracts/ScoringSystem.sol +71 -0
  54. package/contracts/SecureTransacSBT.sol +72 -0
  55. package/contracts/SecureTransacToken.sol +20 -0
  56. package/contracts/SecureVault.sol +24 -0
  57. package/contracts/TransactionLogger.sol +12 -0
  58. package/contracts/TrustDAO.sol +158 -0
  59. package/contracts/TrustRegistry.sol +23 -0
  60. package/contracts/VerificationRegistry.sol +51 -0
  61. package/contracts/ZKIdentityVerifier.sol +38 -0
  62. package/contracts/ZKScoreVerifier.sol +175 -0
  63. package/package.json +32 -0
@@ -0,0 +1,1773 @@
1
+ {
2
+ "contractName": "StorageSlot",
3
+ "abi": [],
4
+ "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}",
5
+ "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a7144bb7bb5760e2b557d2e9be7e59046fe51b8d6b7c5c47ccdd2b0de2829d1864736f6c63430008150033",
6
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a7144bb7bb5760e2b557d2e9be7e59046fe51b8d6b7c5c47ccdd2b0de2829d1864736f6c63430008150033",
7
+ "immutableReferences": {},
8
+ "generatedSources": [],
9
+ "deployedGeneratedSources": [],
10
+ "sourceMap": "1407:2774:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
11
+ "deployedSourceMap": "1407:2774:17:-:0;;;;;;;;",
12
+ "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct Int256Slot {\n int256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n",
13
+ "sourcePath": "@openzeppelin\\contracts\\utils\\StorageSlot.sol",
14
+ "ast": {
15
+ "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol",
16
+ "exportedSymbols": {
17
+ "StorageSlot": [
18
+ 2806
19
+ ]
20
+ },
21
+ "id": 2807,
22
+ "license": "MIT",
23
+ "nodeType": "SourceUnit",
24
+ "nodes": [
25
+ {
26
+ "id": 2684,
27
+ "literals": [
28
+ "solidity",
29
+ "^",
30
+ "0.8",
31
+ ".20"
32
+ ],
33
+ "nodeType": "PragmaDirective",
34
+ "src": "193:24:17"
35
+ },
36
+ {
37
+ "abstract": false,
38
+ "baseContracts": [],
39
+ "canonicalName": "StorageSlot",
40
+ "contractDependencies": [],
41
+ "contractKind": "library",
42
+ "documentation": {
43
+ "id": 2685,
44
+ "nodeType": "StructuredDocumentation",
45
+ "src": "219:1187:17",
46
+ "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."
47
+ },
48
+ "fullyImplemented": true,
49
+ "id": 2806,
50
+ "linearizedBaseContracts": [
51
+ 2806
52
+ ],
53
+ "name": "StorageSlot",
54
+ "nameLocation": "1415:11:17",
55
+ "nodeType": "ContractDefinition",
56
+ "nodes": [
57
+ {
58
+ "canonicalName": "StorageSlot.AddressSlot",
59
+ "id": 2688,
60
+ "members": [
61
+ {
62
+ "constant": false,
63
+ "id": 2687,
64
+ "mutability": "mutable",
65
+ "name": "value",
66
+ "nameLocation": "1470:5:17",
67
+ "nodeType": "VariableDeclaration",
68
+ "scope": 2688,
69
+ "src": "1462:13:17",
70
+ "stateVariable": false,
71
+ "storageLocation": "default",
72
+ "typeDescriptions": {
73
+ "typeIdentifier": "t_address",
74
+ "typeString": "address"
75
+ },
76
+ "typeName": {
77
+ "id": 2686,
78
+ "name": "address",
79
+ "nodeType": "ElementaryTypeName",
80
+ "src": "1462:7:17",
81
+ "stateMutability": "nonpayable",
82
+ "typeDescriptions": {
83
+ "typeIdentifier": "t_address",
84
+ "typeString": "address"
85
+ }
86
+ },
87
+ "visibility": "internal"
88
+ }
89
+ ],
90
+ "name": "AddressSlot",
91
+ "nameLocation": "1440:11:17",
92
+ "nodeType": "StructDefinition",
93
+ "scope": 2806,
94
+ "src": "1433:49:17",
95
+ "visibility": "public"
96
+ },
97
+ {
98
+ "canonicalName": "StorageSlot.BooleanSlot",
99
+ "id": 2691,
100
+ "members": [
101
+ {
102
+ "constant": false,
103
+ "id": 2690,
104
+ "mutability": "mutable",
105
+ "name": "value",
106
+ "nameLocation": "1522:5:17",
107
+ "nodeType": "VariableDeclaration",
108
+ "scope": 2691,
109
+ "src": "1517:10:17",
110
+ "stateVariable": false,
111
+ "storageLocation": "default",
112
+ "typeDescriptions": {
113
+ "typeIdentifier": "t_bool",
114
+ "typeString": "bool"
115
+ },
116
+ "typeName": {
117
+ "id": 2689,
118
+ "name": "bool",
119
+ "nodeType": "ElementaryTypeName",
120
+ "src": "1517:4:17",
121
+ "typeDescriptions": {
122
+ "typeIdentifier": "t_bool",
123
+ "typeString": "bool"
124
+ }
125
+ },
126
+ "visibility": "internal"
127
+ }
128
+ ],
129
+ "name": "BooleanSlot",
130
+ "nameLocation": "1495:11:17",
131
+ "nodeType": "StructDefinition",
132
+ "scope": 2806,
133
+ "src": "1488:46:17",
134
+ "visibility": "public"
135
+ },
136
+ {
137
+ "canonicalName": "StorageSlot.Bytes32Slot",
138
+ "id": 2694,
139
+ "members": [
140
+ {
141
+ "constant": false,
142
+ "id": 2693,
143
+ "mutability": "mutable",
144
+ "name": "value",
145
+ "nameLocation": "1577:5:17",
146
+ "nodeType": "VariableDeclaration",
147
+ "scope": 2694,
148
+ "src": "1569:13:17",
149
+ "stateVariable": false,
150
+ "storageLocation": "default",
151
+ "typeDescriptions": {
152
+ "typeIdentifier": "t_bytes32",
153
+ "typeString": "bytes32"
154
+ },
155
+ "typeName": {
156
+ "id": 2692,
157
+ "name": "bytes32",
158
+ "nodeType": "ElementaryTypeName",
159
+ "src": "1569:7:17",
160
+ "typeDescriptions": {
161
+ "typeIdentifier": "t_bytes32",
162
+ "typeString": "bytes32"
163
+ }
164
+ },
165
+ "visibility": "internal"
166
+ }
167
+ ],
168
+ "name": "Bytes32Slot",
169
+ "nameLocation": "1547:11:17",
170
+ "nodeType": "StructDefinition",
171
+ "scope": 2806,
172
+ "src": "1540:49:17",
173
+ "visibility": "public"
174
+ },
175
+ {
176
+ "canonicalName": "StorageSlot.Uint256Slot",
177
+ "id": 2697,
178
+ "members": [
179
+ {
180
+ "constant": false,
181
+ "id": 2696,
182
+ "mutability": "mutable",
183
+ "name": "value",
184
+ "nameLocation": "1632:5:17",
185
+ "nodeType": "VariableDeclaration",
186
+ "scope": 2697,
187
+ "src": "1624:13:17",
188
+ "stateVariable": false,
189
+ "storageLocation": "default",
190
+ "typeDescriptions": {
191
+ "typeIdentifier": "t_uint256",
192
+ "typeString": "uint256"
193
+ },
194
+ "typeName": {
195
+ "id": 2695,
196
+ "name": "uint256",
197
+ "nodeType": "ElementaryTypeName",
198
+ "src": "1624:7:17",
199
+ "typeDescriptions": {
200
+ "typeIdentifier": "t_uint256",
201
+ "typeString": "uint256"
202
+ }
203
+ },
204
+ "visibility": "internal"
205
+ }
206
+ ],
207
+ "name": "Uint256Slot",
208
+ "nameLocation": "1602:11:17",
209
+ "nodeType": "StructDefinition",
210
+ "scope": 2806,
211
+ "src": "1595:49:17",
212
+ "visibility": "public"
213
+ },
214
+ {
215
+ "canonicalName": "StorageSlot.Int256Slot",
216
+ "id": 2700,
217
+ "members": [
218
+ {
219
+ "constant": false,
220
+ "id": 2699,
221
+ "mutability": "mutable",
222
+ "name": "value",
223
+ "nameLocation": "1685:5:17",
224
+ "nodeType": "VariableDeclaration",
225
+ "scope": 2700,
226
+ "src": "1678:12:17",
227
+ "stateVariable": false,
228
+ "storageLocation": "default",
229
+ "typeDescriptions": {
230
+ "typeIdentifier": "t_int256",
231
+ "typeString": "int256"
232
+ },
233
+ "typeName": {
234
+ "id": 2698,
235
+ "name": "int256",
236
+ "nodeType": "ElementaryTypeName",
237
+ "src": "1678:6:17",
238
+ "typeDescriptions": {
239
+ "typeIdentifier": "t_int256",
240
+ "typeString": "int256"
241
+ }
242
+ },
243
+ "visibility": "internal"
244
+ }
245
+ ],
246
+ "name": "Int256Slot",
247
+ "nameLocation": "1657:10:17",
248
+ "nodeType": "StructDefinition",
249
+ "scope": 2806,
250
+ "src": "1650:47:17",
251
+ "visibility": "public"
252
+ },
253
+ {
254
+ "canonicalName": "StorageSlot.StringSlot",
255
+ "id": 2703,
256
+ "members": [
257
+ {
258
+ "constant": false,
259
+ "id": 2702,
260
+ "mutability": "mutable",
261
+ "name": "value",
262
+ "nameLocation": "1738:5:17",
263
+ "nodeType": "VariableDeclaration",
264
+ "scope": 2703,
265
+ "src": "1731:12:17",
266
+ "stateVariable": false,
267
+ "storageLocation": "default",
268
+ "typeDescriptions": {
269
+ "typeIdentifier": "t_string_storage_ptr",
270
+ "typeString": "string"
271
+ },
272
+ "typeName": {
273
+ "id": 2701,
274
+ "name": "string",
275
+ "nodeType": "ElementaryTypeName",
276
+ "src": "1731:6:17",
277
+ "typeDescriptions": {
278
+ "typeIdentifier": "t_string_storage_ptr",
279
+ "typeString": "string"
280
+ }
281
+ },
282
+ "visibility": "internal"
283
+ }
284
+ ],
285
+ "name": "StringSlot",
286
+ "nameLocation": "1710:10:17",
287
+ "nodeType": "StructDefinition",
288
+ "scope": 2806,
289
+ "src": "1703:47:17",
290
+ "visibility": "public"
291
+ },
292
+ {
293
+ "canonicalName": "StorageSlot.BytesSlot",
294
+ "id": 2706,
295
+ "members": [
296
+ {
297
+ "constant": false,
298
+ "id": 2705,
299
+ "mutability": "mutable",
300
+ "name": "value",
301
+ "nameLocation": "1789:5:17",
302
+ "nodeType": "VariableDeclaration",
303
+ "scope": 2706,
304
+ "src": "1783:11:17",
305
+ "stateVariable": false,
306
+ "storageLocation": "default",
307
+ "typeDescriptions": {
308
+ "typeIdentifier": "t_bytes_storage_ptr",
309
+ "typeString": "bytes"
310
+ },
311
+ "typeName": {
312
+ "id": 2704,
313
+ "name": "bytes",
314
+ "nodeType": "ElementaryTypeName",
315
+ "src": "1783:5:17",
316
+ "typeDescriptions": {
317
+ "typeIdentifier": "t_bytes_storage_ptr",
318
+ "typeString": "bytes"
319
+ }
320
+ },
321
+ "visibility": "internal"
322
+ }
323
+ ],
324
+ "name": "BytesSlot",
325
+ "nameLocation": "1763:9:17",
326
+ "nodeType": "StructDefinition",
327
+ "scope": 2806,
328
+ "src": "1756:45:17",
329
+ "visibility": "public"
330
+ },
331
+ {
332
+ "body": {
333
+ "id": 2716,
334
+ "nodeType": "Block",
335
+ "src": "1983:79:17",
336
+ "statements": [
337
+ {
338
+ "AST": {
339
+ "nativeSrc": "2018:38:17",
340
+ "nodeType": "YulBlock",
341
+ "src": "2018:38:17",
342
+ "statements": [
343
+ {
344
+ "nativeSrc": "2032:14:17",
345
+ "nodeType": "YulAssignment",
346
+ "src": "2032:14:17",
347
+ "value": {
348
+ "name": "slot",
349
+ "nativeSrc": "2042:4:17",
350
+ "nodeType": "YulIdentifier",
351
+ "src": "2042:4:17"
352
+ },
353
+ "variableNames": [
354
+ {
355
+ "name": "r.slot",
356
+ "nativeSrc": "2032:6:17",
357
+ "nodeType": "YulIdentifier",
358
+ "src": "2032:6:17"
359
+ }
360
+ ]
361
+ }
362
+ ]
363
+ },
364
+ "evmVersion": "shanghai",
365
+ "externalReferences": [
366
+ {
367
+ "declaration": 2713,
368
+ "isOffset": false,
369
+ "isSlot": true,
370
+ "src": "2032:6:17",
371
+ "suffix": "slot",
372
+ "valueSize": 1
373
+ },
374
+ {
375
+ "declaration": 2709,
376
+ "isOffset": false,
377
+ "isSlot": false,
378
+ "src": "2042:4:17",
379
+ "valueSize": 1
380
+ }
381
+ ],
382
+ "flags": [
383
+ "memory-safe"
384
+ ],
385
+ "id": 2715,
386
+ "nodeType": "InlineAssembly",
387
+ "src": "1993:63:17"
388
+ }
389
+ ]
390
+ },
391
+ "documentation": {
392
+ "id": 2707,
393
+ "nodeType": "StructuredDocumentation",
394
+ "src": "1807:87:17",
395
+ "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
396
+ },
397
+ "id": 2717,
398
+ "implemented": true,
399
+ "kind": "function",
400
+ "modifiers": [],
401
+ "name": "getAddressSlot",
402
+ "nameLocation": "1908:14:17",
403
+ "nodeType": "FunctionDefinition",
404
+ "parameters": {
405
+ "id": 2710,
406
+ "nodeType": "ParameterList",
407
+ "parameters": [
408
+ {
409
+ "constant": false,
410
+ "id": 2709,
411
+ "mutability": "mutable",
412
+ "name": "slot",
413
+ "nameLocation": "1931:4:17",
414
+ "nodeType": "VariableDeclaration",
415
+ "scope": 2717,
416
+ "src": "1923:12:17",
417
+ "stateVariable": false,
418
+ "storageLocation": "default",
419
+ "typeDescriptions": {
420
+ "typeIdentifier": "t_bytes32",
421
+ "typeString": "bytes32"
422
+ },
423
+ "typeName": {
424
+ "id": 2708,
425
+ "name": "bytes32",
426
+ "nodeType": "ElementaryTypeName",
427
+ "src": "1923:7:17",
428
+ "typeDescriptions": {
429
+ "typeIdentifier": "t_bytes32",
430
+ "typeString": "bytes32"
431
+ }
432
+ },
433
+ "visibility": "internal"
434
+ }
435
+ ],
436
+ "src": "1922:14:17"
437
+ },
438
+ "returnParameters": {
439
+ "id": 2714,
440
+ "nodeType": "ParameterList",
441
+ "parameters": [
442
+ {
443
+ "constant": false,
444
+ "id": 2713,
445
+ "mutability": "mutable",
446
+ "name": "r",
447
+ "nameLocation": "1980:1:17",
448
+ "nodeType": "VariableDeclaration",
449
+ "scope": 2717,
450
+ "src": "1960:21:17",
451
+ "stateVariable": false,
452
+ "storageLocation": "storage",
453
+ "typeDescriptions": {
454
+ "typeIdentifier": "t_struct$_AddressSlot_$2688_storage_ptr",
455
+ "typeString": "struct StorageSlot.AddressSlot"
456
+ },
457
+ "typeName": {
458
+ "id": 2712,
459
+ "nodeType": "UserDefinedTypeName",
460
+ "pathNode": {
461
+ "id": 2711,
462
+ "name": "AddressSlot",
463
+ "nameLocations": [
464
+ "1960:11:17"
465
+ ],
466
+ "nodeType": "IdentifierPath",
467
+ "referencedDeclaration": 2688,
468
+ "src": "1960:11:17"
469
+ },
470
+ "referencedDeclaration": 2688,
471
+ "src": "1960:11:17",
472
+ "typeDescriptions": {
473
+ "typeIdentifier": "t_struct$_AddressSlot_$2688_storage_ptr",
474
+ "typeString": "struct StorageSlot.AddressSlot"
475
+ }
476
+ },
477
+ "visibility": "internal"
478
+ }
479
+ ],
480
+ "src": "1959:23:17"
481
+ },
482
+ "scope": 2806,
483
+ "src": "1899:163:17",
484
+ "stateMutability": "pure",
485
+ "virtual": false,
486
+ "visibility": "internal"
487
+ },
488
+ {
489
+ "body": {
490
+ "id": 2727,
491
+ "nodeType": "Block",
492
+ "src": "2243:79:17",
493
+ "statements": [
494
+ {
495
+ "AST": {
496
+ "nativeSrc": "2278:38:17",
497
+ "nodeType": "YulBlock",
498
+ "src": "2278:38:17",
499
+ "statements": [
500
+ {
501
+ "nativeSrc": "2292:14:17",
502
+ "nodeType": "YulAssignment",
503
+ "src": "2292:14:17",
504
+ "value": {
505
+ "name": "slot",
506
+ "nativeSrc": "2302:4:17",
507
+ "nodeType": "YulIdentifier",
508
+ "src": "2302:4:17"
509
+ },
510
+ "variableNames": [
511
+ {
512
+ "name": "r.slot",
513
+ "nativeSrc": "2292:6:17",
514
+ "nodeType": "YulIdentifier",
515
+ "src": "2292:6:17"
516
+ }
517
+ ]
518
+ }
519
+ ]
520
+ },
521
+ "evmVersion": "shanghai",
522
+ "externalReferences": [
523
+ {
524
+ "declaration": 2724,
525
+ "isOffset": false,
526
+ "isSlot": true,
527
+ "src": "2292:6:17",
528
+ "suffix": "slot",
529
+ "valueSize": 1
530
+ },
531
+ {
532
+ "declaration": 2720,
533
+ "isOffset": false,
534
+ "isSlot": false,
535
+ "src": "2302:4:17",
536
+ "valueSize": 1
537
+ }
538
+ ],
539
+ "flags": [
540
+ "memory-safe"
541
+ ],
542
+ "id": 2726,
543
+ "nodeType": "InlineAssembly",
544
+ "src": "2253:63:17"
545
+ }
546
+ ]
547
+ },
548
+ "documentation": {
549
+ "id": 2718,
550
+ "nodeType": "StructuredDocumentation",
551
+ "src": "2068:86:17",
552
+ "text": " @dev Returns a `BooleanSlot` with member `value` located at `slot`."
553
+ },
554
+ "id": 2728,
555
+ "implemented": true,
556
+ "kind": "function",
557
+ "modifiers": [],
558
+ "name": "getBooleanSlot",
559
+ "nameLocation": "2168:14:17",
560
+ "nodeType": "FunctionDefinition",
561
+ "parameters": {
562
+ "id": 2721,
563
+ "nodeType": "ParameterList",
564
+ "parameters": [
565
+ {
566
+ "constant": false,
567
+ "id": 2720,
568
+ "mutability": "mutable",
569
+ "name": "slot",
570
+ "nameLocation": "2191:4:17",
571
+ "nodeType": "VariableDeclaration",
572
+ "scope": 2728,
573
+ "src": "2183:12:17",
574
+ "stateVariable": false,
575
+ "storageLocation": "default",
576
+ "typeDescriptions": {
577
+ "typeIdentifier": "t_bytes32",
578
+ "typeString": "bytes32"
579
+ },
580
+ "typeName": {
581
+ "id": 2719,
582
+ "name": "bytes32",
583
+ "nodeType": "ElementaryTypeName",
584
+ "src": "2183:7:17",
585
+ "typeDescriptions": {
586
+ "typeIdentifier": "t_bytes32",
587
+ "typeString": "bytes32"
588
+ }
589
+ },
590
+ "visibility": "internal"
591
+ }
592
+ ],
593
+ "src": "2182:14:17"
594
+ },
595
+ "returnParameters": {
596
+ "id": 2725,
597
+ "nodeType": "ParameterList",
598
+ "parameters": [
599
+ {
600
+ "constant": false,
601
+ "id": 2724,
602
+ "mutability": "mutable",
603
+ "name": "r",
604
+ "nameLocation": "2240:1:17",
605
+ "nodeType": "VariableDeclaration",
606
+ "scope": 2728,
607
+ "src": "2220:21:17",
608
+ "stateVariable": false,
609
+ "storageLocation": "storage",
610
+ "typeDescriptions": {
611
+ "typeIdentifier": "t_struct$_BooleanSlot_$2691_storage_ptr",
612
+ "typeString": "struct StorageSlot.BooleanSlot"
613
+ },
614
+ "typeName": {
615
+ "id": 2723,
616
+ "nodeType": "UserDefinedTypeName",
617
+ "pathNode": {
618
+ "id": 2722,
619
+ "name": "BooleanSlot",
620
+ "nameLocations": [
621
+ "2220:11:17"
622
+ ],
623
+ "nodeType": "IdentifierPath",
624
+ "referencedDeclaration": 2691,
625
+ "src": "2220:11:17"
626
+ },
627
+ "referencedDeclaration": 2691,
628
+ "src": "2220:11:17",
629
+ "typeDescriptions": {
630
+ "typeIdentifier": "t_struct$_BooleanSlot_$2691_storage_ptr",
631
+ "typeString": "struct StorageSlot.BooleanSlot"
632
+ }
633
+ },
634
+ "visibility": "internal"
635
+ }
636
+ ],
637
+ "src": "2219:23:17"
638
+ },
639
+ "scope": 2806,
640
+ "src": "2159:163:17",
641
+ "stateMutability": "pure",
642
+ "virtual": false,
643
+ "visibility": "internal"
644
+ },
645
+ {
646
+ "body": {
647
+ "id": 2738,
648
+ "nodeType": "Block",
649
+ "src": "2503:79:17",
650
+ "statements": [
651
+ {
652
+ "AST": {
653
+ "nativeSrc": "2538:38:17",
654
+ "nodeType": "YulBlock",
655
+ "src": "2538:38:17",
656
+ "statements": [
657
+ {
658
+ "nativeSrc": "2552:14:17",
659
+ "nodeType": "YulAssignment",
660
+ "src": "2552:14:17",
661
+ "value": {
662
+ "name": "slot",
663
+ "nativeSrc": "2562:4:17",
664
+ "nodeType": "YulIdentifier",
665
+ "src": "2562:4:17"
666
+ },
667
+ "variableNames": [
668
+ {
669
+ "name": "r.slot",
670
+ "nativeSrc": "2552:6:17",
671
+ "nodeType": "YulIdentifier",
672
+ "src": "2552:6:17"
673
+ }
674
+ ]
675
+ }
676
+ ]
677
+ },
678
+ "evmVersion": "shanghai",
679
+ "externalReferences": [
680
+ {
681
+ "declaration": 2735,
682
+ "isOffset": false,
683
+ "isSlot": true,
684
+ "src": "2552:6:17",
685
+ "suffix": "slot",
686
+ "valueSize": 1
687
+ },
688
+ {
689
+ "declaration": 2731,
690
+ "isOffset": false,
691
+ "isSlot": false,
692
+ "src": "2562:4:17",
693
+ "valueSize": 1
694
+ }
695
+ ],
696
+ "flags": [
697
+ "memory-safe"
698
+ ],
699
+ "id": 2737,
700
+ "nodeType": "InlineAssembly",
701
+ "src": "2513:63:17"
702
+ }
703
+ ]
704
+ },
705
+ "documentation": {
706
+ "id": 2729,
707
+ "nodeType": "StructuredDocumentation",
708
+ "src": "2328:86:17",
709
+ "text": " @dev Returns a `Bytes32Slot` with member `value` located at `slot`."
710
+ },
711
+ "id": 2739,
712
+ "implemented": true,
713
+ "kind": "function",
714
+ "modifiers": [],
715
+ "name": "getBytes32Slot",
716
+ "nameLocation": "2428:14:17",
717
+ "nodeType": "FunctionDefinition",
718
+ "parameters": {
719
+ "id": 2732,
720
+ "nodeType": "ParameterList",
721
+ "parameters": [
722
+ {
723
+ "constant": false,
724
+ "id": 2731,
725
+ "mutability": "mutable",
726
+ "name": "slot",
727
+ "nameLocation": "2451:4:17",
728
+ "nodeType": "VariableDeclaration",
729
+ "scope": 2739,
730
+ "src": "2443:12:17",
731
+ "stateVariable": false,
732
+ "storageLocation": "default",
733
+ "typeDescriptions": {
734
+ "typeIdentifier": "t_bytes32",
735
+ "typeString": "bytes32"
736
+ },
737
+ "typeName": {
738
+ "id": 2730,
739
+ "name": "bytes32",
740
+ "nodeType": "ElementaryTypeName",
741
+ "src": "2443:7:17",
742
+ "typeDescriptions": {
743
+ "typeIdentifier": "t_bytes32",
744
+ "typeString": "bytes32"
745
+ }
746
+ },
747
+ "visibility": "internal"
748
+ }
749
+ ],
750
+ "src": "2442:14:17"
751
+ },
752
+ "returnParameters": {
753
+ "id": 2736,
754
+ "nodeType": "ParameterList",
755
+ "parameters": [
756
+ {
757
+ "constant": false,
758
+ "id": 2735,
759
+ "mutability": "mutable",
760
+ "name": "r",
761
+ "nameLocation": "2500:1:17",
762
+ "nodeType": "VariableDeclaration",
763
+ "scope": 2739,
764
+ "src": "2480:21:17",
765
+ "stateVariable": false,
766
+ "storageLocation": "storage",
767
+ "typeDescriptions": {
768
+ "typeIdentifier": "t_struct$_Bytes32Slot_$2694_storage_ptr",
769
+ "typeString": "struct StorageSlot.Bytes32Slot"
770
+ },
771
+ "typeName": {
772
+ "id": 2734,
773
+ "nodeType": "UserDefinedTypeName",
774
+ "pathNode": {
775
+ "id": 2733,
776
+ "name": "Bytes32Slot",
777
+ "nameLocations": [
778
+ "2480:11:17"
779
+ ],
780
+ "nodeType": "IdentifierPath",
781
+ "referencedDeclaration": 2694,
782
+ "src": "2480:11:17"
783
+ },
784
+ "referencedDeclaration": 2694,
785
+ "src": "2480:11:17",
786
+ "typeDescriptions": {
787
+ "typeIdentifier": "t_struct$_Bytes32Slot_$2694_storage_ptr",
788
+ "typeString": "struct StorageSlot.Bytes32Slot"
789
+ }
790
+ },
791
+ "visibility": "internal"
792
+ }
793
+ ],
794
+ "src": "2479:23:17"
795
+ },
796
+ "scope": 2806,
797
+ "src": "2419:163:17",
798
+ "stateMutability": "pure",
799
+ "virtual": false,
800
+ "visibility": "internal"
801
+ },
802
+ {
803
+ "body": {
804
+ "id": 2749,
805
+ "nodeType": "Block",
806
+ "src": "2763:79:17",
807
+ "statements": [
808
+ {
809
+ "AST": {
810
+ "nativeSrc": "2798:38:17",
811
+ "nodeType": "YulBlock",
812
+ "src": "2798:38:17",
813
+ "statements": [
814
+ {
815
+ "nativeSrc": "2812:14:17",
816
+ "nodeType": "YulAssignment",
817
+ "src": "2812:14:17",
818
+ "value": {
819
+ "name": "slot",
820
+ "nativeSrc": "2822:4:17",
821
+ "nodeType": "YulIdentifier",
822
+ "src": "2822:4:17"
823
+ },
824
+ "variableNames": [
825
+ {
826
+ "name": "r.slot",
827
+ "nativeSrc": "2812:6:17",
828
+ "nodeType": "YulIdentifier",
829
+ "src": "2812:6:17"
830
+ }
831
+ ]
832
+ }
833
+ ]
834
+ },
835
+ "evmVersion": "shanghai",
836
+ "externalReferences": [
837
+ {
838
+ "declaration": 2746,
839
+ "isOffset": false,
840
+ "isSlot": true,
841
+ "src": "2812:6:17",
842
+ "suffix": "slot",
843
+ "valueSize": 1
844
+ },
845
+ {
846
+ "declaration": 2742,
847
+ "isOffset": false,
848
+ "isSlot": false,
849
+ "src": "2822:4:17",
850
+ "valueSize": 1
851
+ }
852
+ ],
853
+ "flags": [
854
+ "memory-safe"
855
+ ],
856
+ "id": 2748,
857
+ "nodeType": "InlineAssembly",
858
+ "src": "2773:63:17"
859
+ }
860
+ ]
861
+ },
862
+ "documentation": {
863
+ "id": 2740,
864
+ "nodeType": "StructuredDocumentation",
865
+ "src": "2588:86:17",
866
+ "text": " @dev Returns a `Uint256Slot` with member `value` located at `slot`."
867
+ },
868
+ "id": 2750,
869
+ "implemented": true,
870
+ "kind": "function",
871
+ "modifiers": [],
872
+ "name": "getUint256Slot",
873
+ "nameLocation": "2688:14:17",
874
+ "nodeType": "FunctionDefinition",
875
+ "parameters": {
876
+ "id": 2743,
877
+ "nodeType": "ParameterList",
878
+ "parameters": [
879
+ {
880
+ "constant": false,
881
+ "id": 2742,
882
+ "mutability": "mutable",
883
+ "name": "slot",
884
+ "nameLocation": "2711:4:17",
885
+ "nodeType": "VariableDeclaration",
886
+ "scope": 2750,
887
+ "src": "2703:12:17",
888
+ "stateVariable": false,
889
+ "storageLocation": "default",
890
+ "typeDescriptions": {
891
+ "typeIdentifier": "t_bytes32",
892
+ "typeString": "bytes32"
893
+ },
894
+ "typeName": {
895
+ "id": 2741,
896
+ "name": "bytes32",
897
+ "nodeType": "ElementaryTypeName",
898
+ "src": "2703:7:17",
899
+ "typeDescriptions": {
900
+ "typeIdentifier": "t_bytes32",
901
+ "typeString": "bytes32"
902
+ }
903
+ },
904
+ "visibility": "internal"
905
+ }
906
+ ],
907
+ "src": "2702:14:17"
908
+ },
909
+ "returnParameters": {
910
+ "id": 2747,
911
+ "nodeType": "ParameterList",
912
+ "parameters": [
913
+ {
914
+ "constant": false,
915
+ "id": 2746,
916
+ "mutability": "mutable",
917
+ "name": "r",
918
+ "nameLocation": "2760:1:17",
919
+ "nodeType": "VariableDeclaration",
920
+ "scope": 2750,
921
+ "src": "2740:21:17",
922
+ "stateVariable": false,
923
+ "storageLocation": "storage",
924
+ "typeDescriptions": {
925
+ "typeIdentifier": "t_struct$_Uint256Slot_$2697_storage_ptr",
926
+ "typeString": "struct StorageSlot.Uint256Slot"
927
+ },
928
+ "typeName": {
929
+ "id": 2745,
930
+ "nodeType": "UserDefinedTypeName",
931
+ "pathNode": {
932
+ "id": 2744,
933
+ "name": "Uint256Slot",
934
+ "nameLocations": [
935
+ "2740:11:17"
936
+ ],
937
+ "nodeType": "IdentifierPath",
938
+ "referencedDeclaration": 2697,
939
+ "src": "2740:11:17"
940
+ },
941
+ "referencedDeclaration": 2697,
942
+ "src": "2740:11:17",
943
+ "typeDescriptions": {
944
+ "typeIdentifier": "t_struct$_Uint256Slot_$2697_storage_ptr",
945
+ "typeString": "struct StorageSlot.Uint256Slot"
946
+ }
947
+ },
948
+ "visibility": "internal"
949
+ }
950
+ ],
951
+ "src": "2739:23:17"
952
+ },
953
+ "scope": 2806,
954
+ "src": "2679:163:17",
955
+ "stateMutability": "pure",
956
+ "virtual": false,
957
+ "visibility": "internal"
958
+ },
959
+ {
960
+ "body": {
961
+ "id": 2760,
962
+ "nodeType": "Block",
963
+ "src": "3020:79:17",
964
+ "statements": [
965
+ {
966
+ "AST": {
967
+ "nativeSrc": "3055:38:17",
968
+ "nodeType": "YulBlock",
969
+ "src": "3055:38:17",
970
+ "statements": [
971
+ {
972
+ "nativeSrc": "3069:14:17",
973
+ "nodeType": "YulAssignment",
974
+ "src": "3069:14:17",
975
+ "value": {
976
+ "name": "slot",
977
+ "nativeSrc": "3079:4:17",
978
+ "nodeType": "YulIdentifier",
979
+ "src": "3079:4:17"
980
+ },
981
+ "variableNames": [
982
+ {
983
+ "name": "r.slot",
984
+ "nativeSrc": "3069:6:17",
985
+ "nodeType": "YulIdentifier",
986
+ "src": "3069:6:17"
987
+ }
988
+ ]
989
+ }
990
+ ]
991
+ },
992
+ "evmVersion": "shanghai",
993
+ "externalReferences": [
994
+ {
995
+ "declaration": 2757,
996
+ "isOffset": false,
997
+ "isSlot": true,
998
+ "src": "3069:6:17",
999
+ "suffix": "slot",
1000
+ "valueSize": 1
1001
+ },
1002
+ {
1003
+ "declaration": 2753,
1004
+ "isOffset": false,
1005
+ "isSlot": false,
1006
+ "src": "3079:4:17",
1007
+ "valueSize": 1
1008
+ }
1009
+ ],
1010
+ "flags": [
1011
+ "memory-safe"
1012
+ ],
1013
+ "id": 2759,
1014
+ "nodeType": "InlineAssembly",
1015
+ "src": "3030:63:17"
1016
+ }
1017
+ ]
1018
+ },
1019
+ "documentation": {
1020
+ "id": 2751,
1021
+ "nodeType": "StructuredDocumentation",
1022
+ "src": "2848:85:17",
1023
+ "text": " @dev Returns a `Int256Slot` with member `value` located at `slot`."
1024
+ },
1025
+ "id": 2761,
1026
+ "implemented": true,
1027
+ "kind": "function",
1028
+ "modifiers": [],
1029
+ "name": "getInt256Slot",
1030
+ "nameLocation": "2947:13:17",
1031
+ "nodeType": "FunctionDefinition",
1032
+ "parameters": {
1033
+ "id": 2754,
1034
+ "nodeType": "ParameterList",
1035
+ "parameters": [
1036
+ {
1037
+ "constant": false,
1038
+ "id": 2753,
1039
+ "mutability": "mutable",
1040
+ "name": "slot",
1041
+ "nameLocation": "2969:4:17",
1042
+ "nodeType": "VariableDeclaration",
1043
+ "scope": 2761,
1044
+ "src": "2961:12:17",
1045
+ "stateVariable": false,
1046
+ "storageLocation": "default",
1047
+ "typeDescriptions": {
1048
+ "typeIdentifier": "t_bytes32",
1049
+ "typeString": "bytes32"
1050
+ },
1051
+ "typeName": {
1052
+ "id": 2752,
1053
+ "name": "bytes32",
1054
+ "nodeType": "ElementaryTypeName",
1055
+ "src": "2961:7:17",
1056
+ "typeDescriptions": {
1057
+ "typeIdentifier": "t_bytes32",
1058
+ "typeString": "bytes32"
1059
+ }
1060
+ },
1061
+ "visibility": "internal"
1062
+ }
1063
+ ],
1064
+ "src": "2960:14:17"
1065
+ },
1066
+ "returnParameters": {
1067
+ "id": 2758,
1068
+ "nodeType": "ParameterList",
1069
+ "parameters": [
1070
+ {
1071
+ "constant": false,
1072
+ "id": 2757,
1073
+ "mutability": "mutable",
1074
+ "name": "r",
1075
+ "nameLocation": "3017:1:17",
1076
+ "nodeType": "VariableDeclaration",
1077
+ "scope": 2761,
1078
+ "src": "2998:20:17",
1079
+ "stateVariable": false,
1080
+ "storageLocation": "storage",
1081
+ "typeDescriptions": {
1082
+ "typeIdentifier": "t_struct$_Int256Slot_$2700_storage_ptr",
1083
+ "typeString": "struct StorageSlot.Int256Slot"
1084
+ },
1085
+ "typeName": {
1086
+ "id": 2756,
1087
+ "nodeType": "UserDefinedTypeName",
1088
+ "pathNode": {
1089
+ "id": 2755,
1090
+ "name": "Int256Slot",
1091
+ "nameLocations": [
1092
+ "2998:10:17"
1093
+ ],
1094
+ "nodeType": "IdentifierPath",
1095
+ "referencedDeclaration": 2700,
1096
+ "src": "2998:10:17"
1097
+ },
1098
+ "referencedDeclaration": 2700,
1099
+ "src": "2998:10:17",
1100
+ "typeDescriptions": {
1101
+ "typeIdentifier": "t_struct$_Int256Slot_$2700_storage_ptr",
1102
+ "typeString": "struct StorageSlot.Int256Slot"
1103
+ }
1104
+ },
1105
+ "visibility": "internal"
1106
+ }
1107
+ ],
1108
+ "src": "2997:22:17"
1109
+ },
1110
+ "scope": 2806,
1111
+ "src": "2938:161:17",
1112
+ "stateMutability": "pure",
1113
+ "virtual": false,
1114
+ "visibility": "internal"
1115
+ },
1116
+ {
1117
+ "body": {
1118
+ "id": 2771,
1119
+ "nodeType": "Block",
1120
+ "src": "3277:79:17",
1121
+ "statements": [
1122
+ {
1123
+ "AST": {
1124
+ "nativeSrc": "3312:38:17",
1125
+ "nodeType": "YulBlock",
1126
+ "src": "3312:38:17",
1127
+ "statements": [
1128
+ {
1129
+ "nativeSrc": "3326:14:17",
1130
+ "nodeType": "YulAssignment",
1131
+ "src": "3326:14:17",
1132
+ "value": {
1133
+ "name": "slot",
1134
+ "nativeSrc": "3336:4:17",
1135
+ "nodeType": "YulIdentifier",
1136
+ "src": "3336:4:17"
1137
+ },
1138
+ "variableNames": [
1139
+ {
1140
+ "name": "r.slot",
1141
+ "nativeSrc": "3326:6:17",
1142
+ "nodeType": "YulIdentifier",
1143
+ "src": "3326:6:17"
1144
+ }
1145
+ ]
1146
+ }
1147
+ ]
1148
+ },
1149
+ "evmVersion": "shanghai",
1150
+ "externalReferences": [
1151
+ {
1152
+ "declaration": 2768,
1153
+ "isOffset": false,
1154
+ "isSlot": true,
1155
+ "src": "3326:6:17",
1156
+ "suffix": "slot",
1157
+ "valueSize": 1
1158
+ },
1159
+ {
1160
+ "declaration": 2764,
1161
+ "isOffset": false,
1162
+ "isSlot": false,
1163
+ "src": "3336:4:17",
1164
+ "valueSize": 1
1165
+ }
1166
+ ],
1167
+ "flags": [
1168
+ "memory-safe"
1169
+ ],
1170
+ "id": 2770,
1171
+ "nodeType": "InlineAssembly",
1172
+ "src": "3287:63:17"
1173
+ }
1174
+ ]
1175
+ },
1176
+ "documentation": {
1177
+ "id": 2762,
1178
+ "nodeType": "StructuredDocumentation",
1179
+ "src": "3105:85:17",
1180
+ "text": " @dev Returns a `StringSlot` with member `value` located at `slot`."
1181
+ },
1182
+ "id": 2772,
1183
+ "implemented": true,
1184
+ "kind": "function",
1185
+ "modifiers": [],
1186
+ "name": "getStringSlot",
1187
+ "nameLocation": "3204:13:17",
1188
+ "nodeType": "FunctionDefinition",
1189
+ "parameters": {
1190
+ "id": 2765,
1191
+ "nodeType": "ParameterList",
1192
+ "parameters": [
1193
+ {
1194
+ "constant": false,
1195
+ "id": 2764,
1196
+ "mutability": "mutable",
1197
+ "name": "slot",
1198
+ "nameLocation": "3226:4:17",
1199
+ "nodeType": "VariableDeclaration",
1200
+ "scope": 2772,
1201
+ "src": "3218:12:17",
1202
+ "stateVariable": false,
1203
+ "storageLocation": "default",
1204
+ "typeDescriptions": {
1205
+ "typeIdentifier": "t_bytes32",
1206
+ "typeString": "bytes32"
1207
+ },
1208
+ "typeName": {
1209
+ "id": 2763,
1210
+ "name": "bytes32",
1211
+ "nodeType": "ElementaryTypeName",
1212
+ "src": "3218:7:17",
1213
+ "typeDescriptions": {
1214
+ "typeIdentifier": "t_bytes32",
1215
+ "typeString": "bytes32"
1216
+ }
1217
+ },
1218
+ "visibility": "internal"
1219
+ }
1220
+ ],
1221
+ "src": "3217:14:17"
1222
+ },
1223
+ "returnParameters": {
1224
+ "id": 2769,
1225
+ "nodeType": "ParameterList",
1226
+ "parameters": [
1227
+ {
1228
+ "constant": false,
1229
+ "id": 2768,
1230
+ "mutability": "mutable",
1231
+ "name": "r",
1232
+ "nameLocation": "3274:1:17",
1233
+ "nodeType": "VariableDeclaration",
1234
+ "scope": 2772,
1235
+ "src": "3255:20:17",
1236
+ "stateVariable": false,
1237
+ "storageLocation": "storage",
1238
+ "typeDescriptions": {
1239
+ "typeIdentifier": "t_struct$_StringSlot_$2703_storage_ptr",
1240
+ "typeString": "struct StorageSlot.StringSlot"
1241
+ },
1242
+ "typeName": {
1243
+ "id": 2767,
1244
+ "nodeType": "UserDefinedTypeName",
1245
+ "pathNode": {
1246
+ "id": 2766,
1247
+ "name": "StringSlot",
1248
+ "nameLocations": [
1249
+ "3255:10:17"
1250
+ ],
1251
+ "nodeType": "IdentifierPath",
1252
+ "referencedDeclaration": 2703,
1253
+ "src": "3255:10:17"
1254
+ },
1255
+ "referencedDeclaration": 2703,
1256
+ "src": "3255:10:17",
1257
+ "typeDescriptions": {
1258
+ "typeIdentifier": "t_struct$_StringSlot_$2703_storage_ptr",
1259
+ "typeString": "struct StorageSlot.StringSlot"
1260
+ }
1261
+ },
1262
+ "visibility": "internal"
1263
+ }
1264
+ ],
1265
+ "src": "3254:22:17"
1266
+ },
1267
+ "scope": 2806,
1268
+ "src": "3195:161:17",
1269
+ "stateMutability": "pure",
1270
+ "virtual": false,
1271
+ "visibility": "internal"
1272
+ },
1273
+ {
1274
+ "body": {
1275
+ "id": 2782,
1276
+ "nodeType": "Block",
1277
+ "src": "3558:85:17",
1278
+ "statements": [
1279
+ {
1280
+ "AST": {
1281
+ "nativeSrc": "3593:44:17",
1282
+ "nodeType": "YulBlock",
1283
+ "src": "3593:44:17",
1284
+ "statements": [
1285
+ {
1286
+ "nativeSrc": "3607:20:17",
1287
+ "nodeType": "YulAssignment",
1288
+ "src": "3607:20:17",
1289
+ "value": {
1290
+ "name": "store.slot",
1291
+ "nativeSrc": "3617:10:17",
1292
+ "nodeType": "YulIdentifier",
1293
+ "src": "3617:10:17"
1294
+ },
1295
+ "variableNames": [
1296
+ {
1297
+ "name": "r.slot",
1298
+ "nativeSrc": "3607:6:17",
1299
+ "nodeType": "YulIdentifier",
1300
+ "src": "3607:6:17"
1301
+ }
1302
+ ]
1303
+ }
1304
+ ]
1305
+ },
1306
+ "evmVersion": "shanghai",
1307
+ "externalReferences": [
1308
+ {
1309
+ "declaration": 2779,
1310
+ "isOffset": false,
1311
+ "isSlot": true,
1312
+ "src": "3607:6:17",
1313
+ "suffix": "slot",
1314
+ "valueSize": 1
1315
+ },
1316
+ {
1317
+ "declaration": 2775,
1318
+ "isOffset": false,
1319
+ "isSlot": true,
1320
+ "src": "3617:10:17",
1321
+ "suffix": "slot",
1322
+ "valueSize": 1
1323
+ }
1324
+ ],
1325
+ "flags": [
1326
+ "memory-safe"
1327
+ ],
1328
+ "id": 2781,
1329
+ "nodeType": "InlineAssembly",
1330
+ "src": "3568:69:17"
1331
+ }
1332
+ ]
1333
+ },
1334
+ "documentation": {
1335
+ "id": 2773,
1336
+ "nodeType": "StructuredDocumentation",
1337
+ "src": "3362:101:17",
1338
+ "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`."
1339
+ },
1340
+ "id": 2783,
1341
+ "implemented": true,
1342
+ "kind": "function",
1343
+ "modifiers": [],
1344
+ "name": "getStringSlot",
1345
+ "nameLocation": "3477:13:17",
1346
+ "nodeType": "FunctionDefinition",
1347
+ "parameters": {
1348
+ "id": 2776,
1349
+ "nodeType": "ParameterList",
1350
+ "parameters": [
1351
+ {
1352
+ "constant": false,
1353
+ "id": 2775,
1354
+ "mutability": "mutable",
1355
+ "name": "store",
1356
+ "nameLocation": "3506:5:17",
1357
+ "nodeType": "VariableDeclaration",
1358
+ "scope": 2783,
1359
+ "src": "3491:20:17",
1360
+ "stateVariable": false,
1361
+ "storageLocation": "storage",
1362
+ "typeDescriptions": {
1363
+ "typeIdentifier": "t_string_storage_ptr",
1364
+ "typeString": "string"
1365
+ },
1366
+ "typeName": {
1367
+ "id": 2774,
1368
+ "name": "string",
1369
+ "nodeType": "ElementaryTypeName",
1370
+ "src": "3491:6:17",
1371
+ "typeDescriptions": {
1372
+ "typeIdentifier": "t_string_storage_ptr",
1373
+ "typeString": "string"
1374
+ }
1375
+ },
1376
+ "visibility": "internal"
1377
+ }
1378
+ ],
1379
+ "src": "3490:22:17"
1380
+ },
1381
+ "returnParameters": {
1382
+ "id": 2780,
1383
+ "nodeType": "ParameterList",
1384
+ "parameters": [
1385
+ {
1386
+ "constant": false,
1387
+ "id": 2779,
1388
+ "mutability": "mutable",
1389
+ "name": "r",
1390
+ "nameLocation": "3555:1:17",
1391
+ "nodeType": "VariableDeclaration",
1392
+ "scope": 2783,
1393
+ "src": "3536:20:17",
1394
+ "stateVariable": false,
1395
+ "storageLocation": "storage",
1396
+ "typeDescriptions": {
1397
+ "typeIdentifier": "t_struct$_StringSlot_$2703_storage_ptr",
1398
+ "typeString": "struct StorageSlot.StringSlot"
1399
+ },
1400
+ "typeName": {
1401
+ "id": 2778,
1402
+ "nodeType": "UserDefinedTypeName",
1403
+ "pathNode": {
1404
+ "id": 2777,
1405
+ "name": "StringSlot",
1406
+ "nameLocations": [
1407
+ "3536:10:17"
1408
+ ],
1409
+ "nodeType": "IdentifierPath",
1410
+ "referencedDeclaration": 2703,
1411
+ "src": "3536:10:17"
1412
+ },
1413
+ "referencedDeclaration": 2703,
1414
+ "src": "3536:10:17",
1415
+ "typeDescriptions": {
1416
+ "typeIdentifier": "t_struct$_StringSlot_$2703_storage_ptr",
1417
+ "typeString": "struct StorageSlot.StringSlot"
1418
+ }
1419
+ },
1420
+ "visibility": "internal"
1421
+ }
1422
+ ],
1423
+ "src": "3535:22:17"
1424
+ },
1425
+ "scope": 2806,
1426
+ "src": "3468:175:17",
1427
+ "stateMutability": "pure",
1428
+ "virtual": false,
1429
+ "visibility": "internal"
1430
+ },
1431
+ {
1432
+ "body": {
1433
+ "id": 2793,
1434
+ "nodeType": "Block",
1435
+ "src": "3818:79:17",
1436
+ "statements": [
1437
+ {
1438
+ "AST": {
1439
+ "nativeSrc": "3853:38:17",
1440
+ "nodeType": "YulBlock",
1441
+ "src": "3853:38:17",
1442
+ "statements": [
1443
+ {
1444
+ "nativeSrc": "3867:14:17",
1445
+ "nodeType": "YulAssignment",
1446
+ "src": "3867:14:17",
1447
+ "value": {
1448
+ "name": "slot",
1449
+ "nativeSrc": "3877:4:17",
1450
+ "nodeType": "YulIdentifier",
1451
+ "src": "3877:4:17"
1452
+ },
1453
+ "variableNames": [
1454
+ {
1455
+ "name": "r.slot",
1456
+ "nativeSrc": "3867:6:17",
1457
+ "nodeType": "YulIdentifier",
1458
+ "src": "3867:6:17"
1459
+ }
1460
+ ]
1461
+ }
1462
+ ]
1463
+ },
1464
+ "evmVersion": "shanghai",
1465
+ "externalReferences": [
1466
+ {
1467
+ "declaration": 2790,
1468
+ "isOffset": false,
1469
+ "isSlot": true,
1470
+ "src": "3867:6:17",
1471
+ "suffix": "slot",
1472
+ "valueSize": 1
1473
+ },
1474
+ {
1475
+ "declaration": 2786,
1476
+ "isOffset": false,
1477
+ "isSlot": false,
1478
+ "src": "3877:4:17",
1479
+ "valueSize": 1
1480
+ }
1481
+ ],
1482
+ "flags": [
1483
+ "memory-safe"
1484
+ ],
1485
+ "id": 2792,
1486
+ "nodeType": "InlineAssembly",
1487
+ "src": "3828:63:17"
1488
+ }
1489
+ ]
1490
+ },
1491
+ "documentation": {
1492
+ "id": 2784,
1493
+ "nodeType": "StructuredDocumentation",
1494
+ "src": "3649:84:17",
1495
+ "text": " @dev Returns a `BytesSlot` with member `value` located at `slot`."
1496
+ },
1497
+ "id": 2794,
1498
+ "implemented": true,
1499
+ "kind": "function",
1500
+ "modifiers": [],
1501
+ "name": "getBytesSlot",
1502
+ "nameLocation": "3747:12:17",
1503
+ "nodeType": "FunctionDefinition",
1504
+ "parameters": {
1505
+ "id": 2787,
1506
+ "nodeType": "ParameterList",
1507
+ "parameters": [
1508
+ {
1509
+ "constant": false,
1510
+ "id": 2786,
1511
+ "mutability": "mutable",
1512
+ "name": "slot",
1513
+ "nameLocation": "3768:4:17",
1514
+ "nodeType": "VariableDeclaration",
1515
+ "scope": 2794,
1516
+ "src": "3760:12:17",
1517
+ "stateVariable": false,
1518
+ "storageLocation": "default",
1519
+ "typeDescriptions": {
1520
+ "typeIdentifier": "t_bytes32",
1521
+ "typeString": "bytes32"
1522
+ },
1523
+ "typeName": {
1524
+ "id": 2785,
1525
+ "name": "bytes32",
1526
+ "nodeType": "ElementaryTypeName",
1527
+ "src": "3760:7:17",
1528
+ "typeDescriptions": {
1529
+ "typeIdentifier": "t_bytes32",
1530
+ "typeString": "bytes32"
1531
+ }
1532
+ },
1533
+ "visibility": "internal"
1534
+ }
1535
+ ],
1536
+ "src": "3759:14:17"
1537
+ },
1538
+ "returnParameters": {
1539
+ "id": 2791,
1540
+ "nodeType": "ParameterList",
1541
+ "parameters": [
1542
+ {
1543
+ "constant": false,
1544
+ "id": 2790,
1545
+ "mutability": "mutable",
1546
+ "name": "r",
1547
+ "nameLocation": "3815:1:17",
1548
+ "nodeType": "VariableDeclaration",
1549
+ "scope": 2794,
1550
+ "src": "3797:19:17",
1551
+ "stateVariable": false,
1552
+ "storageLocation": "storage",
1553
+ "typeDescriptions": {
1554
+ "typeIdentifier": "t_struct$_BytesSlot_$2706_storage_ptr",
1555
+ "typeString": "struct StorageSlot.BytesSlot"
1556
+ },
1557
+ "typeName": {
1558
+ "id": 2789,
1559
+ "nodeType": "UserDefinedTypeName",
1560
+ "pathNode": {
1561
+ "id": 2788,
1562
+ "name": "BytesSlot",
1563
+ "nameLocations": [
1564
+ "3797:9:17"
1565
+ ],
1566
+ "nodeType": "IdentifierPath",
1567
+ "referencedDeclaration": 2706,
1568
+ "src": "3797:9:17"
1569
+ },
1570
+ "referencedDeclaration": 2706,
1571
+ "src": "3797:9:17",
1572
+ "typeDescriptions": {
1573
+ "typeIdentifier": "t_struct$_BytesSlot_$2706_storage_ptr",
1574
+ "typeString": "struct StorageSlot.BytesSlot"
1575
+ }
1576
+ },
1577
+ "visibility": "internal"
1578
+ }
1579
+ ],
1580
+ "src": "3796:21:17"
1581
+ },
1582
+ "scope": 2806,
1583
+ "src": "3738:159:17",
1584
+ "stateMutability": "pure",
1585
+ "virtual": false,
1586
+ "visibility": "internal"
1587
+ },
1588
+ {
1589
+ "body": {
1590
+ "id": 2804,
1591
+ "nodeType": "Block",
1592
+ "src": "4094:85:17",
1593
+ "statements": [
1594
+ {
1595
+ "AST": {
1596
+ "nativeSrc": "4129:44:17",
1597
+ "nodeType": "YulBlock",
1598
+ "src": "4129:44:17",
1599
+ "statements": [
1600
+ {
1601
+ "nativeSrc": "4143:20:17",
1602
+ "nodeType": "YulAssignment",
1603
+ "src": "4143:20:17",
1604
+ "value": {
1605
+ "name": "store.slot",
1606
+ "nativeSrc": "4153:10:17",
1607
+ "nodeType": "YulIdentifier",
1608
+ "src": "4153:10:17"
1609
+ },
1610
+ "variableNames": [
1611
+ {
1612
+ "name": "r.slot",
1613
+ "nativeSrc": "4143:6:17",
1614
+ "nodeType": "YulIdentifier",
1615
+ "src": "4143:6:17"
1616
+ }
1617
+ ]
1618
+ }
1619
+ ]
1620
+ },
1621
+ "evmVersion": "shanghai",
1622
+ "externalReferences": [
1623
+ {
1624
+ "declaration": 2801,
1625
+ "isOffset": false,
1626
+ "isSlot": true,
1627
+ "src": "4143:6:17",
1628
+ "suffix": "slot",
1629
+ "valueSize": 1
1630
+ },
1631
+ {
1632
+ "declaration": 2797,
1633
+ "isOffset": false,
1634
+ "isSlot": true,
1635
+ "src": "4153:10:17",
1636
+ "suffix": "slot",
1637
+ "valueSize": 1
1638
+ }
1639
+ ],
1640
+ "flags": [
1641
+ "memory-safe"
1642
+ ],
1643
+ "id": 2803,
1644
+ "nodeType": "InlineAssembly",
1645
+ "src": "4104:69:17"
1646
+ }
1647
+ ]
1648
+ },
1649
+ "documentation": {
1650
+ "id": 2795,
1651
+ "nodeType": "StructuredDocumentation",
1652
+ "src": "3903:99:17",
1653
+ "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."
1654
+ },
1655
+ "id": 2805,
1656
+ "implemented": true,
1657
+ "kind": "function",
1658
+ "modifiers": [],
1659
+ "name": "getBytesSlot",
1660
+ "nameLocation": "4016:12:17",
1661
+ "nodeType": "FunctionDefinition",
1662
+ "parameters": {
1663
+ "id": 2798,
1664
+ "nodeType": "ParameterList",
1665
+ "parameters": [
1666
+ {
1667
+ "constant": false,
1668
+ "id": 2797,
1669
+ "mutability": "mutable",
1670
+ "name": "store",
1671
+ "nameLocation": "4043:5:17",
1672
+ "nodeType": "VariableDeclaration",
1673
+ "scope": 2805,
1674
+ "src": "4029:19:17",
1675
+ "stateVariable": false,
1676
+ "storageLocation": "storage",
1677
+ "typeDescriptions": {
1678
+ "typeIdentifier": "t_bytes_storage_ptr",
1679
+ "typeString": "bytes"
1680
+ },
1681
+ "typeName": {
1682
+ "id": 2796,
1683
+ "name": "bytes",
1684
+ "nodeType": "ElementaryTypeName",
1685
+ "src": "4029:5:17",
1686
+ "typeDescriptions": {
1687
+ "typeIdentifier": "t_bytes_storage_ptr",
1688
+ "typeString": "bytes"
1689
+ }
1690
+ },
1691
+ "visibility": "internal"
1692
+ }
1693
+ ],
1694
+ "src": "4028:21:17"
1695
+ },
1696
+ "returnParameters": {
1697
+ "id": 2802,
1698
+ "nodeType": "ParameterList",
1699
+ "parameters": [
1700
+ {
1701
+ "constant": false,
1702
+ "id": 2801,
1703
+ "mutability": "mutable",
1704
+ "name": "r",
1705
+ "nameLocation": "4091:1:17",
1706
+ "nodeType": "VariableDeclaration",
1707
+ "scope": 2805,
1708
+ "src": "4073:19:17",
1709
+ "stateVariable": false,
1710
+ "storageLocation": "storage",
1711
+ "typeDescriptions": {
1712
+ "typeIdentifier": "t_struct$_BytesSlot_$2706_storage_ptr",
1713
+ "typeString": "struct StorageSlot.BytesSlot"
1714
+ },
1715
+ "typeName": {
1716
+ "id": 2800,
1717
+ "nodeType": "UserDefinedTypeName",
1718
+ "pathNode": {
1719
+ "id": 2799,
1720
+ "name": "BytesSlot",
1721
+ "nameLocations": [
1722
+ "4073:9:17"
1723
+ ],
1724
+ "nodeType": "IdentifierPath",
1725
+ "referencedDeclaration": 2706,
1726
+ "src": "4073:9:17"
1727
+ },
1728
+ "referencedDeclaration": 2706,
1729
+ "src": "4073:9:17",
1730
+ "typeDescriptions": {
1731
+ "typeIdentifier": "t_struct$_BytesSlot_$2706_storage_ptr",
1732
+ "typeString": "struct StorageSlot.BytesSlot"
1733
+ }
1734
+ },
1735
+ "visibility": "internal"
1736
+ }
1737
+ ],
1738
+ "src": "4072:21:17"
1739
+ },
1740
+ "scope": 2806,
1741
+ "src": "4007:172:17",
1742
+ "stateMutability": "pure",
1743
+ "virtual": false,
1744
+ "visibility": "internal"
1745
+ }
1746
+ ],
1747
+ "scope": 2807,
1748
+ "src": "1407:2774:17",
1749
+ "usedErrors": [],
1750
+ "usedEvents": []
1751
+ }
1752
+ ],
1753
+ "src": "193:3989:17"
1754
+ },
1755
+ "compiler": {
1756
+ "name": "solc",
1757
+ "version": "0.8.21+commit.d9974bed.Emscripten.clang"
1758
+ },
1759
+ "networks": {},
1760
+ "schemaVersion": "3.4.16",
1761
+ "updatedAt": "2026-01-24T20:23:04.059Z",
1762
+ "devdoc": {
1763
+ "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.",
1764
+ "kind": "dev",
1765
+ "methods": {},
1766
+ "version": 1
1767
+ },
1768
+ "userdoc": {
1769
+ "kind": "user",
1770
+ "methods": {},
1771
+ "version": 1
1772
+ }
1773
+ }