@bananapus/suckers-v6 1.0.2 → 1.1.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 (105) hide show
  1. package/deployments/arbitrum/CCIPHelper.json +939 -0
  2. package/deployments/arbitrum/JBArbitrumSucker.json +2310 -0
  3. package/deployments/arbitrum/JBArbitrumSuckerDeployer.json +443 -0
  4. package/deployments/arbitrum/JBCCIPLib.json +119 -0
  5. package/deployments/arbitrum/JBCCIPSuckerDeployer__BASE.json +474 -0
  6. package/deployments/arbitrum/JBCCIPSuckerDeployer__ETH.json +474 -0
  7. package/deployments/arbitrum/JBCCIPSuckerDeployer__OP.json +474 -0
  8. package/deployments/arbitrum/JBCCIPSucker__BASE.json +2460 -0
  9. package/deployments/arbitrum/JBCCIPSucker__ETH.json +2460 -0
  10. package/deployments/arbitrum/JBCCIPSucker__OP.json +2460 -0
  11. package/deployments/arbitrum/JBSuckerLib.json +457 -0
  12. package/deployments/arbitrum/JBSuckerRegistry.json +1234 -0
  13. package/deployments/arbitrum_sepolia/CCIPHelper.json +939 -0
  14. package/deployments/arbitrum_sepolia/JBArbitrumSucker.json +2310 -0
  15. package/deployments/arbitrum_sepolia/JBArbitrumSuckerDeployer.json +443 -0
  16. package/deployments/arbitrum_sepolia/JBCCIPLib.json +119 -0
  17. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +474 -0
  18. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +474 -0
  19. package/deployments/arbitrum_sepolia/JBCCIPSuckerDeployer__OP_SEP.json +474 -0
  20. package/deployments/arbitrum_sepolia/JBCCIPSucker__BASE_SEP.json +2460 -0
  21. package/deployments/arbitrum_sepolia/JBCCIPSucker__ETH_SEP.json +2460 -0
  22. package/deployments/arbitrum_sepolia/JBCCIPSucker__OP_SEP.json +2460 -0
  23. package/deployments/arbitrum_sepolia/JBSuckerLib.json +457 -0
  24. package/deployments/arbitrum_sepolia/JBSuckerRegistry.json +1234 -0
  25. package/deployments/base/CCIPHelper.json +944 -0
  26. package/deployments/base/JBBaseSucker.json +2302 -0
  27. package/deployments/base/JBBaseSuckerDeployer.json +430 -0
  28. package/deployments/base/JBCCIPLib.json +124 -0
  29. package/deployments/base/JBCCIPSuckerDeployer__ARB.json +479 -0
  30. package/deployments/base/JBCCIPSuckerDeployer__ETH.json +479 -0
  31. package/deployments/base/JBCCIPSuckerDeployer__OP.json +479 -0
  32. package/deployments/base/JBCCIPSucker__ARB.json +2465 -0
  33. package/deployments/base/JBCCIPSucker__ETH.json +2465 -0
  34. package/deployments/base/JBCCIPSucker__OP.json +2465 -0
  35. package/deployments/base/JBSuckerLib.json +462 -0
  36. package/deployments/base/JBSuckerRegistry.json +1239 -0
  37. package/deployments/base_sepolia/CCIPHelper.json +944 -0
  38. package/deployments/base_sepolia/JBBaseSucker.json +2302 -0
  39. package/deployments/base_sepolia/JBBaseSuckerDeployer.json +430 -0
  40. package/deployments/base_sepolia/JBCCIPLib.json +124 -0
  41. package/deployments/base_sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +479 -0
  42. package/deployments/base_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +479 -0
  43. package/deployments/base_sepolia/JBCCIPSuckerDeployer__OP_SEP.json +479 -0
  44. package/deployments/base_sepolia/JBCCIPSucker__ARB_SEP.json +2465 -0
  45. package/deployments/base_sepolia/JBCCIPSucker__ETH_SEP.json +2465 -0
  46. package/deployments/base_sepolia/JBCCIPSucker__OP_SEP.json +2465 -0
  47. package/deployments/base_sepolia/JBSuckerLib.json +462 -0
  48. package/deployments/base_sepolia/JBSuckerRegistry.json +1239 -0
  49. package/deployments/ethereum/CCIPHelper.json +936 -0
  50. package/deployments/ethereum/JBArbitrumSucker.json +2307 -0
  51. package/deployments/ethereum/JBArbitrumSuckerDeployer.json +440 -0
  52. package/deployments/ethereum/JBBaseSucker.json +2294 -0
  53. package/deployments/ethereum/JBBaseSuckerDeployer.json +422 -0
  54. package/deployments/ethereum/JBCCIPLib.json +116 -0
  55. package/deployments/ethereum/JBCCIPSuckerDeployer__ARB.json +471 -0
  56. package/deployments/ethereum/JBCCIPSuckerDeployer__BASE.json +471 -0
  57. package/deployments/ethereum/JBCCIPSuckerDeployer__OP.json +471 -0
  58. package/deployments/ethereum/JBCCIPSucker__ARB.json +2457 -0
  59. package/deployments/ethereum/JBCCIPSucker__BASE.json +2457 -0
  60. package/deployments/ethereum/JBCCIPSucker__OP.json +2457 -0
  61. package/deployments/ethereum/JBOptimismSucker.json +2294 -0
  62. package/deployments/ethereum/JBOptimismSuckerDeployer.json +422 -0
  63. package/deployments/ethereum/JBSuckerLib.json +454 -0
  64. package/deployments/ethereum/JBSuckerRegistry.json +1231 -0
  65. package/deployments/optimism/CCIPHelper.json +944 -0
  66. package/deployments/optimism/JBCCIPLib.json +124 -0
  67. package/deployments/optimism/JBCCIPSuckerDeployer__ARB.json +479 -0
  68. package/deployments/optimism/JBCCIPSuckerDeployer__BASE.json +479 -0
  69. package/deployments/optimism/JBCCIPSuckerDeployer__ETH.json +479 -0
  70. package/deployments/optimism/JBCCIPSucker__ARB.json +2465 -0
  71. package/deployments/optimism/JBCCIPSucker__BASE.json +2465 -0
  72. package/deployments/optimism/JBCCIPSucker__ETH.json +2465 -0
  73. package/deployments/optimism/JBOptimismSucker.json +2302 -0
  74. package/deployments/optimism/JBOptimismSuckerDeployer.json +430 -0
  75. package/deployments/optimism/JBSuckerLib.json +462 -0
  76. package/deployments/optimism/JBSuckerRegistry.json +1239 -0
  77. package/deployments/optimism_sepolia/CCIPHelper.json +944 -0
  78. package/deployments/optimism_sepolia/JBCCIPLib.json +124 -0
  79. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +479 -0
  80. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +479 -0
  81. package/deployments/optimism_sepolia/JBCCIPSuckerDeployer__ETH_SEP.json +479 -0
  82. package/deployments/optimism_sepolia/JBCCIPSucker__ARB_SEP.json +2465 -0
  83. package/deployments/optimism_sepolia/JBCCIPSucker__BASE_SEP.json +2465 -0
  84. package/deployments/optimism_sepolia/JBCCIPSucker__ETH_SEP.json +2465 -0
  85. package/deployments/optimism_sepolia/JBOptimismSucker.json +2302 -0
  86. package/deployments/optimism_sepolia/JBOptimismSuckerDeployer.json +430 -0
  87. package/deployments/optimism_sepolia/JBSuckerLib.json +462 -0
  88. package/deployments/optimism_sepolia/JBSuckerRegistry.json +1239 -0
  89. package/deployments/sepolia/CCIPHelper.json +936 -0
  90. package/deployments/sepolia/JBArbitrumSucker.json +2307 -0
  91. package/deployments/sepolia/JBArbitrumSuckerDeployer.json +440 -0
  92. package/deployments/sepolia/JBBaseSucker.json +2294 -0
  93. package/deployments/sepolia/JBBaseSuckerDeployer.json +422 -0
  94. package/deployments/sepolia/JBCCIPLib.json +116 -0
  95. package/deployments/sepolia/JBCCIPSuckerDeployer__ARB_SEP.json +471 -0
  96. package/deployments/sepolia/JBCCIPSuckerDeployer__BASE_SEP.json +471 -0
  97. package/deployments/sepolia/JBCCIPSuckerDeployer__OP_SEP.json +471 -0
  98. package/deployments/sepolia/JBCCIPSucker__ARB_SEP.json +2457 -0
  99. package/deployments/sepolia/JBCCIPSucker__BASE_SEP.json +2457 -0
  100. package/deployments/sepolia/JBCCIPSucker__OP_SEP.json +2457 -0
  101. package/deployments/sepolia/JBOptimismSucker.json +2294 -0
  102. package/deployments/sepolia/JBOptimismSuckerDeployer.json +422 -0
  103. package/deployments/sepolia/JBSuckerLib.json +454 -0
  104. package/deployments/sepolia/JBSuckerRegistry.json +1231 -0
  105. package/package.json +2 -1
@@ -0,0 +1,2302 @@
1
+ {
2
+ "format": "sphinx-sol-ct-artifact-1",
3
+ "address": "0x8c3b3d0fe56b31850a000333ef16195dbcd5a806",
4
+ "sourceName": "node_modules/@bananapus/suckers-v6/src/JBOptimismSucker.sol",
5
+ "contractName": "JBOptimismSucker",
6
+ "chainId": "0xaa37dc",
7
+ "abi": [
8
+ {
9
+ "type": "constructor",
10
+ "inputs": [
11
+ {
12
+ "name": "deployer",
13
+ "type": "address",
14
+ "internalType": "contract JBOptimismSuckerDeployer"
15
+ },
16
+ {
17
+ "name": "directory",
18
+ "type": "address",
19
+ "internalType": "contract IJBDirectory"
20
+ },
21
+ {
22
+ "name": "permissions",
23
+ "type": "address",
24
+ "internalType": "contract IJBPermissions"
25
+ },
26
+ {
27
+ "name": "tokens",
28
+ "type": "address",
29
+ "internalType": "contract IJBTokens"
30
+ },
31
+ {
32
+ "name": "feeProjectId",
33
+ "type": "uint256",
34
+ "internalType": "uint256"
35
+ },
36
+ {
37
+ "name": "registry",
38
+ "type": "address",
39
+ "internalType": "contract IJBSuckerRegistry"
40
+ },
41
+ {
42
+ "name": "trustedForwarder",
43
+ "type": "address",
44
+ "internalType": "address"
45
+ }
46
+ ],
47
+ "stateMutability": "nonpayable"
48
+ },
49
+ {
50
+ "type": "receive",
51
+ "stateMutability": "payable"
52
+ },
53
+ {
54
+ "type": "function",
55
+ "name": "DIRECTORY",
56
+ "inputs": [],
57
+ "outputs": [
58
+ {
59
+ "name": "",
60
+ "type": "address",
61
+ "internalType": "contract IJBDirectory"
62
+ }
63
+ ],
64
+ "stateMutability": "view"
65
+ },
66
+ {
67
+ "type": "function",
68
+ "name": "FEE_PROJECT_ID",
69
+ "inputs": [],
70
+ "outputs": [
71
+ {
72
+ "name": "",
73
+ "type": "uint256",
74
+ "internalType": "uint256"
75
+ }
76
+ ],
77
+ "stateMutability": "view"
78
+ },
79
+ {
80
+ "type": "function",
81
+ "name": "MESSAGE_VERSION",
82
+ "inputs": [],
83
+ "outputs": [
84
+ {
85
+ "name": "",
86
+ "type": "uint8",
87
+ "internalType": "uint8"
88
+ }
89
+ ],
90
+ "stateMutability": "view"
91
+ },
92
+ {
93
+ "type": "function",
94
+ "name": "MESSENGER_BASE_GAS_LIMIT",
95
+ "inputs": [],
96
+ "outputs": [
97
+ {
98
+ "name": "",
99
+ "type": "uint32",
100
+ "internalType": "uint32"
101
+ }
102
+ ],
103
+ "stateMutability": "view"
104
+ },
105
+ {
106
+ "type": "function",
107
+ "name": "MESSENGER_ERC20_MIN_GAS_LIMIT",
108
+ "inputs": [],
109
+ "outputs": [
110
+ {
111
+ "name": "",
112
+ "type": "uint32",
113
+ "internalType": "uint32"
114
+ }
115
+ ],
116
+ "stateMutability": "view"
117
+ },
118
+ {
119
+ "type": "function",
120
+ "name": "OPBRIDGE",
121
+ "inputs": [],
122
+ "outputs": [
123
+ {
124
+ "name": "",
125
+ "type": "address",
126
+ "internalType": "contract IOPStandardBridge"
127
+ }
128
+ ],
129
+ "stateMutability": "view"
130
+ },
131
+ {
132
+ "type": "function",
133
+ "name": "OPMESSENGER",
134
+ "inputs": [],
135
+ "outputs": [
136
+ {
137
+ "name": "",
138
+ "type": "address",
139
+ "internalType": "contract IOPMessenger"
140
+ }
141
+ ],
142
+ "stateMutability": "view"
143
+ },
144
+ {
145
+ "type": "function",
146
+ "name": "PERMISSIONS",
147
+ "inputs": [],
148
+ "outputs": [
149
+ {
150
+ "name": "",
151
+ "type": "address",
152
+ "internalType": "contract IJBPermissions"
153
+ }
154
+ ],
155
+ "stateMutability": "view"
156
+ },
157
+ {
158
+ "type": "function",
159
+ "name": "PROJECTS",
160
+ "inputs": [],
161
+ "outputs": [
162
+ {
163
+ "name": "",
164
+ "type": "address",
165
+ "internalType": "contract IJBProjects"
166
+ }
167
+ ],
168
+ "stateMutability": "view"
169
+ },
170
+ {
171
+ "type": "function",
172
+ "name": "REGISTRY",
173
+ "inputs": [],
174
+ "outputs": [
175
+ {
176
+ "name": "",
177
+ "type": "address",
178
+ "internalType": "contract IJBSuckerRegistry"
179
+ }
180
+ ],
181
+ "stateMutability": "view"
182
+ },
183
+ {
184
+ "type": "function",
185
+ "name": "TOKENS",
186
+ "inputs": [],
187
+ "outputs": [
188
+ {
189
+ "name": "",
190
+ "type": "address",
191
+ "internalType": "contract IJBTokens"
192
+ }
193
+ ],
194
+ "stateMutability": "view"
195
+ },
196
+ {
197
+ "type": "function",
198
+ "name": "amountToAddToBalanceOf",
199
+ "inputs": [
200
+ {
201
+ "name": "token",
202
+ "type": "address",
203
+ "internalType": "address"
204
+ }
205
+ ],
206
+ "outputs": [
207
+ {
208
+ "name": "",
209
+ "type": "uint256",
210
+ "internalType": "uint256"
211
+ }
212
+ ],
213
+ "stateMutability": "view"
214
+ },
215
+ {
216
+ "type": "function",
217
+ "name": "claim",
218
+ "inputs": [
219
+ {
220
+ "name": "claims",
221
+ "type": "tuple[]",
222
+ "internalType": "struct JBClaim[]",
223
+ "components": [
224
+ {
225
+ "name": "token",
226
+ "type": "address",
227
+ "internalType": "address"
228
+ },
229
+ {
230
+ "name": "leaf",
231
+ "type": "tuple",
232
+ "internalType": "struct JBLeaf",
233
+ "components": [
234
+ {
235
+ "name": "index",
236
+ "type": "uint256",
237
+ "internalType": "uint256"
238
+ },
239
+ {
240
+ "name": "beneficiary",
241
+ "type": "bytes32",
242
+ "internalType": "bytes32"
243
+ },
244
+ {
245
+ "name": "projectTokenCount",
246
+ "type": "uint256",
247
+ "internalType": "uint256"
248
+ },
249
+ {
250
+ "name": "terminalTokenAmount",
251
+ "type": "uint256",
252
+ "internalType": "uint256"
253
+ },
254
+ {
255
+ "name": "metadata",
256
+ "type": "bytes32",
257
+ "internalType": "bytes32"
258
+ }
259
+ ]
260
+ },
261
+ {
262
+ "name": "proof",
263
+ "type": "bytes32[32]",
264
+ "internalType": "bytes32[32]"
265
+ }
266
+ ]
267
+ }
268
+ ],
269
+ "outputs": [],
270
+ "stateMutability": "nonpayable"
271
+ },
272
+ {
273
+ "type": "function",
274
+ "name": "claim",
275
+ "inputs": [
276
+ {
277
+ "name": "claimData",
278
+ "type": "tuple",
279
+ "internalType": "struct JBClaim",
280
+ "components": [
281
+ {
282
+ "name": "token",
283
+ "type": "address",
284
+ "internalType": "address"
285
+ },
286
+ {
287
+ "name": "leaf",
288
+ "type": "tuple",
289
+ "internalType": "struct JBLeaf",
290
+ "components": [
291
+ {
292
+ "name": "index",
293
+ "type": "uint256",
294
+ "internalType": "uint256"
295
+ },
296
+ {
297
+ "name": "beneficiary",
298
+ "type": "bytes32",
299
+ "internalType": "bytes32"
300
+ },
301
+ {
302
+ "name": "projectTokenCount",
303
+ "type": "uint256",
304
+ "internalType": "uint256"
305
+ },
306
+ {
307
+ "name": "terminalTokenAmount",
308
+ "type": "uint256",
309
+ "internalType": "uint256"
310
+ },
311
+ {
312
+ "name": "metadata",
313
+ "type": "bytes32",
314
+ "internalType": "bytes32"
315
+ }
316
+ ]
317
+ },
318
+ {
319
+ "name": "proof",
320
+ "type": "bytes32[32]",
321
+ "internalType": "bytes32[32]"
322
+ }
323
+ ]
324
+ }
325
+ ],
326
+ "outputs": [],
327
+ "stateMutability": "nonpayable"
328
+ },
329
+ {
330
+ "type": "function",
331
+ "name": "claimRetainedToRemoteFee",
332
+ "inputs": [
333
+ {
334
+ "name": "beneficiary",
335
+ "type": "address",
336
+ "internalType": "address payable"
337
+ }
338
+ ],
339
+ "outputs": [],
340
+ "stateMutability": "nonpayable"
341
+ },
342
+ {
343
+ "type": "function",
344
+ "name": "claimRetainedTransportPaymentRefund",
345
+ "inputs": [
346
+ {
347
+ "name": "beneficiary",
348
+ "type": "address",
349
+ "internalType": "address payable"
350
+ }
351
+ ],
352
+ "outputs": [],
353
+ "stateMutability": "nonpayable"
354
+ },
355
+ {
356
+ "type": "function",
357
+ "name": "deployer",
358
+ "inputs": [],
359
+ "outputs": [
360
+ {
361
+ "name": "",
362
+ "type": "address",
363
+ "internalType": "address"
364
+ }
365
+ ],
366
+ "stateMutability": "view"
367
+ },
368
+ {
369
+ "type": "function",
370
+ "name": "enableEmergencyHatchFor",
371
+ "inputs": [
372
+ {
373
+ "name": "tokens",
374
+ "type": "address[]",
375
+ "internalType": "address[]"
376
+ }
377
+ ],
378
+ "outputs": [],
379
+ "stateMutability": "nonpayable"
380
+ },
381
+ {
382
+ "type": "function",
383
+ "name": "executedLeafHashOf",
384
+ "inputs": [
385
+ {
386
+ "name": "token",
387
+ "type": "address",
388
+ "internalType": "address"
389
+ },
390
+ {
391
+ "name": "index",
392
+ "type": "uint256",
393
+ "internalType": "uint256"
394
+ }
395
+ ],
396
+ "outputs": [
397
+ {
398
+ "name": "",
399
+ "type": "bytes32",
400
+ "internalType": "bytes32"
401
+ }
402
+ ],
403
+ "stateMutability": "view"
404
+ },
405
+ {
406
+ "type": "function",
407
+ "name": "exitThroughEmergencyHatch",
408
+ "inputs": [
409
+ {
410
+ "name": "claimData",
411
+ "type": "tuple",
412
+ "internalType": "struct JBClaim",
413
+ "components": [
414
+ {
415
+ "name": "token",
416
+ "type": "address",
417
+ "internalType": "address"
418
+ },
419
+ {
420
+ "name": "leaf",
421
+ "type": "tuple",
422
+ "internalType": "struct JBLeaf",
423
+ "components": [
424
+ {
425
+ "name": "index",
426
+ "type": "uint256",
427
+ "internalType": "uint256"
428
+ },
429
+ {
430
+ "name": "beneficiary",
431
+ "type": "bytes32",
432
+ "internalType": "bytes32"
433
+ },
434
+ {
435
+ "name": "projectTokenCount",
436
+ "type": "uint256",
437
+ "internalType": "uint256"
438
+ },
439
+ {
440
+ "name": "terminalTokenAmount",
441
+ "type": "uint256",
442
+ "internalType": "uint256"
443
+ },
444
+ {
445
+ "name": "metadata",
446
+ "type": "bytes32",
447
+ "internalType": "bytes32"
448
+ }
449
+ ]
450
+ },
451
+ {
452
+ "name": "proof",
453
+ "type": "bytes32[32]",
454
+ "internalType": "bytes32[32]"
455
+ }
456
+ ]
457
+ }
458
+ ],
459
+ "outputs": [],
460
+ "stateMutability": "nonpayable"
461
+ },
462
+ {
463
+ "type": "function",
464
+ "name": "fromRemote",
465
+ "inputs": [
466
+ {
467
+ "name": "root",
468
+ "type": "tuple",
469
+ "internalType": "struct JBMessageRoot",
470
+ "components": [
471
+ {
472
+ "name": "version",
473
+ "type": "uint8",
474
+ "internalType": "uint8"
475
+ },
476
+ {
477
+ "name": "token",
478
+ "type": "bytes32",
479
+ "internalType": "bytes32"
480
+ },
481
+ {
482
+ "name": "amount",
483
+ "type": "uint256",
484
+ "internalType": "uint256"
485
+ },
486
+ {
487
+ "name": "remoteRoot",
488
+ "type": "tuple",
489
+ "internalType": "struct JBInboxTreeRoot",
490
+ "components": [
491
+ {
492
+ "name": "nonce",
493
+ "type": "uint64",
494
+ "internalType": "uint64"
495
+ },
496
+ {
497
+ "name": "root",
498
+ "type": "bytes32",
499
+ "internalType": "bytes32"
500
+ }
501
+ ]
502
+ },
503
+ {
504
+ "name": "accounts",
505
+ "type": "tuple[]",
506
+ "internalType": "struct JBChainAccounting[]",
507
+ "components": [
508
+ {
509
+ "name": "chainId",
510
+ "type": "uint256",
511
+ "internalType": "uint256"
512
+ },
513
+ {
514
+ "name": "totalSupply",
515
+ "type": "uint256",
516
+ "internalType": "uint256"
517
+ },
518
+ {
519
+ "name": "contexts",
520
+ "type": "tuple[]",
521
+ "internalType": "struct JBSourceContext[]",
522
+ "components": [
523
+ {
524
+ "name": "token",
525
+ "type": "bytes32",
526
+ "internalType": "bytes32"
527
+ },
528
+ {
529
+ "name": "decimals",
530
+ "type": "uint8",
531
+ "internalType": "uint8"
532
+ },
533
+ {
534
+ "name": "surplus",
535
+ "type": "uint128",
536
+ "internalType": "uint128"
537
+ },
538
+ {
539
+ "name": "balance",
540
+ "type": "uint128",
541
+ "internalType": "uint128"
542
+ }
543
+ ]
544
+ },
545
+ {
546
+ "name": "timestamp",
547
+ "type": "uint256",
548
+ "internalType": "uint256"
549
+ }
550
+ ]
551
+ }
552
+ ]
553
+ }
554
+ ],
555
+ "outputs": [],
556
+ "stateMutability": "payable"
557
+ },
558
+ {
559
+ "type": "function",
560
+ "name": "fromRemoteAccounting",
561
+ "inputs": [
562
+ {
563
+ "name": "snapshot",
564
+ "type": "tuple",
565
+ "internalType": "struct JBAccountingSnapshot",
566
+ "components": [
567
+ {
568
+ "name": "version",
569
+ "type": "uint8",
570
+ "internalType": "uint8"
571
+ },
572
+ {
573
+ "name": "accounts",
574
+ "type": "tuple[]",
575
+ "internalType": "struct JBChainAccounting[]",
576
+ "components": [
577
+ {
578
+ "name": "chainId",
579
+ "type": "uint256",
580
+ "internalType": "uint256"
581
+ },
582
+ {
583
+ "name": "totalSupply",
584
+ "type": "uint256",
585
+ "internalType": "uint256"
586
+ },
587
+ {
588
+ "name": "contexts",
589
+ "type": "tuple[]",
590
+ "internalType": "struct JBSourceContext[]",
591
+ "components": [
592
+ {
593
+ "name": "token",
594
+ "type": "bytes32",
595
+ "internalType": "bytes32"
596
+ },
597
+ {
598
+ "name": "decimals",
599
+ "type": "uint8",
600
+ "internalType": "uint8"
601
+ },
602
+ {
603
+ "name": "surplus",
604
+ "type": "uint128",
605
+ "internalType": "uint128"
606
+ },
607
+ {
608
+ "name": "balance",
609
+ "type": "uint128",
610
+ "internalType": "uint128"
611
+ }
612
+ ]
613
+ },
614
+ {
615
+ "name": "timestamp",
616
+ "type": "uint256",
617
+ "internalType": "uint256"
618
+ }
619
+ ]
620
+ }
621
+ ]
622
+ }
623
+ ],
624
+ "outputs": [],
625
+ "stateMutability": "nonpayable"
626
+ },
627
+ {
628
+ "type": "function",
629
+ "name": "inboxOf",
630
+ "inputs": [
631
+ {
632
+ "name": "token",
633
+ "type": "address",
634
+ "internalType": "address"
635
+ }
636
+ ],
637
+ "outputs": [
638
+ {
639
+ "name": "",
640
+ "type": "tuple",
641
+ "internalType": "struct JBInboxTreeRoot",
642
+ "components": [
643
+ {
644
+ "name": "nonce",
645
+ "type": "uint64",
646
+ "internalType": "uint64"
647
+ },
648
+ {
649
+ "name": "root",
650
+ "type": "bytes32",
651
+ "internalType": "bytes32"
652
+ }
653
+ ]
654
+ }
655
+ ],
656
+ "stateMutability": "view"
657
+ },
658
+ {
659
+ "type": "function",
660
+ "name": "initialize",
661
+ "inputs": [
662
+ {
663
+ "name": "localProjectId",
664
+ "type": "uint256",
665
+ "internalType": "uint256"
666
+ },
667
+ {
668
+ "name": "remotePeer",
669
+ "type": "bytes32",
670
+ "internalType": "bytes32"
671
+ }
672
+ ],
673
+ "outputs": [],
674
+ "stateMutability": "nonpayable"
675
+ },
676
+ {
677
+ "type": "function",
678
+ "name": "initialize",
679
+ "inputs": [
680
+ {
681
+ "name": "initialProjectId",
682
+ "type": "uint256",
683
+ "internalType": "uint256"
684
+ }
685
+ ],
686
+ "outputs": [],
687
+ "stateMutability": "nonpayable"
688
+ },
689
+ {
690
+ "type": "function",
691
+ "name": "isMapped",
692
+ "inputs": [
693
+ {
694
+ "name": "token",
695
+ "type": "address",
696
+ "internalType": "address"
697
+ }
698
+ ],
699
+ "outputs": [
700
+ {
701
+ "name": "",
702
+ "type": "bool",
703
+ "internalType": "bool"
704
+ }
705
+ ],
706
+ "stateMutability": "view"
707
+ },
708
+ {
709
+ "type": "function",
710
+ "name": "isTrustedForwarder",
711
+ "inputs": [
712
+ {
713
+ "name": "forwarder",
714
+ "type": "address",
715
+ "internalType": "address"
716
+ }
717
+ ],
718
+ "outputs": [
719
+ {
720
+ "name": "",
721
+ "type": "bool",
722
+ "internalType": "bool"
723
+ }
724
+ ],
725
+ "stateMutability": "view"
726
+ },
727
+ {
728
+ "type": "function",
729
+ "name": "mapToken",
730
+ "inputs": [
731
+ {
732
+ "name": "map",
733
+ "type": "tuple",
734
+ "internalType": "struct JBTokenMapping",
735
+ "components": [
736
+ {
737
+ "name": "localToken",
738
+ "type": "address",
739
+ "internalType": "address"
740
+ },
741
+ {
742
+ "name": "minGas",
743
+ "type": "uint32",
744
+ "internalType": "uint32"
745
+ },
746
+ {
747
+ "name": "remoteToken",
748
+ "type": "bytes32",
749
+ "internalType": "bytes32"
750
+ }
751
+ ]
752
+ }
753
+ ],
754
+ "outputs": [],
755
+ "stateMutability": "payable"
756
+ },
757
+ {
758
+ "type": "function",
759
+ "name": "mapTokens",
760
+ "inputs": [
761
+ {
762
+ "name": "maps",
763
+ "type": "tuple[]",
764
+ "internalType": "struct JBTokenMapping[]",
765
+ "components": [
766
+ {
767
+ "name": "localToken",
768
+ "type": "address",
769
+ "internalType": "address"
770
+ },
771
+ {
772
+ "name": "minGas",
773
+ "type": "uint32",
774
+ "internalType": "uint32"
775
+ },
776
+ {
777
+ "name": "remoteToken",
778
+ "type": "bytes32",
779
+ "internalType": "bytes32"
780
+ }
781
+ ]
782
+ }
783
+ ],
784
+ "outputs": [],
785
+ "stateMutability": "payable"
786
+ },
787
+ {
788
+ "type": "function",
789
+ "name": "outboxOf",
790
+ "inputs": [
791
+ {
792
+ "name": "token",
793
+ "type": "address",
794
+ "internalType": "address"
795
+ }
796
+ ],
797
+ "outputs": [
798
+ {
799
+ "name": "",
800
+ "type": "tuple",
801
+ "internalType": "struct JBOutboxTree",
802
+ "components": [
803
+ {
804
+ "name": "nonce",
805
+ "type": "uint64",
806
+ "internalType": "uint64"
807
+ },
808
+ {
809
+ "name": "numberOfClaimsSent",
810
+ "type": "uint192",
811
+ "internalType": "uint192"
812
+ },
813
+ {
814
+ "name": "balance",
815
+ "type": "uint256",
816
+ "internalType": "uint256"
817
+ },
818
+ {
819
+ "name": "tree",
820
+ "type": "tuple",
821
+ "internalType": "struct MerkleLib.Tree",
822
+ "components": [
823
+ {
824
+ "name": "branch",
825
+ "type": "bytes32[32]",
826
+ "internalType": "bytes32[32]"
827
+ },
828
+ {
829
+ "name": "count",
830
+ "type": "uint256",
831
+ "internalType": "uint256"
832
+ }
833
+ ]
834
+ }
835
+ ]
836
+ }
837
+ ],
838
+ "stateMutability": "view"
839
+ },
840
+ {
841
+ "type": "function",
842
+ "name": "peer",
843
+ "inputs": [],
844
+ "outputs": [
845
+ {
846
+ "name": "",
847
+ "type": "bytes32",
848
+ "internalType": "bytes32"
849
+ }
850
+ ],
851
+ "stateMutability": "view"
852
+ },
853
+ {
854
+ "type": "function",
855
+ "name": "peerChainAccountsOf",
856
+ "inputs": [],
857
+ "outputs": [
858
+ {
859
+ "name": "accounts",
860
+ "type": "tuple[]",
861
+ "internalType": "struct JBChainAccounting[]",
862
+ "components": [
863
+ {
864
+ "name": "chainId",
865
+ "type": "uint256",
866
+ "internalType": "uint256"
867
+ },
868
+ {
869
+ "name": "totalSupply",
870
+ "type": "uint256",
871
+ "internalType": "uint256"
872
+ },
873
+ {
874
+ "name": "contexts",
875
+ "type": "tuple[]",
876
+ "internalType": "struct JBSourceContext[]",
877
+ "components": [
878
+ {
879
+ "name": "token",
880
+ "type": "bytes32",
881
+ "internalType": "bytes32"
882
+ },
883
+ {
884
+ "name": "decimals",
885
+ "type": "uint8",
886
+ "internalType": "uint8"
887
+ },
888
+ {
889
+ "name": "surplus",
890
+ "type": "uint128",
891
+ "internalType": "uint128"
892
+ },
893
+ {
894
+ "name": "balance",
895
+ "type": "uint128",
896
+ "internalType": "uint128"
897
+ }
898
+ ]
899
+ },
900
+ {
901
+ "name": "timestamp",
902
+ "type": "uint256",
903
+ "internalType": "uint256"
904
+ }
905
+ ]
906
+ }
907
+ ],
908
+ "stateMutability": "view"
909
+ },
910
+ {
911
+ "type": "function",
912
+ "name": "peerChainContextsOf",
913
+ "inputs": [
914
+ {
915
+ "name": "chainId",
916
+ "type": "uint256",
917
+ "internalType": "uint256"
918
+ }
919
+ ],
920
+ "outputs": [
921
+ {
922
+ "name": "contexts",
923
+ "type": "tuple[]",
924
+ "internalType": "struct JBPeerChainContext[]",
925
+ "components": [
926
+ {
927
+ "name": "currency",
928
+ "type": "uint32",
929
+ "internalType": "uint32"
930
+ },
931
+ {
932
+ "name": "decimals",
933
+ "type": "uint8",
934
+ "internalType": "uint8"
935
+ },
936
+ {
937
+ "name": "surplus",
938
+ "type": "uint128",
939
+ "internalType": "uint128"
940
+ },
941
+ {
942
+ "name": "balance",
943
+ "type": "uint128",
944
+ "internalType": "uint128"
945
+ }
946
+ ]
947
+ },
948
+ {
949
+ "name": "snapshot",
950
+ "type": "uint256",
951
+ "internalType": "uint256"
952
+ }
953
+ ],
954
+ "stateMutability": "view"
955
+ },
956
+ {
957
+ "type": "function",
958
+ "name": "peerChainId",
959
+ "inputs": [],
960
+ "outputs": [
961
+ {
962
+ "name": "",
963
+ "type": "uint256",
964
+ "internalType": "uint256"
965
+ }
966
+ ],
967
+ "stateMutability": "view"
968
+ },
969
+ {
970
+ "type": "function",
971
+ "name": "peerChainIds",
972
+ "inputs": [
973
+ {
974
+ "name": "includeVirtual",
975
+ "type": "bool",
976
+ "internalType": "bool"
977
+ }
978
+ ],
979
+ "outputs": [
980
+ {
981
+ "name": "chainIds",
982
+ "type": "uint256[]",
983
+ "internalType": "uint256[]"
984
+ }
985
+ ],
986
+ "stateMutability": "view"
987
+ },
988
+ {
989
+ "type": "function",
990
+ "name": "peerChainTotalSupplyOf",
991
+ "inputs": [
992
+ {
993
+ "name": "chainId",
994
+ "type": "uint256",
995
+ "internalType": "uint256"
996
+ }
997
+ ],
998
+ "outputs": [
999
+ {
1000
+ "name": "",
1001
+ "type": "uint256",
1002
+ "internalType": "uint256"
1003
+ }
1004
+ ],
1005
+ "stateMutability": "view"
1006
+ },
1007
+ {
1008
+ "type": "function",
1009
+ "name": "peerChainTotalSupplyValue",
1010
+ "inputs": [
1011
+ {
1012
+ "name": "chainId",
1013
+ "type": "uint256",
1014
+ "internalType": "uint256"
1015
+ }
1016
+ ],
1017
+ "outputs": [
1018
+ {
1019
+ "name": "",
1020
+ "type": "tuple",
1021
+ "internalType": "struct JBPeerChainValue",
1022
+ "components": [
1023
+ {
1024
+ "name": "value",
1025
+ "type": "uint256",
1026
+ "internalType": "uint256"
1027
+ },
1028
+ {
1029
+ "name": "peerChainId",
1030
+ "type": "uint256",
1031
+ "internalType": "uint256"
1032
+ },
1033
+ {
1034
+ "name": "snapshotTimestamp",
1035
+ "type": "uint256",
1036
+ "internalType": "uint256"
1037
+ }
1038
+ ]
1039
+ }
1040
+ ],
1041
+ "stateMutability": "view"
1042
+ },
1043
+ {
1044
+ "type": "function",
1045
+ "name": "prepare",
1046
+ "inputs": [
1047
+ {
1048
+ "name": "projectTokenCount",
1049
+ "type": "uint256",
1050
+ "internalType": "uint256"
1051
+ },
1052
+ {
1053
+ "name": "beneficiary",
1054
+ "type": "bytes32",
1055
+ "internalType": "bytes32"
1056
+ },
1057
+ {
1058
+ "name": "minTokensReclaimed",
1059
+ "type": "uint256",
1060
+ "internalType": "uint256"
1061
+ },
1062
+ {
1063
+ "name": "token",
1064
+ "type": "address",
1065
+ "internalType": "address"
1066
+ },
1067
+ {
1068
+ "name": "metadata",
1069
+ "type": "bytes32",
1070
+ "internalType": "bytes32"
1071
+ }
1072
+ ],
1073
+ "outputs": [],
1074
+ "stateMutability": "nonpayable"
1075
+ },
1076
+ {
1077
+ "type": "function",
1078
+ "name": "projectId",
1079
+ "inputs": [],
1080
+ "outputs": [
1081
+ {
1082
+ "name": "",
1083
+ "type": "uint256",
1084
+ "internalType": "uint256"
1085
+ }
1086
+ ],
1087
+ "stateMutability": "view"
1088
+ },
1089
+ {
1090
+ "type": "function",
1091
+ "name": "remoteTokenFor",
1092
+ "inputs": [
1093
+ {
1094
+ "name": "token",
1095
+ "type": "address",
1096
+ "internalType": "address"
1097
+ }
1098
+ ],
1099
+ "outputs": [
1100
+ {
1101
+ "name": "",
1102
+ "type": "tuple",
1103
+ "internalType": "struct JBRemoteToken",
1104
+ "components": [
1105
+ {
1106
+ "name": "enabled",
1107
+ "type": "bool",
1108
+ "internalType": "bool"
1109
+ },
1110
+ {
1111
+ "name": "emergencyHatch",
1112
+ "type": "bool",
1113
+ "internalType": "bool"
1114
+ },
1115
+ {
1116
+ "name": "minGas",
1117
+ "type": "uint32",
1118
+ "internalType": "uint32"
1119
+ },
1120
+ {
1121
+ "name": "addr",
1122
+ "type": "bytes32",
1123
+ "internalType": "bytes32"
1124
+ }
1125
+ ]
1126
+ }
1127
+ ],
1128
+ "stateMutability": "view"
1129
+ },
1130
+ {
1131
+ "type": "function",
1132
+ "name": "retainedToRemoteFeeBalance",
1133
+ "inputs": [],
1134
+ "outputs": [
1135
+ {
1136
+ "name": "",
1137
+ "type": "uint256",
1138
+ "internalType": "uint256"
1139
+ }
1140
+ ],
1141
+ "stateMutability": "view"
1142
+ },
1143
+ {
1144
+ "type": "function",
1145
+ "name": "retainedToRemoteFeeOf",
1146
+ "inputs": [
1147
+ {
1148
+ "name": "account",
1149
+ "type": "address",
1150
+ "internalType": "address"
1151
+ }
1152
+ ],
1153
+ "outputs": [
1154
+ {
1155
+ "name": "amount",
1156
+ "type": "uint256",
1157
+ "internalType": "uint256"
1158
+ }
1159
+ ],
1160
+ "stateMutability": "view"
1161
+ },
1162
+ {
1163
+ "type": "function",
1164
+ "name": "retainedTransportPaymentRefundBalance",
1165
+ "inputs": [],
1166
+ "outputs": [
1167
+ {
1168
+ "name": "",
1169
+ "type": "uint256",
1170
+ "internalType": "uint256"
1171
+ }
1172
+ ],
1173
+ "stateMutability": "view"
1174
+ },
1175
+ {
1176
+ "type": "function",
1177
+ "name": "retainedTransportPaymentRefundOf",
1178
+ "inputs": [
1179
+ {
1180
+ "name": "account",
1181
+ "type": "address",
1182
+ "internalType": "address"
1183
+ }
1184
+ ],
1185
+ "outputs": [
1186
+ {
1187
+ "name": "amount",
1188
+ "type": "uint256",
1189
+ "internalType": "uint256"
1190
+ }
1191
+ ],
1192
+ "stateMutability": "view"
1193
+ },
1194
+ {
1195
+ "type": "function",
1196
+ "name": "setDeprecation",
1197
+ "inputs": [
1198
+ {
1199
+ "name": "timestamp",
1200
+ "type": "uint40",
1201
+ "internalType": "uint40"
1202
+ }
1203
+ ],
1204
+ "outputs": [],
1205
+ "stateMutability": "nonpayable"
1206
+ },
1207
+ {
1208
+ "type": "function",
1209
+ "name": "snapshotTimestampOf",
1210
+ "inputs": [
1211
+ {
1212
+ "name": "chainId",
1213
+ "type": "uint256",
1214
+ "internalType": "uint256"
1215
+ }
1216
+ ],
1217
+ "outputs": [
1218
+ {
1219
+ "name": "",
1220
+ "type": "uint256",
1221
+ "internalType": "uint256"
1222
+ }
1223
+ ],
1224
+ "stateMutability": "view"
1225
+ },
1226
+ {
1227
+ "type": "function",
1228
+ "name": "state",
1229
+ "inputs": [],
1230
+ "outputs": [
1231
+ {
1232
+ "name": "",
1233
+ "type": "uint8",
1234
+ "internalType": "enum JBSuckerState"
1235
+ }
1236
+ ],
1237
+ "stateMutability": "view"
1238
+ },
1239
+ {
1240
+ "type": "function",
1241
+ "name": "supportsInterface",
1242
+ "inputs": [
1243
+ {
1244
+ "name": "interfaceId",
1245
+ "type": "bytes4",
1246
+ "internalType": "bytes4"
1247
+ }
1248
+ ],
1249
+ "outputs": [
1250
+ {
1251
+ "name": "",
1252
+ "type": "bool",
1253
+ "internalType": "bool"
1254
+ }
1255
+ ],
1256
+ "stateMutability": "view"
1257
+ },
1258
+ {
1259
+ "type": "function",
1260
+ "name": "syncAccountingData",
1261
+ "inputs": [],
1262
+ "outputs": [],
1263
+ "stateMutability": "payable"
1264
+ },
1265
+ {
1266
+ "type": "function",
1267
+ "name": "toRemote",
1268
+ "inputs": [
1269
+ {
1270
+ "name": "token",
1271
+ "type": "address",
1272
+ "internalType": "address"
1273
+ }
1274
+ ],
1275
+ "outputs": [],
1276
+ "stateMutability": "payable"
1277
+ },
1278
+ {
1279
+ "type": "function",
1280
+ "name": "trustedForwarder",
1281
+ "inputs": [],
1282
+ "outputs": [
1283
+ {
1284
+ "name": "",
1285
+ "type": "address",
1286
+ "internalType": "address"
1287
+ }
1288
+ ],
1289
+ "stateMutability": "view"
1290
+ },
1291
+ {
1292
+ "type": "event",
1293
+ "name": "AccountingDataSynced",
1294
+ "inputs": [
1295
+ {
1296
+ "name": "sourceTimestamp",
1297
+ "type": "uint256",
1298
+ "indexed": false,
1299
+ "internalType": "uint256"
1300
+ },
1301
+ {
1302
+ "name": "caller",
1303
+ "type": "address",
1304
+ "indexed": false,
1305
+ "internalType": "address"
1306
+ }
1307
+ ],
1308
+ "anonymous": false
1309
+ },
1310
+ {
1311
+ "type": "event",
1312
+ "name": "ClaimFailed",
1313
+ "inputs": [
1314
+ {
1315
+ "name": "token",
1316
+ "type": "address",
1317
+ "indexed": true,
1318
+ "internalType": "address"
1319
+ },
1320
+ {
1321
+ "name": "index",
1322
+ "type": "uint256",
1323
+ "indexed": false,
1324
+ "internalType": "uint256"
1325
+ },
1326
+ {
1327
+ "name": "caller",
1328
+ "type": "address",
1329
+ "indexed": false,
1330
+ "internalType": "address"
1331
+ }
1332
+ ],
1333
+ "anonymous": false
1334
+ },
1335
+ {
1336
+ "type": "event",
1337
+ "name": "Claimed",
1338
+ "inputs": [
1339
+ {
1340
+ "name": "beneficiary",
1341
+ "type": "bytes32",
1342
+ "indexed": false,
1343
+ "internalType": "bytes32"
1344
+ },
1345
+ {
1346
+ "name": "token",
1347
+ "type": "address",
1348
+ "indexed": false,
1349
+ "internalType": "address"
1350
+ },
1351
+ {
1352
+ "name": "projectTokenCount",
1353
+ "type": "uint256",
1354
+ "indexed": false,
1355
+ "internalType": "uint256"
1356
+ },
1357
+ {
1358
+ "name": "terminalTokenAmount",
1359
+ "type": "uint256",
1360
+ "indexed": false,
1361
+ "internalType": "uint256"
1362
+ },
1363
+ {
1364
+ "name": "index",
1365
+ "type": "uint256",
1366
+ "indexed": false,
1367
+ "internalType": "uint256"
1368
+ },
1369
+ {
1370
+ "name": "metadata",
1371
+ "type": "bytes32",
1372
+ "indexed": false,
1373
+ "internalType": "bytes32"
1374
+ },
1375
+ {
1376
+ "name": "caller",
1377
+ "type": "address",
1378
+ "indexed": false,
1379
+ "internalType": "address"
1380
+ }
1381
+ ],
1382
+ "anonymous": false
1383
+ },
1384
+ {
1385
+ "type": "event",
1386
+ "name": "DeprecationTimeUpdated",
1387
+ "inputs": [
1388
+ {
1389
+ "name": "timestamp",
1390
+ "type": "uint40",
1391
+ "indexed": false,
1392
+ "internalType": "uint40"
1393
+ },
1394
+ {
1395
+ "name": "caller",
1396
+ "type": "address",
1397
+ "indexed": false,
1398
+ "internalType": "address"
1399
+ }
1400
+ ],
1401
+ "anonymous": false
1402
+ },
1403
+ {
1404
+ "type": "event",
1405
+ "name": "EmergencyExit",
1406
+ "inputs": [
1407
+ {
1408
+ "name": "beneficiary",
1409
+ "type": "address",
1410
+ "indexed": true,
1411
+ "internalType": "address"
1412
+ },
1413
+ {
1414
+ "name": "token",
1415
+ "type": "address",
1416
+ "indexed": true,
1417
+ "internalType": "address"
1418
+ },
1419
+ {
1420
+ "name": "terminalTokenAmount",
1421
+ "type": "uint256",
1422
+ "indexed": false,
1423
+ "internalType": "uint256"
1424
+ },
1425
+ {
1426
+ "name": "projectTokenCount",
1427
+ "type": "uint256",
1428
+ "indexed": false,
1429
+ "internalType": "uint256"
1430
+ },
1431
+ {
1432
+ "name": "caller",
1433
+ "type": "address",
1434
+ "indexed": false,
1435
+ "internalType": "address"
1436
+ }
1437
+ ],
1438
+ "anonymous": false
1439
+ },
1440
+ {
1441
+ "type": "event",
1442
+ "name": "EmergencyHatchOpened",
1443
+ "inputs": [
1444
+ {
1445
+ "name": "tokens",
1446
+ "type": "address[]",
1447
+ "indexed": false,
1448
+ "internalType": "address[]"
1449
+ },
1450
+ {
1451
+ "name": "caller",
1452
+ "type": "address",
1453
+ "indexed": false,
1454
+ "internalType": "address"
1455
+ }
1456
+ ],
1457
+ "anonymous": false
1458
+ },
1459
+ {
1460
+ "type": "event",
1461
+ "name": "Initialized",
1462
+ "inputs": [
1463
+ {
1464
+ "name": "version",
1465
+ "type": "uint64",
1466
+ "indexed": false,
1467
+ "internalType": "uint64"
1468
+ }
1469
+ ],
1470
+ "anonymous": false
1471
+ },
1472
+ {
1473
+ "type": "event",
1474
+ "name": "InsertToOutboxTree",
1475
+ "inputs": [
1476
+ {
1477
+ "name": "beneficiary",
1478
+ "type": "bytes32",
1479
+ "indexed": true,
1480
+ "internalType": "bytes32"
1481
+ },
1482
+ {
1483
+ "name": "token",
1484
+ "type": "address",
1485
+ "indexed": true,
1486
+ "internalType": "address"
1487
+ },
1488
+ {
1489
+ "name": "hashed",
1490
+ "type": "bytes32",
1491
+ "indexed": false,
1492
+ "internalType": "bytes32"
1493
+ },
1494
+ {
1495
+ "name": "index",
1496
+ "type": "uint256",
1497
+ "indexed": false,
1498
+ "internalType": "uint256"
1499
+ },
1500
+ {
1501
+ "name": "root",
1502
+ "type": "bytes32",
1503
+ "indexed": false,
1504
+ "internalType": "bytes32"
1505
+ },
1506
+ {
1507
+ "name": "projectTokenCount",
1508
+ "type": "uint256",
1509
+ "indexed": false,
1510
+ "internalType": "uint256"
1511
+ },
1512
+ {
1513
+ "name": "terminalTokenAmount",
1514
+ "type": "uint256",
1515
+ "indexed": false,
1516
+ "internalType": "uint256"
1517
+ },
1518
+ {
1519
+ "name": "metadata",
1520
+ "type": "bytes32",
1521
+ "indexed": false,
1522
+ "internalType": "bytes32"
1523
+ },
1524
+ {
1525
+ "name": "caller",
1526
+ "type": "address",
1527
+ "indexed": false,
1528
+ "internalType": "address"
1529
+ }
1530
+ ],
1531
+ "anonymous": false
1532
+ },
1533
+ {
1534
+ "type": "event",
1535
+ "name": "NewInboxTreeRoot",
1536
+ "inputs": [
1537
+ {
1538
+ "name": "token",
1539
+ "type": "address",
1540
+ "indexed": true,
1541
+ "internalType": "address"
1542
+ },
1543
+ {
1544
+ "name": "nonce",
1545
+ "type": "uint64",
1546
+ "indexed": false,
1547
+ "internalType": "uint64"
1548
+ },
1549
+ {
1550
+ "name": "root",
1551
+ "type": "bytes32",
1552
+ "indexed": false,
1553
+ "internalType": "bytes32"
1554
+ },
1555
+ {
1556
+ "name": "caller",
1557
+ "type": "address",
1558
+ "indexed": false,
1559
+ "internalType": "address"
1560
+ }
1561
+ ],
1562
+ "anonymous": false
1563
+ },
1564
+ {
1565
+ "type": "event",
1566
+ "name": "RetainedToRemoteFee",
1567
+ "inputs": [
1568
+ {
1569
+ "name": "account",
1570
+ "type": "address",
1571
+ "indexed": true,
1572
+ "internalType": "address"
1573
+ },
1574
+ {
1575
+ "name": "amount",
1576
+ "type": "uint256",
1577
+ "indexed": false,
1578
+ "internalType": "uint256"
1579
+ },
1580
+ {
1581
+ "name": "caller",
1582
+ "type": "address",
1583
+ "indexed": false,
1584
+ "internalType": "address"
1585
+ }
1586
+ ],
1587
+ "anonymous": false
1588
+ },
1589
+ {
1590
+ "type": "event",
1591
+ "name": "RetainedToRemoteFeeClaimed",
1592
+ "inputs": [
1593
+ {
1594
+ "name": "account",
1595
+ "type": "address",
1596
+ "indexed": true,
1597
+ "internalType": "address"
1598
+ },
1599
+ {
1600
+ "name": "beneficiary",
1601
+ "type": "address",
1602
+ "indexed": true,
1603
+ "internalType": "address"
1604
+ },
1605
+ {
1606
+ "name": "amount",
1607
+ "type": "uint256",
1608
+ "indexed": false,
1609
+ "internalType": "uint256"
1610
+ },
1611
+ {
1612
+ "name": "caller",
1613
+ "type": "address",
1614
+ "indexed": false,
1615
+ "internalType": "address"
1616
+ }
1617
+ ],
1618
+ "anonymous": false
1619
+ },
1620
+ {
1621
+ "type": "event",
1622
+ "name": "RetainedTransportPaymentRefund",
1623
+ "inputs": [
1624
+ {
1625
+ "name": "account",
1626
+ "type": "address",
1627
+ "indexed": true,
1628
+ "internalType": "address"
1629
+ },
1630
+ {
1631
+ "name": "amount",
1632
+ "type": "uint256",
1633
+ "indexed": false,
1634
+ "internalType": "uint256"
1635
+ },
1636
+ {
1637
+ "name": "caller",
1638
+ "type": "address",
1639
+ "indexed": false,
1640
+ "internalType": "address"
1641
+ }
1642
+ ],
1643
+ "anonymous": false
1644
+ },
1645
+ {
1646
+ "type": "event",
1647
+ "name": "RetainedTransportPaymentRefundClaimed",
1648
+ "inputs": [
1649
+ {
1650
+ "name": "account",
1651
+ "type": "address",
1652
+ "indexed": true,
1653
+ "internalType": "address"
1654
+ },
1655
+ {
1656
+ "name": "beneficiary",
1657
+ "type": "address",
1658
+ "indexed": true,
1659
+ "internalType": "address"
1660
+ },
1661
+ {
1662
+ "name": "amount",
1663
+ "type": "uint256",
1664
+ "indexed": false,
1665
+ "internalType": "uint256"
1666
+ },
1667
+ {
1668
+ "name": "caller",
1669
+ "type": "address",
1670
+ "indexed": false,
1671
+ "internalType": "address"
1672
+ }
1673
+ ],
1674
+ "anonymous": false
1675
+ },
1676
+ {
1677
+ "type": "event",
1678
+ "name": "RootToRemote",
1679
+ "inputs": [
1680
+ {
1681
+ "name": "root",
1682
+ "type": "bytes32",
1683
+ "indexed": true,
1684
+ "internalType": "bytes32"
1685
+ },
1686
+ {
1687
+ "name": "token",
1688
+ "type": "address",
1689
+ "indexed": true,
1690
+ "internalType": "address"
1691
+ },
1692
+ {
1693
+ "name": "index",
1694
+ "type": "uint256",
1695
+ "indexed": false,
1696
+ "internalType": "uint256"
1697
+ },
1698
+ {
1699
+ "name": "nonce",
1700
+ "type": "uint64",
1701
+ "indexed": false,
1702
+ "internalType": "uint64"
1703
+ },
1704
+ {
1705
+ "name": "caller",
1706
+ "type": "address",
1707
+ "indexed": false,
1708
+ "internalType": "address"
1709
+ }
1710
+ ],
1711
+ "anonymous": false
1712
+ },
1713
+ {
1714
+ "type": "event",
1715
+ "name": "StaleRootRejected",
1716
+ "inputs": [
1717
+ {
1718
+ "name": "token",
1719
+ "type": "address",
1720
+ "indexed": true,
1721
+ "internalType": "address"
1722
+ },
1723
+ {
1724
+ "name": "receivedNonce",
1725
+ "type": "uint64",
1726
+ "indexed": false,
1727
+ "internalType": "uint64"
1728
+ },
1729
+ {
1730
+ "name": "currentNonce",
1731
+ "type": "uint64",
1732
+ "indexed": false,
1733
+ "internalType": "uint64"
1734
+ },
1735
+ {
1736
+ "name": "caller",
1737
+ "type": "address",
1738
+ "indexed": false,
1739
+ "internalType": "address"
1740
+ }
1741
+ ],
1742
+ "anonymous": false
1743
+ },
1744
+ {
1745
+ "type": "error",
1746
+ "name": "InvalidInitialization",
1747
+ "inputs": []
1748
+ },
1749
+ {
1750
+ "type": "error",
1751
+ "name": "JBPermissioned_Unauthorized",
1752
+ "inputs": [
1753
+ {
1754
+ "name": "account",
1755
+ "type": "address",
1756
+ "internalType": "address"
1757
+ },
1758
+ {
1759
+ "name": "sender",
1760
+ "type": "address",
1761
+ "internalType": "address"
1762
+ },
1763
+ {
1764
+ "name": "projectId",
1765
+ "type": "uint256",
1766
+ "internalType": "uint256"
1767
+ },
1768
+ {
1769
+ "name": "permissionId",
1770
+ "type": "uint256",
1771
+ "internalType": "uint256"
1772
+ }
1773
+ ]
1774
+ },
1775
+ {
1776
+ "type": "error",
1777
+ "name": "JBSucker_AccountingSyncUnsupported",
1778
+ "inputs": []
1779
+ },
1780
+ {
1781
+ "type": "error",
1782
+ "name": "JBSucker_AmountExceedsUint128",
1783
+ "inputs": [
1784
+ {
1785
+ "name": "amount",
1786
+ "type": "uint256",
1787
+ "internalType": "uint256"
1788
+ }
1789
+ ]
1790
+ },
1791
+ {
1792
+ "type": "error",
1793
+ "name": "JBSucker_BelowMinGas",
1794
+ "inputs": [
1795
+ {
1796
+ "name": "minGas",
1797
+ "type": "uint256",
1798
+ "internalType": "uint256"
1799
+ },
1800
+ {
1801
+ "name": "minGasLimit",
1802
+ "type": "uint256",
1803
+ "internalType": "uint256"
1804
+ }
1805
+ ]
1806
+ },
1807
+ {
1808
+ "type": "error",
1809
+ "name": "JBSucker_Deprecated",
1810
+ "inputs": [
1811
+ {
1812
+ "name": "state",
1813
+ "type": "uint8",
1814
+ "internalType": "enum JBSuckerState"
1815
+ }
1816
+ ]
1817
+ },
1818
+ {
1819
+ "type": "error",
1820
+ "name": "JBSucker_DeprecationTimestampTooSoon",
1821
+ "inputs": [
1822
+ {
1823
+ "name": "givenTime",
1824
+ "type": "uint256",
1825
+ "internalType": "uint256"
1826
+ },
1827
+ {
1828
+ "name": "minimumTime",
1829
+ "type": "uint256",
1830
+ "internalType": "uint256"
1831
+ }
1832
+ ]
1833
+ },
1834
+ {
1835
+ "type": "error",
1836
+ "name": "JBSucker_ExpectedMsgValue",
1837
+ "inputs": [
1838
+ {
1839
+ "name": "msgValue",
1840
+ "type": "uint256",
1841
+ "internalType": "uint256"
1842
+ }
1843
+ ]
1844
+ },
1845
+ {
1846
+ "type": "error",
1847
+ "name": "JBSucker_IndexOutOfRange",
1848
+ "inputs": [
1849
+ {
1850
+ "name": "index",
1851
+ "type": "uint256",
1852
+ "internalType": "uint256"
1853
+ }
1854
+ ]
1855
+ },
1856
+ {
1857
+ "type": "error",
1858
+ "name": "JBSucker_InsufficientBalance",
1859
+ "inputs": [
1860
+ {
1861
+ "name": "amount",
1862
+ "type": "uint256",
1863
+ "internalType": "uint256"
1864
+ },
1865
+ {
1866
+ "name": "balance",
1867
+ "type": "uint256",
1868
+ "internalType": "uint256"
1869
+ }
1870
+ ]
1871
+ },
1872
+ {
1873
+ "type": "error",
1874
+ "name": "JBSucker_InsufficientMsgValue",
1875
+ "inputs": [
1876
+ {
1877
+ "name": "received",
1878
+ "type": "uint256",
1879
+ "internalType": "uint256"
1880
+ },
1881
+ {
1882
+ "name": "expected",
1883
+ "type": "uint256",
1884
+ "internalType": "uint256"
1885
+ }
1886
+ ]
1887
+ },
1888
+ {
1889
+ "type": "error",
1890
+ "name": "JBSucker_InvalidMessageVersion",
1891
+ "inputs": [
1892
+ {
1893
+ "name": "received",
1894
+ "type": "uint8",
1895
+ "internalType": "uint8"
1896
+ },
1897
+ {
1898
+ "name": "expected",
1899
+ "type": "uint8",
1900
+ "internalType": "uint8"
1901
+ }
1902
+ ]
1903
+ },
1904
+ {
1905
+ "type": "error",
1906
+ "name": "JBSucker_InvalidNativeRemoteAddress",
1907
+ "inputs": [
1908
+ {
1909
+ "name": "remoteToken",
1910
+ "type": "bytes32",
1911
+ "internalType": "bytes32"
1912
+ }
1913
+ ]
1914
+ },
1915
+ {
1916
+ "type": "error",
1917
+ "name": "JBSucker_InvalidProof",
1918
+ "inputs": [
1919
+ {
1920
+ "name": "root",
1921
+ "type": "bytes32",
1922
+ "internalType": "bytes32"
1923
+ },
1924
+ {
1925
+ "name": "inboxRoot",
1926
+ "type": "bytes32",
1927
+ "internalType": "bytes32"
1928
+ }
1929
+ ]
1930
+ },
1931
+ {
1932
+ "type": "error",
1933
+ "name": "JBSucker_LeafAlreadyExecuted",
1934
+ "inputs": [
1935
+ {
1936
+ "name": "token",
1937
+ "type": "address",
1938
+ "internalType": "address"
1939
+ },
1940
+ {
1941
+ "name": "index",
1942
+ "type": "uint256",
1943
+ "internalType": "uint256"
1944
+ }
1945
+ ]
1946
+ },
1947
+ {
1948
+ "type": "error",
1949
+ "name": "JBSucker_NoRetainedToRemoteFee",
1950
+ "inputs": [
1951
+ {
1952
+ "name": "account",
1953
+ "type": "address",
1954
+ "internalType": "address"
1955
+ }
1956
+ ]
1957
+ },
1958
+ {
1959
+ "type": "error",
1960
+ "name": "JBSucker_NoRetainedTransportPaymentRefund",
1961
+ "inputs": [
1962
+ {
1963
+ "name": "account",
1964
+ "type": "address",
1965
+ "internalType": "address"
1966
+ }
1967
+ ]
1968
+ },
1969
+ {
1970
+ "type": "error",
1971
+ "name": "JBSucker_NoTerminalForToken",
1972
+ "inputs": [
1973
+ {
1974
+ "name": "projectId",
1975
+ "type": "uint256",
1976
+ "internalType": "uint256"
1977
+ },
1978
+ {
1979
+ "name": "token",
1980
+ "type": "address",
1981
+ "internalType": "address"
1982
+ }
1983
+ ]
1984
+ },
1985
+ {
1986
+ "type": "error",
1987
+ "name": "JBSucker_NotPeer",
1988
+ "inputs": [
1989
+ {
1990
+ "name": "caller",
1991
+ "type": "bytes32",
1992
+ "internalType": "bytes32"
1993
+ }
1994
+ ]
1995
+ },
1996
+ {
1997
+ "type": "error",
1998
+ "name": "JBSucker_NothingToSend",
1999
+ "inputs": [
2000
+ {
2001
+ "name": "token",
2002
+ "type": "address",
2003
+ "internalType": "address"
2004
+ },
2005
+ {
2006
+ "name": "outboxBalance",
2007
+ "type": "uint256",
2008
+ "internalType": "uint256"
2009
+ },
2010
+ {
2011
+ "name": "treeCount",
2012
+ "type": "uint256",
2013
+ "internalType": "uint256"
2014
+ },
2015
+ {
2016
+ "name": "numberOfClaimsSent",
2017
+ "type": "uint256",
2018
+ "internalType": "uint256"
2019
+ }
2020
+ ]
2021
+ },
2022
+ {
2023
+ "type": "error",
2024
+ "name": "JBSucker_RefundFailed",
2025
+ "inputs": [
2026
+ {
2027
+ "name": "beneficiary",
2028
+ "type": "address",
2029
+ "internalType": "address"
2030
+ },
2031
+ {
2032
+ "name": "amount",
2033
+ "type": "uint256",
2034
+ "internalType": "uint256"
2035
+ }
2036
+ ]
2037
+ },
2038
+ {
2039
+ "type": "error",
2040
+ "name": "JBSucker_RemoteTokenAlreadyMapped",
2041
+ "inputs": [
2042
+ {
2043
+ "name": "remoteToken",
2044
+ "type": "bytes32",
2045
+ "internalType": "bytes32"
2046
+ },
2047
+ {
2048
+ "name": "localToken",
2049
+ "type": "address",
2050
+ "internalType": "address"
2051
+ }
2052
+ ]
2053
+ },
2054
+ {
2055
+ "type": "error",
2056
+ "name": "JBSucker_TokenAlreadyMapped",
2057
+ "inputs": [
2058
+ {
2059
+ "name": "localToken",
2060
+ "type": "address",
2061
+ "internalType": "address"
2062
+ },
2063
+ {
2064
+ "name": "mappedTo",
2065
+ "type": "bytes32",
2066
+ "internalType": "bytes32"
2067
+ }
2068
+ ]
2069
+ },
2070
+ {
2071
+ "type": "error",
2072
+ "name": "JBSucker_TokenHasInvalidEmergencyHatchState",
2073
+ "inputs": [
2074
+ {
2075
+ "name": "token",
2076
+ "type": "address",
2077
+ "internalType": "address"
2078
+ }
2079
+ ]
2080
+ },
2081
+ {
2082
+ "type": "error",
2083
+ "name": "JBSucker_TokenNotMapped",
2084
+ "inputs": [
2085
+ {
2086
+ "name": "token",
2087
+ "type": "address",
2088
+ "internalType": "address"
2089
+ }
2090
+ ]
2091
+ },
2092
+ {
2093
+ "type": "error",
2094
+ "name": "JBSucker_UnexpectedMsgValue",
2095
+ "inputs": [
2096
+ {
2097
+ "name": "value",
2098
+ "type": "uint256",
2099
+ "internalType": "uint256"
2100
+ }
2101
+ ]
2102
+ },
2103
+ {
2104
+ "type": "error",
2105
+ "name": "JBSucker_UnexpectedTokenBalance",
2106
+ "inputs": [
2107
+ {
2108
+ "name": "token",
2109
+ "type": "address",
2110
+ "internalType": "address"
2111
+ },
2112
+ {
2113
+ "name": "expectedBalance",
2114
+ "type": "uint256",
2115
+ "internalType": "uint256"
2116
+ },
2117
+ {
2118
+ "name": "actualBalance",
2119
+ "type": "uint256",
2120
+ "internalType": "uint256"
2121
+ }
2122
+ ]
2123
+ },
2124
+ {
2125
+ "type": "error",
2126
+ "name": "JBSucker_ZeroBeneficiary",
2127
+ "inputs": [
2128
+ {
2129
+ "name": "beneficiary",
2130
+ "type": "bytes32",
2131
+ "internalType": "bytes32"
2132
+ }
2133
+ ]
2134
+ },
2135
+ {
2136
+ "type": "error",
2137
+ "name": "JBSucker_ZeroERC20Token",
2138
+ "inputs": [
2139
+ {
2140
+ "name": "projectId",
2141
+ "type": "uint256",
2142
+ "internalType": "uint256"
2143
+ }
2144
+ ]
2145
+ },
2146
+ {
2147
+ "type": "error",
2148
+ "name": "JBSucker_ZeroProjectTokenCount",
2149
+ "inputs": []
2150
+ },
2151
+ {
2152
+ "type": "error",
2153
+ "name": "MerkleLib_InsertTreeIsFull",
2154
+ "inputs": [
2155
+ {
2156
+ "name": "size",
2157
+ "type": "uint256",
2158
+ "internalType": "uint256"
2159
+ },
2160
+ {
2161
+ "name": "maxLeaves",
2162
+ "type": "uint256",
2163
+ "internalType": "uint256"
2164
+ }
2165
+ ]
2166
+ },
2167
+ {
2168
+ "type": "error",
2169
+ "name": "NotInitializing",
2170
+ "inputs": []
2171
+ },
2172
+ {
2173
+ "type": "error",
2174
+ "name": "SafeCastOverflowedUintDowncast",
2175
+ "inputs": [
2176
+ {
2177
+ "name": "bits",
2178
+ "type": "uint8",
2179
+ "internalType": "uint8"
2180
+ },
2181
+ {
2182
+ "name": "value",
2183
+ "type": "uint256",
2184
+ "internalType": "uint256"
2185
+ }
2186
+ ]
2187
+ },
2188
+ {
2189
+ "type": "error",
2190
+ "name": "SafeERC20FailedOperation",
2191
+ "inputs": [
2192
+ {
2193
+ "name": "token",
2194
+ "type": "address",
2195
+ "internalType": "address"
2196
+ }
2197
+ ]
2198
+ }
2199
+ ],
2200
+ "args": [
2201
+ "0x298A775c030aDcEDB641a89D9047eC9972674E1A",
2202
+ "0x5AfF29060E023e6FB87BE5596652B33c65Af535B",
2203
+ "0xf92AC1aB5A00033E35a3975739124F61928C36B0",
2204
+ "0x1f80d8f057eE36b4C2656D107E4e4558B71bA7D9",
2205
+ "1",
2206
+ "0x7903a854aE91eAf635430D120a1a434085cEf297",
2207
+ "0x3bA60b60933916a7C87D0860DcEE62a0CE34E3e2"
2208
+ ],
2209
+ "solcInputHash": "94164e4a3a913b2bf6b48a103240a84a",
2210
+ "receipt": {
2211
+ "type": "0x2",
2212
+ "status": "0x1",
2213
+ "cumulativeGasUsed": "0x50b722",
2214
+ "logs": [
2215
+ {
2216
+ "address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2217
+ "topics": [
2218
+ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
2219
+ "0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2220
+ "0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38",
2221
+ "0x87fa37a00d1735e345aac88fe32a296490b1e88fc2ae6ce5a800f1ea2a5a22fa"
2222
+ ],
2223
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
2224
+ "blockHash": "0x2315bf36b3b9b2b65f9df7efb1c8f286d2f40a236d7b169f213bf9ef5fb2adf8",
2225
+ "blockNumber": "0x2ad0013",
2226
+ "blockTimestamp": "0x6a30dbd2",
2227
+ "transactionHash": "0xfd1684094557550d808d1c1f8a6516a4ca3f697b8dc11c9d7f29b0e2c49c4106",
2228
+ "transactionIndex": "0x1",
2229
+ "logIndex": "0x0",
2230
+ "removed": false
2231
+ },
2232
+ {
2233
+ "address": "0x8c3b3d0fe56b31850a000333ef16195dbcd5a806",
2234
+ "topics": [
2235
+ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"
2236
+ ],
2237
+ "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff",
2238
+ "blockHash": "0x2315bf36b3b9b2b65f9df7efb1c8f286d2f40a236d7b169f213bf9ef5fb2adf8",
2239
+ "blockNumber": "0x2ad0013",
2240
+ "blockTimestamp": "0x6a30dbd2",
2241
+ "transactionHash": "0xfd1684094557550d808d1c1f8a6516a4ca3f697b8dc11c9d7f29b0e2c49c4106",
2242
+ "transactionIndex": "0x1",
2243
+ "logIndex": "0x1",
2244
+ "removed": false
2245
+ },
2246
+ {
2247
+ "address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
2248
+ "topics": [
2249
+ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
2250
+ "0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38"
2251
+ ],
2252
+ "data": "0x",
2253
+ "blockHash": "0x2315bf36b3b9b2b65f9df7efb1c8f286d2f40a236d7b169f213bf9ef5fb2adf8",
2254
+ "blockNumber": "0x2ad0013",
2255
+ "blockTimestamp": "0x6a30dbd2",
2256
+ "transactionHash": "0xfd1684094557550d808d1c1f8a6516a4ca3f697b8dc11c9d7f29b0e2c49c4106",
2257
+ "transactionIndex": "0x1",
2258
+ "logIndex": "0x2",
2259
+ "removed": false
2260
+ },
2261
+ {
2262
+ "address": "0x91f164e1300f13beaf77358e4d84ed78f8e99d38",
2263
+ "topics": [
2264
+ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
2265
+ "0xd5deab2e7deb1fc43c598724c179da0517b3ba8e35a6aa10843b370c51835520"
2266
+ ],
2267
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000027",
2268
+ "blockHash": "0x2315bf36b3b9b2b65f9df7efb1c8f286d2f40a236d7b169f213bf9ef5fb2adf8",
2269
+ "blockNumber": "0x2ad0013",
2270
+ "blockTimestamp": "0x6a30dbd2",
2271
+ "transactionHash": "0xfd1684094557550d808d1c1f8a6516a4ca3f697b8dc11c9d7f29b0e2c49c4106",
2272
+ "transactionIndex": "0x1",
2273
+ "logIndex": "0x3",
2274
+ "removed": false
2275
+ }
2276
+ ],
2277
+ "logsBloom": "0x0000000000001000000000000008000000100000000000000000000000000000000020000000000000000000004000000000000000000000000000000000000000000000000020000000000000000000000810000000004010000000000000004000000000000400000000000000000000004000000000000000000800008000880000000000000000090400000000000000000000008000000000000000000000400004000000000000000000000000a200000000000000000000000004000000000002008000000000000000400000000000000004400000000000800000000000000000000100000000000000000200000000000080000000000000000000",
2278
+ "transactionHash": "0xfd1684094557550d808d1c1f8a6516a4ca3f697b8dc11c9d7f29b0e2c49c4106",
2279
+ "transactionIndex": "0x1",
2280
+ "blockHash": "0x2315bf36b3b9b2b65f9df7efb1c8f286d2f40a236d7b169f213bf9ef5fb2adf8",
2281
+ "blockNumber": "0x2ad0013",
2282
+ "gasUsed": "0x50028c",
2283
+ "effectiveGasPrice": "0x24a02c",
2284
+ "blobGasUsed": "0x52f260",
2285
+ "from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2286
+ "to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2287
+ "contractAddress": null,
2288
+ "l1GasPrice": "0x414fe49b",
2289
+ "l1GasUsed": "0x3516b",
2290
+ "l1Fee": "0x23ebd593c18",
2291
+ "l1BaseFeeScalar": "0x1db0",
2292
+ "l1BlobBaseFee": "0x3588717",
2293
+ "l1BlobBaseFeeScalar": "0xd2730",
2294
+ "daFootprintGasScalar": "0x190"
2295
+ },
2296
+ "bytecode": "0x6101a080604052346102b65760e081615b73803803809161002082856103b7565b8339810103126102b65780516001600160a01b03811691908290036102b65760208101516001600160a01b03811691908281036102b6576040820151906001600160a01b03821682036102b6576060830151936001600160a01b03851685036102b657608084015160a0850151946001600160a01b03861686036102b65760c00151926001600160a01b03841684036102b65760049460209460805260a05260c05260e0526040519283809263293c499960e01b82525afa9081156102c2575f91610375575b506101005261012052610140525f516020615b535f395f51905f525460ff8160401c16610366576002600160401b03196001600160401b03821601610310575b5060405163146dcc9560e11b8152602081600481855afa9081156102c2575f916102cd575b506101605260405163516bf2f360e01b815290602090829060049082905afa9081156102c2575f9161027c575b506101805260405161576490816103ef82396080518181816112130152818161178c01526148a6015260a0518181816125d901528181612f2f01528181613ace0152614819015260c051818181610b9d01528181611a1101528181611fbc01528181613ee401528181613f85015281816143d50152614e51015260e0518181816116cf0152611cd2015261010051818181610d0501526139a20152610120518181816105c00152818161066e01528181611c8101528181611fe40152614e79015261014051818181610ab10152611ae1015261016051818181610cc1015261542401526101805181818161271f015281816137df015281816142cd01526154dd0152f35b90506020813d6020116102ba575b81610297602093836103b7565b810103126102b657516001600160a01b03811681036102b6575f610178565b5f80fd5b3d915061028a565b6040513d5f823e3d90fd5b90506020813d602011610308575b816102e8602093836103b7565b810103126102b657516001600160a01b03811681036102b657600461014b565b3d91506102db565b6001600160401b0319166001600160401b039081175f516020615b535f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f610126565b63f92ee8a960e01b5f5260045ffd5b90506020813d6020116103af575b81610390602093836103b7565b810103126102b657516001600160a01b03811681036102b6575f6100e6565b3d9150610383565b601f909101601f19168101906001600160401b038211908210176103da57604052565b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063014dc2a61461034957806301ffc9a71461034457806303da64a81461033f57806306433b1b1461033a5780630ce92d4b1461033557806311cda415146103305780631d831d5c1461032b57806322c9cc0f146103265780632847f1f314610321578063293c49991461031c5780633a5de07d146103175780633bef5ad5146103125780633f827a5a1461030d5780633fafa127146103085780634035d3b1146103035780634ca0e69b146102fe5780634e415ad6146102f95780634f0677e1146102f457806354176949146102ef578063572b6c05146102ea5780635de4e83a146102e55780636284386a146102e0578063663d00f6146102db5780636d9e384b146102d65780636f4115a9146102d157806373cbdfc6146102cc57806375451559146102c75780637da0a877146102c25780637de6fba2146102bd578063802c8fa0146102b857806388bc2ef3146102b357806392ee1ea7146102ae5780639e6d7d43146102a9578063af629bbb146102a4578063b71c11791461029f578063bf557aee1461029a578063c19d93fb14610295578063c1ca1ec714610290578063cbb2adce1461028b578063cdfceeba14610286578063cf26bafb14610281578063d5f394881461027c578063d935222f14610277578063eac1f29e14610272578063f13465431461026d578063f3aefd7b14610268578063f434c91414610263578063f925558c1461025e578063fc072f2314610259578063fc8fa43d146102545763fe4b84df0361000e5761274e565b61270a565b612643565b612608565b6125c4565b6124c1565b612458565b612413565b612336565b61230f565b6122f2565b6122d8565b6120f5565b611f71565b611f46565b611ee8565b611bff565b611a84565b611a5d565b611a40565b6119fc565b6118f1565b6117bb565b611777565b61171c565b6116f2565b6116b8565b611631565b6113b0565b6112d3565b611247565b6111ef565b6110cd565b6110b0565b610f94565b610e0d565b610dc4565b610d96565b610d7b565b610d51565b610d34565b610cf0565b610cac565b610b5a565b610a9c565b610a7a565b6105ef565b6105ab565b610545565b6104bf565b60203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb578060040135906001600160401b0382116104bb57602481019060243691606085020101116104bb575f5f5b83811061042e57508061041d57505f91905b5f925f925b8084106103ef57848034116103c457005b610018906103e96103e26103d661487b565b6001600160a01b031690565b913461288c565b90613781565b9091929361041360019161040d8561040889878a612801565b61341c565b90612871565b94019291906103b3565b6104279034612845565b91906103ae565b61045d61044461043f838787612801565b612816565b6001600160a01b03165f908152600e6020526040902090565b604061046a838787612801565b0135159081610496575b50610482575b60010161039c565b9061048e600191612837565b91905061047a565b905060226104a5825460401c90565b9101546001600160c01b0390911614155f610474565b5f80fd5b346104bb5760203660031901126104bb5760043563ffffffff60e01b81168091036104bb576314a66dd360e21b8114908115610534575b8115610523575b8115610512575b506040519015158152602090f35b6301ffc9a760e01b1490505f610504565b633d0d324560e21b811491506104fd565b6332af4eb960e21b811491506104f6565b346104bb5760203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb5780600401356001600160401b0381116104bb573660246104c08302840101116104bb57602461001892016129b8565b5f9103126104bb57565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60603660031901126104bb575f6106066004612816565b6001600160a01b0381165f908152600f6020526040902060443592919061063190612f9d565b612f9d565b9061063f6020830151151590565b610a5f5761064d60046146f6565b60115461069a61065c82613985565b61066461487b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694911684149161478e565b6106a2613291565b90803b156104bb576040516303827e8d60e01b81526001600160a01b03841660048201526024810192909252604482018690525f90829060649082905afa8015610a5a57610a40575b50606082018051858115159182610a35575b505080610a2c575b80610a09575b6109e8578415948515938461097f575b868061092e575b6108e6575b50906107a992916107fc959685806108dc575b806108d1575b8061089a575b61086f575b156108685750515b8061082e575b61078b6107666024613412565b610778610771612aa6565b9615158752565b5f602087015263ffffffff166040860152565b60608401526001600160a01b03165f908152600f6020526040902090565b815181546020840151604085015165ffffffffffff1990921660ff931515939093169290921791151560081b61ff00169190911760109190911b65ffffffff000016178155606090910151600190910155565b80341161080557005b6001600160a01b0361081561487b565b169034033481116108295761001891613781565b612823565b61086382610844835f52600d60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b610759565b9050610753565b61089561088584515f52600d60205260405f2090565b80546001600160a01b0319169055565b61074b565b506108be6108b184515f52600d60205260405f2090565b546001600160a01b031690565b6001600160a01b03858116911614610746565b508183511415610740565b508251151561073a565b6001600160a01b0384165f908152600f602052604090206107fc96506107a9949392916109239161091c905b805460ff19169055565b8434614057565b349550909192610727565b506001600160a01b0384165f908152600e60205260409020610952905b5460401c90565b6001600160a01b0385165f908152600e60205260409020602201546001600160c01b039091161415610722565b6109946108b1835f52600d60205260405f2090565b6001600160a01b03811680151590816109d4575b506109b3575061071b565b63d6a305d960e01b5f5260048390526001600160a01b031660245260445b5ffd5b6001600160a01b038716141590505f6109a8565b5163aef430a360e01b5f526001600160a01b0390911660045260245260445ffd5b506001600160a01b0382165f908152600e6020526040902060220154151561070b565b50841515610705565b14159050855f6106fd565b80610a4e5f610a549361292f565b806105a1565b5f6106eb565b6129ad565b6304bba81f60e41b5f526001600160a01b031660045260245ffd5b346104bb575f3660031901126104bb576020610a94612a99565b604051908152f35b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b92919060408401906040855280518092526020606086019101915f5b818110610b0e57505060209150930152565b9091602060806001926001600160801b036060885163ffffffff815116845260ff8682015116868501528260408201511660408501520151166060820152019401910192919092610afc565b346104bb5760203660031901126104bb5760043560115490805f52601560205260405f2091604051928391633a37eccb60e01b8352606483019060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000166004850152602484015260606044840152815480915260848301915f5260205f20905f5b818110610c665750505090805f920381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4918215610a5a575f92610c3e575b50610c29905f52600760205260405f2090565b5490610c3a60405192839283610ae0565b0390f35b610c29919250610c5f903d805f833e610c57818361292f565b810190612af6565b9190610c16565b8254845260018084015460ff8116602087015260081c6001600160801b039081166040870152600285015416606086015287955060809094019360039093019201610be1565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb57602060405162030d408152f35b346104bb5760203660031901126104bb576004355f526002602052602060405f2054604051908152f35b346104bb575f3660031901126104bb57602060405160018152f35b346104bb575f3660031901126104bb576020601154604051908152f35b6001600160a01b038116036104bb57565b346104bb5760403660031901126104bb57600435610de181610db3565b6024359060018060a01b03165f52600160205260405f20905f52602052602060405f2054604051908152f35b346104bb5760203660031901126104bb576004356001600160401b0381116104bb578060040190604060031982360301126104bb57610e4b336137dd565b15610ea3578135610e5b81612ada565b600160ff821603610e7c57610018610e766024840185612bd5565b90613877565b80610e896109d192612ada565b63e667c12560e01b5f5260ff166004526001602452604490565b63f957028d60e01b5f523360045260245ffd5b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610ee857505050505090565b9091929394603f1982820301835285519060808101918051825260208101516020830152604081015192608060408401528351809152602060a084019401905f905b808210610f50575050506060908101519101529460209081019493600101920190610ed9565b909194602060806001926001600160801b0360608a518051845260ff8682015116868501528260408201511660408501520151166060820152019601920190610f2a565b346104bb575f3660031901126104bb57601454610fb081612ab5565b90610fbe604051928361292f565b808252601f19610fcd82612ab5565b015f5b8181106110805750505f5b818110610ff05760405180610c3a8582610eb6565b80611009610fff600193612c0a565b90549060031b1c90565b61101b815f52600260205260405f2090565b5461105a611031835f52601560205260405f2090565b611043845f52600760205260405f2090565b549261104d612aa6565b9485526020850152612c22565b6040830152606082015261106e8286612cbc565b526110798185612cbc565b5001610fdb565b60209060405161108f816128be565b5f81525f83820152606060408201525f606082015282828701015201610fd0565b346104bb575f3660031901126104bb576020600454604051908152f35b346104bb5760403660031901126104bb575f5160206157385f395f51905f52546004356024356001600160401b0361111d604085901c60ff1615611110565b1590565b946001600160401b031690565b16801590816111e7575b60011490816111dd575b1590816111d4575b506111c557611154918361114b612cd0565b6111b857613928565b61115a57005b61118460ff60401b195f5160206157385f395f51905f5254165f5160206157385f395f51905f5255565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081015b0390a1005b6111c0612cfd565b613928565b63f92ee8a960e01b5f5260045ffd5b9050155f611139565b303b159150611131565b849150611127565b346104bb5760203660031901126104bb57602060043561120e81610db3565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346104bb5760203660031901126104bb57610c3a6004355f6040805161126c816128de565b8281528260208201520152805f52600260205260405f205490805f52600760205260405f205490604051926112a0846128de565b83526020830152604082015260405191829182919091604080606083019480518452602081015160208501520151910152565b346104bb5760203660031901126104bb5760043564ffffffffff8116908181036104bb576112ff61393e565b61131360115461130e81613985565b613a43565b62127500420180421161082957821515806113a6575b61138857506113587f455efa76af2a8686dc0dd3041bda89ece5ba4691277d525e2161003bbca8b24592600855565b61136061487b565b6040805164ffffffffff90931683526001600160a01b039091166020830152819081016111b3565b630111a46b60e21b5f5264ffffffffff90911660045260245260445ffd5b5080831115611329565b60203660031901126104bb576004356001600160401b0381116104bb57806004019060c060031982360301126104bb576113ec61110c336137dd565b61161157600160ff6113fd84612bcb565b16036116055760248101356001600160a01b03165f818152600a6020526040902061001893610e7693909260a492606483019061143982612d3b565b81546001600160401b03908116911681101561158d57506114d7826001926114a16114847fc69d3412489554fb7820c4c2784cb644b6c79bfc117444b93977d3d33a9b8eac96612d3b565b825467ffffffffffffffff19166001600160401b03909116178255565b608487013593849101557f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757830361152657612d3b565b9261151b6114e361487b565b604080516001600160401b03909716875260208701949094526001600160a01b03908116938601939093529116929081906060820190565b0390a25b0190612bd5565b6115888361158261155961155361154d8a60018060a01b03165f52600b60205260405f2090565b54612863565b60031690565b6001600160a01b0389165f908152600b60209081526040808320849055600c9091529020612d45565b90612d54565b612d3b565b90506115b97f2eb8abf720d2b9cf9e357f7a24a2bee502a7bdba38de0de230e10c33dafbd3eb92612d3b565b926115fd6115c561487b565b604080516001600160401b0397881681529490961660208501526001600160a01b039081169584019590955293169281906060820190565b0390a261151f565b6109d1610e8983612bcb565b6109d161161d336103d6565b63f957028d60e01b5f52600452602490565b565b346104bb5760203660031901126104bb5760043561164e81610db3565b5f602060405161165d816128f9565b828152015260018060a01b03165f52600a602052610c3a60405f20600160405191611687836128f9565b80546001600160401b0316808452910154602092830190815260408051928352905192820192909252918291820190565b346104bb575f3660031901126104bb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346104bb5760203660031901126104bb576004355f526007602052602060405f2054604051908152f35b346104bb5760203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb5780600401356001600160401b0381116104bb573660248260051b840101116104bb5760246100189201612ddb565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb576004356117d881610db3565b5f60606040516117e7816128be565b828152826020820152826040820152015260018060a01b03165f52600f602052610c3a60405f2060016040519161181d836128be565b63ffffffff815460ff81161515855260ff8160081c161515602086015260101c1660408401520154606082015260405191829182919091606080608083019480511515845260208101511515602085015263ffffffff60408201511660408501520151910152565b81516001600160401b031681526020808301516001600160c01b031690820152604080830151908201526060918201518051610480830194935f9084015b602082106118db575050506020610460910151910152565b60208060019285518152019301910190916118c3565b346104bb5760203660031901126104bb5760043561190e81610db3565b6040519061191b826128be565b5f82525f60208301525f6040830152604051611936816128f9565b606061040093604051611949868261292f565b8536823783525f6020840152015260018060a01b03165f52600e60205260405f209060405190611978826128be565b82546001600160401b038116835260401c602083015260018301546040830152604051906119a5826128f9565b60405190600285015f835b602082106119e65750505093816119cc610c3a9660229461292f565b835201546020820152606082015260405191829182611885565b60016020819285548152019301910190916119b0565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb576020604051620493e08152f35b346104bb5760203660031901126104bb576020610a94600435611a7f81610db3565b612ff3565b346104bb5760a03660031901126104bb57606435604435602435600435611aaa84610db3565b608435928115611bf0578215611bdc5760115460405163ea78803f60e01b8152600481018290526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610a5a575f91611bad575b506001600160a01b0316908115611b9b57506001600160a01b0386165f908152600f60205260409020611b4a9061110c905b5460ff1690565b611b7f576100189591611b7284611b7993611b6361393e565b611b6b61487b565b3091613b99565b8284613cae565b91613d86565b63027edf0360e11b5f526001600160a01b03861660045260245ffd5b6309794d0160e11b5f5260045260245ffd5b611bcf915060203d602011611bd5575b611bc7818361292f565b810190613061565b5f611b11565b503d611bbd565b63b2fe07f160e01b5f52600483905260245ffd5b632bcf4c5760e21b5f5260045ffd5b60203660031901126104bb57600435611c1781610db3565b6001600160a01b0381165f908152600f60205260409020611c3790612f9d565b6020810151611ecc576001600160a01b0382165f908152600e60205260409020600181015490811580611ea6575b611e49575050604051634211591560e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610a5a575f93611e28575b50823410611e105782611ccf610018943461288c565b907f0000000000000000000000000000000000000000000000000000000000000000611cfa81613ebf565b5f91906001600160a01b031680151580611e07575b611d48575b50501580611d3f575b611d28575b50614057565b611d3990611d3461487b565b613fc0565b5f611d22565b50801515611d1d565b611dba916020918580611d5961487b565b936040519687958694859363fef4325760e01b855260048501916101209391835261eeee6020840152604083015260018060a01b031660608201525f608082015260e060a08201525f60e082015261010060c08201525f6101008201520190565b03925af19081611dda575b50611dd2575b5f80611d14565b506001611dcb565b611dfb9060203d602011611e00575b611df3818361292f565b810190613076565b611dc5565b503d611de9565b50831515611d0f565b630ee99a4760e01b5f5234600452602483905260445ffd5b611e4291935060203d602011611e0057611df3818361292f565b915f611cb9565b611ea281611e5e602287940154915460401c90565b60405163096c1e2160e21b81526001600160a01b039094166004850152602484019490945260448301526001600160c01b0390921660648201529081906084820190565b0390fd5b506022810154611ec6611eba835460401c90565b6001600160c01b031690565b14611c65565b6304bba81f60e41b5f526001600160a01b03821660045260245ffd5b346104bb5760203660031901126104bb57600435611f0581610db3565b60018060a01b03165f52600f6020526020600160405f2001541515604051908152f35b60041115611f3257565b634e487b7160e01b5f52602160045260245ffd5b346104bb575f3660031901126104bb57611f5e613085565b6040516004821015611f32576020918152f35b5f3660031901126104bb57611f8461393e565b611f99600160125401806012554260801b1790565b60115490611fa5613291565b60405163f1d0f27760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152604481019390935260648301526001608483015260a482018190525f8260c481730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a57610018925f9261209d575b507f77bd1556265e71d247f11bb5886efda7fd5e5b21e6a4d2c871e8e6b49ac92f3d9061207d61487b565b604080519283526001600160a01b0391909116602083015290a1346142c5565b7f77bd1556265e71d247f11bb5886efda7fd5e5b21e6a4d2c871e8e6b49ac92f3d9192506120dc903d805f833e6120d4818361292f565b81019061322c565b9190612052565b6104c09060031901126104bb57600490565b346104bb57612103366120e3565b803590606081013561211483610db3565b608082013560408301359260a0810135602082013560c083016401000000008210156122c5576001600160a01b0388165f908152600960209081526040808320600886901c8452909152902054600160ff84161b166122a45791866122978361224386828d61223e6100189f9a838f8f61229f9f9e8d917fa8d6760b4e1a89f513fc87990f66d051c419d735fb8191104014e0529d9ae2d39f936121ec8f93956121d161220a9760018060a01b03165f52600960205260405f2090565b8160081c5f52602052600160ff60405f2092161b8154179055565b91608093916040519384526020840152604083015260608201522090565b84816122388461222b839960018060a01b03165f52600160205260405f2090565b905f5260205260405f2090565b55614fd3565b6150c5565b61224c86612816565b9361225561487b565b604080519586526001600160a01b03968716602087015285018b9052606085018a9052608085019290925260a084015290921660c082015290819060e0820190565b0390a1612816565b6143a1565b632939af3b60e21b5f526001600160a01b038816600452602482905260445ffd5b506309f6605160e41b5f5260045260245ffd5b346104bb575f3660031901126104bb576020610a94613291565b346104bb575f3660031901126104bb576020600354604051908152f35b346104bb575f3660031901126104bb575f546040516001600160a01b039091168152602090f35b346104bb57610018612347366120e3565b606081013561235582612816565b9161229f60808201359161238060408201359560a0830135602084013590888760c08701948a6144dc565b600161238e61044483612816565b0161239a84825461288c565b90556001600160a01b0385166123af82612816565b7fe33107c4043e574d8a4da32dac235e219f8f34a0e45e473ea6643a6145f2528561240b6123db61487b565b60408051898152602081018b90526001600160a01b03928316918101919091529381169416929081906060820190565b0390a3612816565b346104bb5760203660031901126104bb5760043561243081610db3565b60018060a01b03165f526006602052602060405f2054604051908152f35b801515036104bb57565b346104bb5760203660031901126104bb5761247d6004356124788161244e565b613340565b6040518091602082016020835281518091526020604084019201905f5b8181106124a8575050500390f35b825184528594506020938401939092019160010161249a565b346104bb5760203660031901126104bb576004356124de81610db3565b6001600160a01b0381169081156125b1576124f761487b565b6001600160a01b0381165f81815260066020526040902054909290918215612596576001600160a01b03165f9081526006602052604081207ffbcfe54e4aa35e7772f25a5f52fedccde889e4fc5031ad9826b9bf6b890baa5993926125729284925561256d6125688360045461288c565b600455565b613781565b61257a61487b565b604080519283526001600160a01b0391909116602083015290a3005b631733ad2160e21b5f526001600160a01b031660045260245ffd5b63b2fe07f160e01b5f525f60045260245ffd5b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb5760043561262581610db3565b60018060a01b03165f526005602052602060405f2054604051908152f35b346104bb5760203660031901126104bb5760043561266081610db3565b6001600160a01b0381169081156125b15761267961487b565b6001600160a01b0381165f818152600560205260409020549092909182156126ef576001600160a01b03165f9081526005602052604081207f1e70ff8443e61b2a2555b5ad56645461a75dd29591b5c4a6281f70a6d395db4593926125729284925561256d6126ea8360035461288c565b600355565b63578a51dd60e11b5f526001600160a01b031660045260245ffd5b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb575f5160206157385f395f51905f52546004356001600160401b03612792604084901c60ff1615936001600160401b031690565b16801590816127e5575b60011490816127db575b1590816127d2575b506111c55761115490826127c0612cd0565b156138f8576127cd612cfd565b6138f8565b9050155f6127ae565b303b1591506127a6565b83915061279c565b634e487b7160e01b5f52603260045260245ffd5b9190811015612811576060020190565b6127ed565b3561282081610db3565b90565b634e487b7160e01b5f52601160045260245ffd5b5f1981146108295760010190565b811561284f570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161082957565b9190820180921161082957565b5f1981019190821161082957565b9190820391821161082957565b9190811015612811576104c0020190565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b038211176128d957604052565b6128aa565b606081019081106001600160401b038211176128d957604052565b604081019081106001600160401b038211176128d957604052565b60a081019081106001600160401b038211176128d957604052565b90601f801991011681019081106001600160401b038211176128d957604052565b6104009092919260c0806104c0830195803561296b81610db3565b60018060a01b031684526020810135602085015260408101356040850152606081013560608501526080810135608085015260a081013560a085015201910137565b6040513d5f823e3d90fd5b5f5b8281106129c657505050565b6129d1818484612899565b90303b156104bb576129fa5f600193604051809381926365d956e760e11b835260048301612950565b038183305af19081612a85575b50612a8057612a1a61043f828686612899565b7fc1054f794d197971822697afa7ff4777cac6fb7a512e4bfec63aebaab98187b66020612a48848888612899565b013591612a5361487b565b604080519485526001600160a01b0391909116602085015260a086901b8690039190911692a25b016129ba565b612a7a565b80610a4e5f612a939361292f565b5f612a07565b6013548061282057503090565b6040519061162f60808361292f565b6001600160401b0381116128d95760051b60200190565b63ffffffff8116036104bb57565b60ff8116036104bb57565b6001600160801b038116036104bb57565b6020818303126104bb578051906001600160401b0382116104bb570181601f820112156104bb57805190612b2982612ab5565b92612b37604051948561292f565b82845260208085019360071b830101918183116104bb57602001925b828410612b61575050505090565b6080848303126104bb576020608091604051612b7c816128be565b8651612b8781612acc565b815282870151612b9681612ada565b838201526040870151612ba881612ae5565b60408201526060870151612bbb81612ae5565b6060820152815201930192612b53565b3561282081612ada565b903590601e19813603018212156104bb57018035906001600160401b0382116104bb57602001918160051b360383136104bb57565b6014548110156128115760145f5260205f2001905f90565b908154612c2e81612ab5565b92612c3c604051948561292f565b81845260208401905f5260205f205f915b838310612c5a5750505050565b60036020600192604051612c6d816128be565b855481526001600160801b038587015460ff81168584015260081c1660408201526001600160801b036002870154166060820152815201920192019190612c4d565b8051156128115760200190565b80518210156128115760209160051b010190565b60016001600160401b03195f5160206157385f395f51905f525416175f5160206157385f395f51905f5255565b600160401b60ff60401b195f5160206157385f395f51905f525416175f5160206157385f395f51905f5255565b6001600160401b038116036104bb57565b3561282081612d2a565b60048210156128115701905f90565b91612d6d9183549060031b91821b915f19901b19161790565b9055565b91908110156128115760051b0190565b604080825281018390529293929160608301905f5b818110612db1575050602091509360018060a01b0316910152565b90916020806001928635612dc481610db3565b848060a01b03168152019401910192919092612d96565b9190601154612de981613985565b612df161487b565b916001600160a01b03808416908316141580612f08575b612ed1575050505f5b818110612e5857507f8021bce60b20a9afb57085869a3552e0ee5b272b868df894fb30c5e90e74c0729192612e53612e4761487b565b60405193849384612d81565b0390a1565b80612e666001928487612d71565b35612e7081610db3565b828060a01b03165f52600f602052612e8f60405f2060ff198154169055565b612ecb612ebc612ea361043f84878a612d71565b6001600160a01b03165f908152600f6020526040902090565b805461ff001916610100179055565b01612e11565b604051631326f75560e11b81526001600160a01b039283166004820152929091166024830152604482015260236064820152608490fd5b50604051631a45b42760e11b815260208180612f2b602386888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91612f6e575b5015612e08565b612f90915060203d602011612f96575b612f88818361292f565b8101906139f6565b5f612f67565b503d612f7e565b90604051612faa816128be565b60606001829463ffffffff815460ff81161515865260ff8160081c161515602087015260101c1660408501520154910152565b60405190610400612fee818461292f565b368337565b612ffd3082613b2c565b9060018060a01b031690815f52600e602052600160405f20015481039081116108295761eeee81921461302e575090565b90506003548082111561305b578103908111610829576004548082111561305b5781039081116108295790565b50505f90565b908160209103126104bb575161282081610db3565b908160209103126104bb575190565b60085480156130b857621274ff1981018181116108295742106130b25742106130ad57600390565b600290565b50600190565b505f90565b81601f820112156104bb578051906130d482612ab5565b926130e2604051948561292f565b82845260208085019360051b830101918183116104bb5760208101935b83851061310e57505050505090565b84516001600160401b0381116104bb5782016080818503601f1901126104bb576040519061313b826128be565b602081015182526040810151602083015260608101516001600160401b0381116104bb5760209082010185601f820112156104bb57805161317b81612ab5565b91613189604051938461292f565b81835260208084019260071b820101908882116104bb57602001915b8183106131cb5750505060408301526080015160608201528152602094850194016130ff565b6080838a03126104bb5760206080916040516131e6816128be565b85518152828601516131f781612ada565b83820152604086015161320981612ae5565b6040820152606086015161321c81612ae5565b60608201528152019201916131a5565b6020818303126104bb578051906001600160401b0382116104bb57016040818303126104bb576040519161325f836128f9565b815161326a81612ada565b835260208201516001600160401b0381116104bb5761328992016130bd565b602082015290565b600146146132cc57600a46146132c75762aa36a746146132c05762aa37dc46146132b9575f90565b62aa36a790565b62aa37dc90565b600190565b600a90565b604051906132e060208361292f565b5f808352366020840137565b604080519091906132fd838261292f565b6001815291601f1901366020840137565b9061331882612ab5565b613325604051918261292f565b8281528092613336601f1991612ab5565b0190602036910137565b90613349613291565b8015159283613407575b156133e157826133c1575b60145483156133b85761337861337382612863565b61330e565b935f5b828110613398575061338b575050565b6133959084612cbc565b52565b806133a7610fff600193612c0a565b6133b18289612cbc565b520161337b565b6133788161330e565b91506133db61110c611b43845f52601060205260405f2090565b9161335e565b9091156133fe576133f06132ec565b906133fa82612caf565b5290565b506128206132d1565b468214159350613353565b3561282081612acc565b91905f9261342981612816565b9060408101359261344d61062c8460018060a01b03165f52600f60205260405f2090565b9361345b6020860151151590565b61373657613468836146f6565b60115461347761065c82613985565b61347f613291565b90803b156104bb576040516303827e8d60e01b81526001600160a01b03871660048201526024810192909252604482018390525f90829060649082905afa8015610a5a57613722575b5060608501918251828115159182613717575b50508061370e575b806136eb575b6136ca5781159081159687613662575b8280613614575b6135c6575b505061076660208796946107a9969461078b948961162f9b906135bc575b806135b1575b80613587575b61356c575b15613564575051935b84613549575b01613412565b61355f86610844875f52600d60205260405f2090565b613543565b90509361353d565b61358261088584515f52600d60205260405f2090565b613534565b5061359e6108b184515f52600d60205260405f2090565b6001600160a01b0389811691161461352f565b508183511415613529565b5082511515613523565b61078b92995086946107a99694610766936136056020946135fe61091261162f9e9d60018060a01b03165f52600f60205260405f2090565b8983614057565b9b945094965094969750613505565b506001600160a01b0387165f908152600e602052604090206136359061094b565b6001600160a01b0388165f908152600e60205260409020602201546001600160c01b039091161415613500565b6136776108b1855f52600d60205260405f2090565b6001600160a01b03811680151590816136b6575b5061369657506134f9565b63d6a305d960e01b5f5260048590526001600160a01b031660245260445ffd5b6001600160a01b038a16141590505f61368b565b825163aef430a360e01b5f526001600160a01b03861660045260245260445ffd5b506001600160a01b0385165f908152600e602052604090206022015415156134e9565b508115156134e3565b14159050825f6134db565b80610a4e5f6137309361292f565b5f6134c8565b6304bba81f60e41b5f526001600160a01b03841660045260245ffd5b6001600160401b0381116128d957601f01601f191660200190565b6040519061377c60208361292f565b5f8252565b6001600160a01b03165f80808085855af13d156137d8573d6137a281613752565b906137b0604051928361292f565b81525f60203d92013e5b156137c3575050565b630590bd2d60e41b5f5260045260245260445ffd5b6137ba565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911681149081613817575090565b5f9150602090600460405180948193636e296e4560e01b83525af1908115610a5a575f91613858575b50613849612a99565b6001600160a01b039091161490565b613871915060203d602011611bd557611bc7818361292f565b5f613840565b90915f5b838110156138f2578060051b830135607e19843603018112156104bb578301908135606083013592602081013590604081013590601e19813603018212156104bb5701908135916001600160401b0383116104bb57602001908260071b360382136104bb576001956138ec94614a56565b0161387b565b50915050565b6011555f6013556001600160a01b0361390f61487b565b166bffffffffffffffffffffffff60a01b5f5416175f55565b6011556013556001600160a01b0361390f61487b565b613946613085565b6004811015611f3257600381148015613972575b6139615750565b62a7958f60e81b5f5260045260245ffd5b5061397c81611f28565b6002811461395a565b6040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f916139dd575090565b612820915060203d602011611bd557611bc7818361292f565b908160209103126104bb57516128208161244e565b6001600160a01b039182168152911660208201526040810191909152606081019190915260016080820181905260a082015260c00190565b613a4b61487b565b916001600160a01b03808416908316141580613aa7575b613a6b57505050565b604051631326f75560e11b81526001600160a01b0392831660048201529290911660248084019190915260448301919091526064820152608490fd5b50604051631a45b42760e11b815260208180613aca602486888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613b0d575b5015613a62565b613b26915060203d602011612f9657612f88818361292f565b5f613b06565b6001600160a01b03169061eeee8214613b93576040516370a0823160e01b81526001600160a01b03909116600482015290602090829060249082905afa908115610a5a575f91613b7a575090565b612820915060203d602011611e0057611df3818361292f565b90503190565b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af160015f5114811615613c07575b6040919091525f60605215613bec5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516613c1d573d15833b15151616613bda565b503d5f823e3d90fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0391821681526020810192909252604082019290925291811660608301526080820192909252911660a082015260e060c0820181905261282092910190613c26565b15613c9a57565b634e487b7160e01b5f52600160045260245ffd5b601154919392613cc36103d680808887613f54565b6001600160a01b03811615613d655790602091865f613ce23083613b2c565b95613d0e613cee61376d565b6040516313da831760e01b8152998a978896879530938460048901613c4a565b03925af1908115610a5a5761162f925f92613d40575b50613d3a90613d3583963090613b2c565b61288c565b14613c93565b613d3a919250613d5e9060203d602011611e0057611df3818361292f565b9190613d24565b63b61c181f60e01b5f5260048490526001600160a01b03861660245260445ffd5b9193906001600160801b038511613eac576001600160801b038311613e9957613dca8285878691608093916040519384526020840152604083015260608201522090565b6001600160a01b0382165f908152600e60205260409020909590936002850193613df48886614ba7565b600186019283549681880180981161082957613e3d6022613e43927fc92fa1150c24ee5470c272112539aab52450a5e05573e7ea7bdfb98829b893219a613e949855015461287e565b96614c93565b92613e4c61487b565b604080519b8c5260208c0198909852968a01939093526060890192909252608088019190915260a08701526001600160a01b0392831660c087015291169390819060e0820190565b0390a3565b826335bf001160e11b5f5260045260245ffd5b846335bf001160e11b5f5260045260245ffd5b604051630862026560e41b8152600481019190915261eeee60248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613f1f575090565b90506020813d602011613f4c575b81613f3a6020938361292f565b810103126104bb575161282081610db3565b3d9150613f2d565b604051630862026560e41b815260048101919091526001600160a01b039091166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613f1f575090565b60018060a01b031690815f52600560205260405f20805490828201809211610829575560035490808201809211610829577f2a3798c6648c17f70b43a33a8378cec543367ac1543e62aa7b392660569717779160035561401e61487b565b604080519283526001600160a01b0391909116602083015290a2565b6001600160401b03166001600160401b0381146108295760010190565b906060830151156141785761406a61393e565b6001600160a01b0381165f908152600e602052604090209060228201549081156141715761162f9460018401915f835493556141086140b86140b387546001600160401b031690565b61403a565b865467ffffffffffffffff19166001600160401b038216178755946141036140e260028901614c93565b88546001600160401b0316604084901b67ffffffffffffffff191617909855565b61287e565b9586867f47c5615513b0f669da2dd7e3362a34610ca2695d0a0e2da2160cee952eab203c61416961413761487b565b604080519586526001600160401b038b1660208701526001600160a01b03918216908601528616939081906060820190565b0390a3614e05565b5050505050565b63027edf0360e11b5f9081526001600160a01b0391909116600452602490fd5b9080602083519182815201916020808360051b8301019401925f915b8383106141c357505050505090565b9091929394601f1982820301835285519060808101918051825260208101516020830152604081015192608060408401528351809152602060a084019401905f905b80821061422b5750505060609081015191015294602090810194936001019201906141b4565b909194602060806001926001600160801b0360608a518051845260ff8682015116868501528260408201511660408501520151166060820152019601920190614205565b606060206128209381845260ff815116828501520151916040808201520190614198565b916142be63ffffffff9160409396959660018060a01b03168552606060208601526060850190613c26565b9416910152565b8061438f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166143006103d6612a99565b9061434461433f602060405195634ca0e69b60e01b828801526143388761432a836024830161426f565b03601f19810189528861292f565b0151614f2c565b614f8d565b90803b156104bb57614370935f809460405196879586948593633dbb202b60e01b855260048501614293565b03925af18015610a5a576143815750565b80610a4e5f61162f9361292f565b636ba3461960e11b5f5260045260245ffd5b6011548281936144b3575b5050604051632eec7b5560e11b8152600481018390529290506020836024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610a5a5761445d946020945f93614492575b506040516363fdc96f60e11b8152600481019490945260248401919091526001600160a01b0316604483015260a060648301525f60a4830181905260848301819052919384928391829060c4820190565b03926001600160a01b03165af18015610a5a576144775750565b61448f9060203d602011611e0057611df3818361292f565b50565b5f9193506144ac90863d8811611bd557611bc7818361292f565b929061440c565b6144bc9261514d565b5f81816143ac565b6001600160c01b039081165f19019190821161082957565b929096959493916401000000008510156146e2576144f8613085565b61450181611f28565b600381141590816146cd575b508061469e575b614682576001600160a01b0388165f908152600e602052604090206145389061094b565b6001600160c01b03811615159086908261466a575b505061464957604080516001600160a01b038a166020808301918252825261459992614593929061457e908261292f565b5190206bffffffffffffffffffffffff191690565b60601c90565b6001600160a01b0381165f90815260096020908152604080832060088a901c8452909152902054600160ff88161b16614628579061460360026145fd61162f9a9b6104448a6121d16146229a999860018060a01b03165f52600960205260405f2090565b01614c93565b9491608093916040519384526020840152604083015260608201522090565b906150c5565b632939af3b60e21b5f526001600160a01b038916600452602486905260445ffd5b632939af3b60e21b5f526001600160a01b038816600452602485905260445ffd5b614679919250611eba906144c4565b1015855f61454d565b6304bba81f60e41b5f526001600160a01b03881660045260245ffd5b506001600160a01b0388165f908152600f602052604090206146c89061110c905460081c60ff1690565b614514565b600291506146da81611f28565b14155f61450d565b6309f6605160e41b5f52600485905260245ffd5b61eeee813561470481610db3565b6001600160a01b03161461475d5760200162030d4063ffffffff823561472981612acc565b16106147325750565b61473e6109d191613412565b630555d0f160e41b5f5263ffffffff1660045262030d40602452604490565b6040013561eeee81141580614785575b6147745750565b62e80c7760e31b5f5260045260245ffd5b5080151561476d565b90916148775761479c61487b565b916001600160a01b038084169083161415806147f3575b6147bc57505050565b604051631326f75560e11b81526001600160a01b039283166004820152929091166024830152604482015260206064820152608490fd5b50604051631a45b42760e11b8152602081806148158386888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91614858575b50156147b3565b614871915060203d602011612f9657612f88818361292f565b5f614851565b5050565b6014361015806148a2575b1561489e5760131936013681116104bb573560601c90565b3390565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614886565b601454600160401b8110156128d957600181016014556014548110156128115760145f527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0155565b8054905f81558161492c575050565b81600302916003830403610829575f5260205f20908101905b818110614950575050565b6003905f81555f60018201555f600282015501614945565b91908110156128115760071b0190565b8054821015612811575f52600360205f20910201905f90565b3561282081612ae5565b8054600160401b8110156128d9576149b891600182018155614978565b614a43576002614a26606061162f94803585556001850160208201356149dd81612ada565b815460ff70ffffffffffffffffffffffffffffffff006040860135614a0181612ae5565b60081b1692169070ffffffffffffffffffffffffffffffffff19161717905501614991565b9101906001600160801b03166001600160801b0319825416179055565b634e487b7160e01b5f525f60045260245ffd5b90919392934682148015614b90575b61417157614a7b825f52600760205260405f2090565b5483111561417157614af292614a99835f52600760205260405f2090565b55614aac825f52600260205260405f2090565b55614ac561110c611b43835f52601060205260405f2090565b614b60575b614ae4614adf825f52601560205260405f2090565b61491d565b5f52601560205260405f2090565b905f5b818110614b025750505050565b80614b19614b136001938588614968565b8561499b565b614b24818487614968565b35614b406108b1848060a01b03925f52600d60205260405f2090565b1680614b4e575b5001614af5565b614b588286614978565b50555f614b47565b614b82614b75825f52601060205260405f2090565b805460ff19166001179055565b614b8b816148d4565b614aca565b508115614a65565b60208210156128115701905f90565b916020830190614bb78254612837565b92838355839463ffffffff94858111614c3857505f95915b60208710614bf057845463515447c160e01b5f52600452602486905260445ffd5b600180841614614c2557614c07610fff8884614b98565b5f526020526001614c1c60405f209360011c90565b96019591614bcf565b935061162f945061158292959150614b98565b63515447c160e01b5f52600452602485905260445ffd5b9060208110156128115760051b0190565b61042081019392915f825b60208210614c7d575050506104000152565b6020806001928551815201930191019091614c6b565b6020810154908115614d3157614ca7612fdd565b905f5b60208110614d01575050604051634a490c2560e01b81529160209183918291614cd7919060048401614c60565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a575f91613b7a575090565b80600180921b8516614d14575b01614caa565b614d21610fff8285614b98565b614d2b8286614c4f565b52614d0e565b50507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75790565b6020818303126104bb578051906001600160401b0382116104bb57018082039160c083126104bb576040805193614d8d85612914565b8351614d9881612ada565b8552602084015160208601528184015182860152605f1901126104bb57604051614dc1816128f9565b6060830151614dcf81612d2a565b815260808301516020820152606084015260a08201516001600160401b0381116104bb57614dfd92016130bd565b608082015290565b949091939550614e20600160125401806012554260801b1790565b906001600160401b0360115497614e35613291565b6060880151604051634cba057b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152604481019b909b5260648b019190915260848a015260a489018690521660c488015260e487015260016101048701526101248601525f8561014481730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4938415610a5a5761162f955f95614f08575b506153ee565b614f259195503d805f833e614f1d818361292f565b810190614d57565b935f614f02565b5f9080515f915b818310614f6657505050620124f8810290808204620124f8149015171561082957620493e00180620493e0116108295790565b9091926040614f758584612cbc565b51015151810180911161082957926001019190614f33565b63ffffffff8111614fa15763ffffffff1690565b6306dfcc6560e41b5f52602060045260245260445ffd5b61040061042092959493610440830196835260208301370152565b90926020906001614ff48460018060a01b03165f52600a60205260405f2090565b01549461501560405195869384936307fbe4d560e41b855260048501614fb8565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4918215610a5a575f926150a4575b5082821461509f576001600160a01b03165f908152600c60205260409020905f5b6004811061506b5750505090565b615078610fff8285612d45565b80151580615096575b61508e575060010161505d565b935050505090565b50808314615081565b505090565b6150be91925060203d602011611e0057611df3818361292f565b905f61503c565b926020916150e760405194859384936307fbe4d560e41b855260048501614fb8565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a575f9161512e575b5081810361511a575050565b6272c3e960e11b5f5260045260245260445ffd5b615147915060203d602011611e0057611df3818361292f565b5f61510e565b9061515782612ff3565b808211615330575061516c6103d68385613f54565b906001600160a01b0382161561530f576001600160a01b038316935f9261eeee861480159290859061530757506040516370a0823160e01b81523060048201526020816024818b5afa908115610a5a575f916152e8575b50946151d085848a6155fc565b823b156104bb57604051639e6eec0560e01b815260048101929092526001600160a01b0387166024830152604482018590525f6064830181905260c0608484015260c4830181905260e060a484015260e4830181905291928391610104918391905af18015610a5a576152d4575b5061524a575b50505050565b6152539161288c565b6040516370a0823160e01b815230600482015292909190602090849060249082905afa928315610a5a575f936152b3575b508183036152925780615244565b63884aa24960e01b5f526001600160a01b031660045260245260445260645ffd5b6152cd91935060203d602011611e0057611df3818361292f565b915f615284565b80610a4e5f6152e29361292f565b5f61523e565b615301915060203d602011611e0057611df3818361292f565b5f6151c3565b9450836151d0565b63b61c181f60e01b5f5260048490526001600160a01b03831660245260445ffd5b6360ec3e7160e01b5f5260049190915260245260445ffd5b6001600160a01b03918216815291811660208301529091166040820152606081019190915263ffffffff91909116608082015260c060a0820181905261282092910190613c26565b60e06080612820936020845260ff815116602085015260208101516040850152604081015160608501526153de606082015183860190602080916001600160401b0381511684520151910152565b01519160c0808201520190614198565b939190925f948061438f57506154056103d6612a99565b936001600160a01b0381169061eeee8214158061557b575b1561556f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316926154588585856155fc565b6060810151615479906040906001600160a01b031692015163ffffffff1690565b9161548261376d565b95853b156104bb5760405163540abf7360e01b8152965f94889485946154ae94918d9160048801615348565b038183865af1928315610a5a576154ca9361555b575b50615584565b60405163331e807b60e11b6020820152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906155309061433f90608090614338866155228360248301615390565b03601f19810188528761292f565b91813b156104bb57614370945f9460405196879586948593633dbb202b60e01b855260048501614293565b80610a4e5f6155699361292f565b5f6154c4565b505050909250916154ca565b5083151561541d565b906155905f828461564b565b15615599575050565b6155a38183615698565b156155db575f6155b391836156fc565b156155bb5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b50635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b919061560982828561564b565b1561561357505050565b61561d8184615698565b1561562d57906155b391836156fc565b635274afe760e01b5f9081526001600160a01b038416600452602490fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615687575b50604052565b3d15903b151516909216915f615681565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f51148416156156da5750604052565b600184929415166156f3573b15153d151616915f615681565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f51148416156156da575060405256fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000af0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00",
2297
+ "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063014dc2a61461034957806301ffc9a71461034457806303da64a81461033f57806306433b1b1461033a5780630ce92d4b1461033557806311cda415146103305780631d831d5c1461032b57806322c9cc0f146103265780632847f1f314610321578063293c49991461031c5780633a5de07d146103175780633bef5ad5146103125780633f827a5a1461030d5780633fafa127146103085780634035d3b1146103035780634ca0e69b146102fe5780634e415ad6146102f95780634f0677e1146102f457806354176949146102ef578063572b6c05146102ea5780635de4e83a146102e55780636284386a146102e0578063663d00f6146102db5780636d9e384b146102d65780636f4115a9146102d157806373cbdfc6146102cc57806375451559146102c75780637da0a877146102c25780637de6fba2146102bd578063802c8fa0146102b857806388bc2ef3146102b357806392ee1ea7146102ae5780639e6d7d43146102a9578063af629bbb146102a4578063b71c11791461029f578063bf557aee1461029a578063c19d93fb14610295578063c1ca1ec714610290578063cbb2adce1461028b578063cdfceeba14610286578063cf26bafb14610281578063d5f394881461027c578063d935222f14610277578063eac1f29e14610272578063f13465431461026d578063f3aefd7b14610268578063f434c91414610263578063f925558c1461025e578063fc072f2314610259578063fc8fa43d146102545763fe4b84df0361000e5761274e565b61270a565b612643565b612608565b6125c4565b6124c1565b612458565b612413565b612336565b61230f565b6122f2565b6122d8565b6120f5565b611f71565b611f46565b611ee8565b611bff565b611a84565b611a5d565b611a40565b6119fc565b6118f1565b6117bb565b611777565b61171c565b6116f2565b6116b8565b611631565b6113b0565b6112d3565b611247565b6111ef565b6110cd565b6110b0565b610f94565b610e0d565b610dc4565b610d96565b610d7b565b610d51565b610d34565b610cf0565b610cac565b610b5a565b610a9c565b610a7a565b6105ef565b6105ab565b610545565b6104bf565b60203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb578060040135906001600160401b0382116104bb57602481019060243691606085020101116104bb575f5f5b83811061042e57508061041d57505f91905b5f925f925b8084106103ef57848034116103c457005b610018906103e96103e26103d661487b565b6001600160a01b031690565b913461288c565b90613781565b9091929361041360019161040d8561040889878a612801565b61341c565b90612871565b94019291906103b3565b6104279034612845565b91906103ae565b61045d61044461043f838787612801565b612816565b6001600160a01b03165f908152600e6020526040902090565b604061046a838787612801565b0135159081610496575b50610482575b60010161039c565b9061048e600191612837565b91905061047a565b905060226104a5825460401c90565b9101546001600160c01b0390911614155f610474565b5f80fd5b346104bb5760203660031901126104bb5760043563ffffffff60e01b81168091036104bb576314a66dd360e21b8114908115610534575b8115610523575b8115610512575b506040519015158152602090f35b6301ffc9a760e01b1490505f610504565b633d0d324560e21b811491506104fd565b6332af4eb960e21b811491506104f6565b346104bb5760203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb5780600401356001600160401b0381116104bb573660246104c08302840101116104bb57602461001892016129b8565b5f9103126104bb57565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60603660031901126104bb575f6106066004612816565b6001600160a01b0381165f908152600f6020526040902060443592919061063190612f9d565b612f9d565b9061063f6020830151151590565b610a5f5761064d60046146f6565b60115461069a61065c82613985565b61066461487b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694911684149161478e565b6106a2613291565b90803b156104bb576040516303827e8d60e01b81526001600160a01b03841660048201526024810192909252604482018690525f90829060649082905afa8015610a5a57610a40575b50606082018051858115159182610a35575b505080610a2c575b80610a09575b6109e8578415948515938461097f575b868061092e575b6108e6575b50906107a992916107fc959685806108dc575b806108d1575b8061089a575b61086f575b156108685750515b8061082e575b61078b6107666024613412565b610778610771612aa6565b9615158752565b5f602087015263ffffffff166040860152565b60608401526001600160a01b03165f908152600f6020526040902090565b815181546020840151604085015165ffffffffffff1990921660ff931515939093169290921791151560081b61ff00169190911760109190911b65ffffffff000016178155606090910151600190910155565b80341161080557005b6001600160a01b0361081561487b565b169034033481116108295761001891613781565b612823565b61086382610844835f52600d60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b610759565b9050610753565b61089561088584515f52600d60205260405f2090565b80546001600160a01b0319169055565b61074b565b506108be6108b184515f52600d60205260405f2090565b546001600160a01b031690565b6001600160a01b03858116911614610746565b508183511415610740565b508251151561073a565b6001600160a01b0384165f908152600f602052604090206107fc96506107a9949392916109239161091c905b805460ff19169055565b8434614057565b349550909192610727565b506001600160a01b0384165f908152600e60205260409020610952905b5460401c90565b6001600160a01b0385165f908152600e60205260409020602201546001600160c01b039091161415610722565b6109946108b1835f52600d60205260405f2090565b6001600160a01b03811680151590816109d4575b506109b3575061071b565b63d6a305d960e01b5f5260048390526001600160a01b031660245260445b5ffd5b6001600160a01b038716141590505f6109a8565b5163aef430a360e01b5f526001600160a01b0390911660045260245260445ffd5b506001600160a01b0382165f908152600e6020526040902060220154151561070b565b50841515610705565b14159050855f6106fd565b80610a4e5f610a549361292f565b806105a1565b5f6106eb565b6129ad565b6304bba81f60e41b5f526001600160a01b031660045260245ffd5b346104bb575f3660031901126104bb576020610a94612a99565b604051908152f35b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b92919060408401906040855280518092526020606086019101915f5b818110610b0e57505060209150930152565b9091602060806001926001600160801b036060885163ffffffff815116845260ff8682015116868501528260408201511660408501520151166060820152019401910192919092610afc565b346104bb5760203660031901126104bb5760043560115490805f52601560205260405f2091604051928391633a37eccb60e01b8352606483019060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000166004850152602484015260606044840152815480915260848301915f5260205f20905f5b818110610c665750505090805f920381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4918215610a5a575f92610c3e575b50610c29905f52600760205260405f2090565b5490610c3a60405192839283610ae0565b0390f35b610c29919250610c5f903d805f833e610c57818361292f565b810190612af6565b9190610c16565b8254845260018084015460ff8116602087015260081c6001600160801b039081166040870152600285015416606086015287955060809094019360039093019201610be1565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb57602060405162030d408152f35b346104bb5760203660031901126104bb576004355f526002602052602060405f2054604051908152f35b346104bb575f3660031901126104bb57602060405160018152f35b346104bb575f3660031901126104bb576020601154604051908152f35b6001600160a01b038116036104bb57565b346104bb5760403660031901126104bb57600435610de181610db3565b6024359060018060a01b03165f52600160205260405f20905f52602052602060405f2054604051908152f35b346104bb5760203660031901126104bb576004356001600160401b0381116104bb578060040190604060031982360301126104bb57610e4b336137dd565b15610ea3578135610e5b81612ada565b600160ff821603610e7c57610018610e766024840185612bd5565b90613877565b80610e896109d192612ada565b63e667c12560e01b5f5260ff166004526001602452604490565b63f957028d60e01b5f523360045260245ffd5b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610ee857505050505090565b9091929394603f1982820301835285519060808101918051825260208101516020830152604081015192608060408401528351809152602060a084019401905f905b808210610f50575050506060908101519101529460209081019493600101920190610ed9565b909194602060806001926001600160801b0360608a518051845260ff8682015116868501528260408201511660408501520151166060820152019601920190610f2a565b346104bb575f3660031901126104bb57601454610fb081612ab5565b90610fbe604051928361292f565b808252601f19610fcd82612ab5565b015f5b8181106110805750505f5b818110610ff05760405180610c3a8582610eb6565b80611009610fff600193612c0a565b90549060031b1c90565b61101b815f52600260205260405f2090565b5461105a611031835f52601560205260405f2090565b611043845f52600760205260405f2090565b549261104d612aa6565b9485526020850152612c22565b6040830152606082015261106e8286612cbc565b526110798185612cbc565b5001610fdb565b60209060405161108f816128be565b5f81525f83820152606060408201525f606082015282828701015201610fd0565b346104bb575f3660031901126104bb576020600454604051908152f35b346104bb5760403660031901126104bb575f5160206157385f395f51905f52546004356024356001600160401b0361111d604085901c60ff1615611110565b1590565b946001600160401b031690565b16801590816111e7575b60011490816111dd575b1590816111d4575b506111c557611154918361114b612cd0565b6111b857613928565b61115a57005b61118460ff60401b195f5160206157385f395f51905f5254165f5160206157385f395f51905f5255565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081015b0390a1005b6111c0612cfd565b613928565b63f92ee8a960e01b5f5260045ffd5b9050155f611139565b303b159150611131565b849150611127565b346104bb5760203660031901126104bb57602060043561120e81610db3565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346104bb5760203660031901126104bb57610c3a6004355f6040805161126c816128de565b8281528260208201520152805f52600260205260405f205490805f52600760205260405f205490604051926112a0846128de565b83526020830152604082015260405191829182919091604080606083019480518452602081015160208501520151910152565b346104bb5760203660031901126104bb5760043564ffffffffff8116908181036104bb576112ff61393e565b61131360115461130e81613985565b613a43565b62127500420180421161082957821515806113a6575b61138857506113587f455efa76af2a8686dc0dd3041bda89ece5ba4691277d525e2161003bbca8b24592600855565b61136061487b565b6040805164ffffffffff90931683526001600160a01b039091166020830152819081016111b3565b630111a46b60e21b5f5264ffffffffff90911660045260245260445ffd5b5080831115611329565b60203660031901126104bb576004356001600160401b0381116104bb57806004019060c060031982360301126104bb576113ec61110c336137dd565b61161157600160ff6113fd84612bcb565b16036116055760248101356001600160a01b03165f818152600a6020526040902061001893610e7693909260a492606483019061143982612d3b565b81546001600160401b03908116911681101561158d57506114d7826001926114a16114847fc69d3412489554fb7820c4c2784cb644b6c79bfc117444b93977d3d33a9b8eac96612d3b565b825467ffffffffffffffff19166001600160401b03909116178255565b608487013593849101557f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757830361152657612d3b565b9261151b6114e361487b565b604080516001600160401b03909716875260208701949094526001600160a01b03908116938601939093529116929081906060820190565b0390a25b0190612bd5565b6115888361158261155961155361154d8a60018060a01b03165f52600b60205260405f2090565b54612863565b60031690565b6001600160a01b0389165f908152600b60209081526040808320849055600c9091529020612d45565b90612d54565b612d3b565b90506115b97f2eb8abf720d2b9cf9e357f7a24a2bee502a7bdba38de0de230e10c33dafbd3eb92612d3b565b926115fd6115c561487b565b604080516001600160401b0397881681529490961660208501526001600160a01b039081169584019590955293169281906060820190565b0390a261151f565b6109d1610e8983612bcb565b6109d161161d336103d6565b63f957028d60e01b5f52600452602490565b565b346104bb5760203660031901126104bb5760043561164e81610db3565b5f602060405161165d816128f9565b828152015260018060a01b03165f52600a602052610c3a60405f20600160405191611687836128f9565b80546001600160401b0316808452910154602092830190815260408051928352905192820192909252918291820190565b346104bb575f3660031901126104bb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346104bb5760203660031901126104bb576004355f526007602052602060405f2054604051908152f35b346104bb5760203660031901126104bb576004356001600160401b0381116104bb57366023820112156104bb5780600401356001600160401b0381116104bb573660248260051b840101116104bb5760246100189201612ddb565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb576004356117d881610db3565b5f60606040516117e7816128be565b828152826020820152826040820152015260018060a01b03165f52600f602052610c3a60405f2060016040519161181d836128be565b63ffffffff815460ff81161515855260ff8160081c161515602086015260101c1660408401520154606082015260405191829182919091606080608083019480511515845260208101511515602085015263ffffffff60408201511660408501520151910152565b81516001600160401b031681526020808301516001600160c01b031690820152604080830151908201526060918201518051610480830194935f9084015b602082106118db575050506020610460910151910152565b60208060019285518152019301910190916118c3565b346104bb5760203660031901126104bb5760043561190e81610db3565b6040519061191b826128be565b5f82525f60208301525f6040830152604051611936816128f9565b606061040093604051611949868261292f565b8536823783525f6020840152015260018060a01b03165f52600e60205260405f209060405190611978826128be565b82546001600160401b038116835260401c602083015260018301546040830152604051906119a5826128f9565b60405190600285015f835b602082106119e65750505093816119cc610c3a9660229461292f565b835201546020820152606082015260405191829182611885565b60016020819285548152019301910190916119b0565b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb575f3660031901126104bb576020604051620493e08152f35b346104bb5760203660031901126104bb576020610a94600435611a7f81610db3565b612ff3565b346104bb5760a03660031901126104bb57606435604435602435600435611aaa84610db3565b608435928115611bf0578215611bdc5760115460405163ea78803f60e01b8152600481018290526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610a5a575f91611bad575b506001600160a01b0316908115611b9b57506001600160a01b0386165f908152600f60205260409020611b4a9061110c905b5460ff1690565b611b7f576100189591611b7284611b7993611b6361393e565b611b6b61487b565b3091613b99565b8284613cae565b91613d86565b63027edf0360e11b5f526001600160a01b03861660045260245ffd5b6309794d0160e11b5f5260045260245ffd5b611bcf915060203d602011611bd5575b611bc7818361292f565b810190613061565b5f611b11565b503d611bbd565b63b2fe07f160e01b5f52600483905260245ffd5b632bcf4c5760e21b5f5260045ffd5b60203660031901126104bb57600435611c1781610db3565b6001600160a01b0381165f908152600f60205260409020611c3790612f9d565b6020810151611ecc576001600160a01b0382165f908152600e60205260409020600181015490811580611ea6575b611e49575050604051634211591560e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610a5a575f93611e28575b50823410611e105782611ccf610018943461288c565b907f0000000000000000000000000000000000000000000000000000000000000000611cfa81613ebf565b5f91906001600160a01b031680151580611e07575b611d48575b50501580611d3f575b611d28575b50614057565b611d3990611d3461487b565b613fc0565b5f611d22565b50801515611d1d565b611dba916020918580611d5961487b565b936040519687958694859363fef4325760e01b855260048501916101209391835261eeee6020840152604083015260018060a01b031660608201525f608082015260e060a08201525f60e082015261010060c08201525f6101008201520190565b03925af19081611dda575b50611dd2575b5f80611d14565b506001611dcb565b611dfb9060203d602011611e00575b611df3818361292f565b810190613076565b611dc5565b503d611de9565b50831515611d0f565b630ee99a4760e01b5f5234600452602483905260445ffd5b611e4291935060203d602011611e0057611df3818361292f565b915f611cb9565b611ea281611e5e602287940154915460401c90565b60405163096c1e2160e21b81526001600160a01b039094166004850152602484019490945260448301526001600160c01b0390921660648201529081906084820190565b0390fd5b506022810154611ec6611eba835460401c90565b6001600160c01b031690565b14611c65565b6304bba81f60e41b5f526001600160a01b03821660045260245ffd5b346104bb5760203660031901126104bb57600435611f0581610db3565b60018060a01b03165f52600f6020526020600160405f2001541515604051908152f35b60041115611f3257565b634e487b7160e01b5f52602160045260245ffd5b346104bb575f3660031901126104bb57611f5e613085565b6040516004821015611f32576020918152f35b5f3660031901126104bb57611f8461393e565b611f99600160125401806012554260801b1790565b60115490611fa5613291565b60405163f1d0f27760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152604481019390935260648301526001608483015260a482018190525f8260c481730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a57610018925f9261209d575b507f77bd1556265e71d247f11bb5886efda7fd5e5b21e6a4d2c871e8e6b49ac92f3d9061207d61487b565b604080519283526001600160a01b0391909116602083015290a1346142c5565b7f77bd1556265e71d247f11bb5886efda7fd5e5b21e6a4d2c871e8e6b49ac92f3d9192506120dc903d805f833e6120d4818361292f565b81019061322c565b9190612052565b6104c09060031901126104bb57600490565b346104bb57612103366120e3565b803590606081013561211483610db3565b608082013560408301359260a0810135602082013560c083016401000000008210156122c5576001600160a01b0388165f908152600960209081526040808320600886901c8452909152902054600160ff84161b166122a45791866122978361224386828d61223e6100189f9a838f8f61229f9f9e8d917fa8d6760b4e1a89f513fc87990f66d051c419d735fb8191104014e0529d9ae2d39f936121ec8f93956121d161220a9760018060a01b03165f52600960205260405f2090565b8160081c5f52602052600160ff60405f2092161b8154179055565b91608093916040519384526020840152604083015260608201522090565b84816122388461222b839960018060a01b03165f52600160205260405f2090565b905f5260205260405f2090565b55614fd3565b6150c5565b61224c86612816565b9361225561487b565b604080519586526001600160a01b03968716602087015285018b9052606085018a9052608085019290925260a084015290921660c082015290819060e0820190565b0390a1612816565b6143a1565b632939af3b60e21b5f526001600160a01b038816600452602482905260445ffd5b506309f6605160e41b5f5260045260245ffd5b346104bb575f3660031901126104bb576020610a94613291565b346104bb575f3660031901126104bb576020600354604051908152f35b346104bb575f3660031901126104bb575f546040516001600160a01b039091168152602090f35b346104bb57610018612347366120e3565b606081013561235582612816565b9161229f60808201359161238060408201359560a0830135602084013590888760c08701948a6144dc565b600161238e61044483612816565b0161239a84825461288c565b90556001600160a01b0385166123af82612816565b7fe33107c4043e574d8a4da32dac235e219f8f34a0e45e473ea6643a6145f2528561240b6123db61487b565b60408051898152602081018b90526001600160a01b03928316918101919091529381169416929081906060820190565b0390a3612816565b346104bb5760203660031901126104bb5760043561243081610db3565b60018060a01b03165f526006602052602060405f2054604051908152f35b801515036104bb57565b346104bb5760203660031901126104bb5761247d6004356124788161244e565b613340565b6040518091602082016020835281518091526020604084019201905f5b8181106124a8575050500390f35b825184528594506020938401939092019160010161249a565b346104bb5760203660031901126104bb576004356124de81610db3565b6001600160a01b0381169081156125b1576124f761487b565b6001600160a01b0381165f81815260066020526040902054909290918215612596576001600160a01b03165f9081526006602052604081207ffbcfe54e4aa35e7772f25a5f52fedccde889e4fc5031ad9826b9bf6b890baa5993926125729284925561256d6125688360045461288c565b600455565b613781565b61257a61487b565b604080519283526001600160a01b0391909116602083015290a3005b631733ad2160e21b5f526001600160a01b031660045260245ffd5b63b2fe07f160e01b5f525f60045260245ffd5b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb5760043561262581610db3565b60018060a01b03165f526005602052602060405f2054604051908152f35b346104bb5760203660031901126104bb5760043561266081610db3565b6001600160a01b0381169081156125b15761267961487b565b6001600160a01b0381165f818152600560205260409020549092909182156126ef576001600160a01b03165f9081526005602052604081207f1e70ff8443e61b2a2555b5ad56645461a75dd29591b5c4a6281f70a6d395db4593926125729284925561256d6126ea8360035461288c565b600355565b63578a51dd60e11b5f526001600160a01b031660045260245ffd5b346104bb575f3660031901126104bb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104bb5760203660031901126104bb575f5160206157385f395f51905f52546004356001600160401b03612792604084901c60ff1615936001600160401b031690565b16801590816127e5575b60011490816127db575b1590816127d2575b506111c55761115490826127c0612cd0565b156138f8576127cd612cfd565b6138f8565b9050155f6127ae565b303b1591506127a6565b83915061279c565b634e487b7160e01b5f52603260045260245ffd5b9190811015612811576060020190565b6127ed565b3561282081610db3565b90565b634e487b7160e01b5f52601160045260245ffd5b5f1981146108295760010190565b811561284f570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161082957565b9190820180921161082957565b5f1981019190821161082957565b9190820391821161082957565b9190811015612811576104c0020190565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b038211176128d957604052565b6128aa565b606081019081106001600160401b038211176128d957604052565b604081019081106001600160401b038211176128d957604052565b60a081019081106001600160401b038211176128d957604052565b90601f801991011681019081106001600160401b038211176128d957604052565b6104009092919260c0806104c0830195803561296b81610db3565b60018060a01b031684526020810135602085015260408101356040850152606081013560608501526080810135608085015260a081013560a085015201910137565b6040513d5f823e3d90fd5b5f5b8281106129c657505050565b6129d1818484612899565b90303b156104bb576129fa5f600193604051809381926365d956e760e11b835260048301612950565b038183305af19081612a85575b50612a8057612a1a61043f828686612899565b7fc1054f794d197971822697afa7ff4777cac6fb7a512e4bfec63aebaab98187b66020612a48848888612899565b013591612a5361487b565b604080519485526001600160a01b0391909116602085015260a086901b8690039190911692a25b016129ba565b612a7a565b80610a4e5f612a939361292f565b5f612a07565b6013548061282057503090565b6040519061162f60808361292f565b6001600160401b0381116128d95760051b60200190565b63ffffffff8116036104bb57565b60ff8116036104bb57565b6001600160801b038116036104bb57565b6020818303126104bb578051906001600160401b0382116104bb570181601f820112156104bb57805190612b2982612ab5565b92612b37604051948561292f565b82845260208085019360071b830101918183116104bb57602001925b828410612b61575050505090565b6080848303126104bb576020608091604051612b7c816128be565b8651612b8781612acc565b815282870151612b9681612ada565b838201526040870151612ba881612ae5565b60408201526060870151612bbb81612ae5565b6060820152815201930192612b53565b3561282081612ada565b903590601e19813603018212156104bb57018035906001600160401b0382116104bb57602001918160051b360383136104bb57565b6014548110156128115760145f5260205f2001905f90565b908154612c2e81612ab5565b92612c3c604051948561292f565b81845260208401905f5260205f205f915b838310612c5a5750505050565b60036020600192604051612c6d816128be565b855481526001600160801b038587015460ff81168584015260081c1660408201526001600160801b036002870154166060820152815201920192019190612c4d565b8051156128115760200190565b80518210156128115760209160051b010190565b60016001600160401b03195f5160206157385f395f51905f525416175f5160206157385f395f51905f5255565b600160401b60ff60401b195f5160206157385f395f51905f525416175f5160206157385f395f51905f5255565b6001600160401b038116036104bb57565b3561282081612d2a565b60048210156128115701905f90565b91612d6d9183549060031b91821b915f19901b19161790565b9055565b91908110156128115760051b0190565b604080825281018390529293929160608301905f5b818110612db1575050602091509360018060a01b0316910152565b90916020806001928635612dc481610db3565b848060a01b03168152019401910192919092612d96565b9190601154612de981613985565b612df161487b565b916001600160a01b03808416908316141580612f08575b612ed1575050505f5b818110612e5857507f8021bce60b20a9afb57085869a3552e0ee5b272b868df894fb30c5e90e74c0729192612e53612e4761487b565b60405193849384612d81565b0390a1565b80612e666001928487612d71565b35612e7081610db3565b828060a01b03165f52600f602052612e8f60405f2060ff198154169055565b612ecb612ebc612ea361043f84878a612d71565b6001600160a01b03165f908152600f6020526040902090565b805461ff001916610100179055565b01612e11565b604051631326f75560e11b81526001600160a01b039283166004820152929091166024830152604482015260236064820152608490fd5b50604051631a45b42760e11b815260208180612f2b602386888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91612f6e575b5015612e08565b612f90915060203d602011612f96575b612f88818361292f565b8101906139f6565b5f612f67565b503d612f7e565b90604051612faa816128be565b60606001829463ffffffff815460ff81161515865260ff8160081c161515602087015260101c1660408501520154910152565b60405190610400612fee818461292f565b368337565b612ffd3082613b2c565b9060018060a01b031690815f52600e602052600160405f20015481039081116108295761eeee81921461302e575090565b90506003548082111561305b578103908111610829576004548082111561305b5781039081116108295790565b50505f90565b908160209103126104bb575161282081610db3565b908160209103126104bb575190565b60085480156130b857621274ff1981018181116108295742106130b25742106130ad57600390565b600290565b50600190565b505f90565b81601f820112156104bb578051906130d482612ab5565b926130e2604051948561292f565b82845260208085019360051b830101918183116104bb5760208101935b83851061310e57505050505090565b84516001600160401b0381116104bb5782016080818503601f1901126104bb576040519061313b826128be565b602081015182526040810151602083015260608101516001600160401b0381116104bb5760209082010185601f820112156104bb57805161317b81612ab5565b91613189604051938461292f565b81835260208084019260071b820101908882116104bb57602001915b8183106131cb5750505060408301526080015160608201528152602094850194016130ff565b6080838a03126104bb5760206080916040516131e6816128be565b85518152828601516131f781612ada565b83820152604086015161320981612ae5565b6040820152606086015161321c81612ae5565b60608201528152019201916131a5565b6020818303126104bb578051906001600160401b0382116104bb57016040818303126104bb576040519161325f836128f9565b815161326a81612ada565b835260208201516001600160401b0381116104bb5761328992016130bd565b602082015290565b600146146132cc57600a46146132c75762aa36a746146132c05762aa37dc46146132b9575f90565b62aa36a790565b62aa37dc90565b600190565b600a90565b604051906132e060208361292f565b5f808352366020840137565b604080519091906132fd838261292f565b6001815291601f1901366020840137565b9061331882612ab5565b613325604051918261292f565b8281528092613336601f1991612ab5565b0190602036910137565b90613349613291565b8015159283613407575b156133e157826133c1575b60145483156133b85761337861337382612863565b61330e565b935f5b828110613398575061338b575050565b6133959084612cbc565b52565b806133a7610fff600193612c0a565b6133b18289612cbc565b520161337b565b6133788161330e565b91506133db61110c611b43845f52601060205260405f2090565b9161335e565b9091156133fe576133f06132ec565b906133fa82612caf565b5290565b506128206132d1565b468214159350613353565b3561282081612acc565b91905f9261342981612816565b9060408101359261344d61062c8460018060a01b03165f52600f60205260405f2090565b9361345b6020860151151590565b61373657613468836146f6565b60115461347761065c82613985565b61347f613291565b90803b156104bb576040516303827e8d60e01b81526001600160a01b03871660048201526024810192909252604482018390525f90829060649082905afa8015610a5a57613722575b5060608501918251828115159182613717575b50508061370e575b806136eb575b6136ca5781159081159687613662575b8280613614575b6135c6575b505061076660208796946107a9969461078b948961162f9b906135bc575b806135b1575b80613587575b61356c575b15613564575051935b84613549575b01613412565b61355f86610844875f52600d60205260405f2090565b613543565b90509361353d565b61358261088584515f52600d60205260405f2090565b613534565b5061359e6108b184515f52600d60205260405f2090565b6001600160a01b0389811691161461352f565b508183511415613529565b5082511515613523565b61078b92995086946107a99694610766936136056020946135fe61091261162f9e9d60018060a01b03165f52600f60205260405f2090565b8983614057565b9b945094965094969750613505565b506001600160a01b0387165f908152600e602052604090206136359061094b565b6001600160a01b0388165f908152600e60205260409020602201546001600160c01b039091161415613500565b6136776108b1855f52600d60205260405f2090565b6001600160a01b03811680151590816136b6575b5061369657506134f9565b63d6a305d960e01b5f5260048590526001600160a01b031660245260445ffd5b6001600160a01b038a16141590505f61368b565b825163aef430a360e01b5f526001600160a01b03861660045260245260445ffd5b506001600160a01b0385165f908152600e602052604090206022015415156134e9565b508115156134e3565b14159050825f6134db565b80610a4e5f6137309361292f565b5f6134c8565b6304bba81f60e41b5f526001600160a01b03841660045260245ffd5b6001600160401b0381116128d957601f01601f191660200190565b6040519061377c60208361292f565b5f8252565b6001600160a01b03165f80808085855af13d156137d8573d6137a281613752565b906137b0604051928361292f565b81525f60203d92013e5b156137c3575050565b630590bd2d60e41b5f5260045260245260445ffd5b6137ba565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911681149081613817575090565b5f9150602090600460405180948193636e296e4560e01b83525af1908115610a5a575f91613858575b50613849612a99565b6001600160a01b039091161490565b613871915060203d602011611bd557611bc7818361292f565b5f613840565b90915f5b838110156138f2578060051b830135607e19843603018112156104bb578301908135606083013592602081013590604081013590601e19813603018212156104bb5701908135916001600160401b0383116104bb57602001908260071b360382136104bb576001956138ec94614a56565b0161387b565b50915050565b6011555f6013556001600160a01b0361390f61487b565b166bffffffffffffffffffffffff60a01b5f5416175f55565b6011556013556001600160a01b0361390f61487b565b613946613085565b6004811015611f3257600381148015613972575b6139615750565b62a7958f60e81b5f5260045260245ffd5b5061397c81611f28565b6002811461395a565b6040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f916139dd575090565b612820915060203d602011611bd557611bc7818361292f565b908160209103126104bb57516128208161244e565b6001600160a01b039182168152911660208201526040810191909152606081019190915260016080820181905260a082015260c00190565b613a4b61487b565b916001600160a01b03808416908316141580613aa7575b613a6b57505050565b604051631326f75560e11b81526001600160a01b0392831660048201529290911660248084019190915260448301919091526064820152608490fd5b50604051631a45b42760e11b815260208180613aca602486888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613b0d575b5015613a62565b613b26915060203d602011612f9657612f88818361292f565b5f613b06565b6001600160a01b03169061eeee8214613b93576040516370a0823160e01b81526001600160a01b03909116600482015290602090829060249082905afa908115610a5a575f91613b7a575090565b612820915060203d602011611e0057611df3818361292f565b90503190565b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af160015f5114811615613c07575b6040919091525f60605215613bec5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516613c1d573d15833b15151616613bda565b503d5f823e3d90fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0391821681526020810192909252604082019290925291811660608301526080820192909252911660a082015260e060c0820181905261282092910190613c26565b15613c9a57565b634e487b7160e01b5f52600160045260245ffd5b601154919392613cc36103d680808887613f54565b6001600160a01b03811615613d655790602091865f613ce23083613b2c565b95613d0e613cee61376d565b6040516313da831760e01b8152998a978896879530938460048901613c4a565b03925af1908115610a5a5761162f925f92613d40575b50613d3a90613d3583963090613b2c565b61288c565b14613c93565b613d3a919250613d5e9060203d602011611e0057611df3818361292f565b9190613d24565b63b61c181f60e01b5f5260048490526001600160a01b03861660245260445ffd5b9193906001600160801b038511613eac576001600160801b038311613e9957613dca8285878691608093916040519384526020840152604083015260608201522090565b6001600160a01b0382165f908152600e60205260409020909590936002850193613df48886614ba7565b600186019283549681880180981161082957613e3d6022613e43927fc92fa1150c24ee5470c272112539aab52450a5e05573e7ea7bdfb98829b893219a613e949855015461287e565b96614c93565b92613e4c61487b565b604080519b8c5260208c0198909852968a01939093526060890192909252608088019190915260a08701526001600160a01b0392831660c087015291169390819060e0820190565b0390a3565b826335bf001160e11b5f5260045260245ffd5b846335bf001160e11b5f5260045260245ffd5b604051630862026560e41b8152600481019190915261eeee60248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613f1f575090565b90506020813d602011613f4c575b81613f3a6020938361292f565b810103126104bb575161282081610db3565b3d9150613f2d565b604051630862026560e41b815260048101919091526001600160a01b039091166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91613f1f575090565b60018060a01b031690815f52600560205260405f20805490828201809211610829575560035490808201809211610829577f2a3798c6648c17f70b43a33a8378cec543367ac1543e62aa7b392660569717779160035561401e61487b565b604080519283526001600160a01b0391909116602083015290a2565b6001600160401b03166001600160401b0381146108295760010190565b906060830151156141785761406a61393e565b6001600160a01b0381165f908152600e602052604090209060228201549081156141715761162f9460018401915f835493556141086140b86140b387546001600160401b031690565b61403a565b865467ffffffffffffffff19166001600160401b038216178755946141036140e260028901614c93565b88546001600160401b0316604084901b67ffffffffffffffff191617909855565b61287e565b9586867f47c5615513b0f669da2dd7e3362a34610ca2695d0a0e2da2160cee952eab203c61416961413761487b565b604080519586526001600160401b038b1660208701526001600160a01b03918216908601528616939081906060820190565b0390a3614e05565b5050505050565b63027edf0360e11b5f9081526001600160a01b0391909116600452602490fd5b9080602083519182815201916020808360051b8301019401925f915b8383106141c357505050505090565b9091929394601f1982820301835285519060808101918051825260208101516020830152604081015192608060408401528351809152602060a084019401905f905b80821061422b5750505060609081015191015294602090810194936001019201906141b4565b909194602060806001926001600160801b0360608a518051845260ff8682015116868501528260408201511660408501520151166060820152019601920190614205565b606060206128209381845260ff815116828501520151916040808201520190614198565b916142be63ffffffff9160409396959660018060a01b03168552606060208601526060850190613c26565b9416910152565b8061438f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166143006103d6612a99565b9061434461433f602060405195634ca0e69b60e01b828801526143388761432a836024830161426f565b03601f19810189528861292f565b0151614f2c565b614f8d565b90803b156104bb57614370935f809460405196879586948593633dbb202b60e01b855260048501614293565b03925af18015610a5a576143815750565b80610a4e5f61162f9361292f565b636ba3461960e11b5f5260045260245ffd5b6011548281936144b3575b5050604051632eec7b5560e11b8152600481018390529290506020836024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610a5a5761445d946020945f93614492575b506040516363fdc96f60e11b8152600481019490945260248401919091526001600160a01b0316604483015260a060648301525f60a4830181905260848301819052919384928391829060c4820190565b03926001600160a01b03165af18015610a5a576144775750565b61448f9060203d602011611e0057611df3818361292f565b50565b5f9193506144ac90863d8811611bd557611bc7818361292f565b929061440c565b6144bc9261514d565b5f81816143ac565b6001600160c01b039081165f19019190821161082957565b929096959493916401000000008510156146e2576144f8613085565b61450181611f28565b600381141590816146cd575b508061469e575b614682576001600160a01b0388165f908152600e602052604090206145389061094b565b6001600160c01b03811615159086908261466a575b505061464957604080516001600160a01b038a166020808301918252825261459992614593929061457e908261292f565b5190206bffffffffffffffffffffffff191690565b60601c90565b6001600160a01b0381165f90815260096020908152604080832060088a901c8452909152902054600160ff88161b16614628579061460360026145fd61162f9a9b6104448a6121d16146229a999860018060a01b03165f52600960205260405f2090565b01614c93565b9491608093916040519384526020840152604083015260608201522090565b906150c5565b632939af3b60e21b5f526001600160a01b038916600452602486905260445ffd5b632939af3b60e21b5f526001600160a01b038816600452602485905260445ffd5b614679919250611eba906144c4565b1015855f61454d565b6304bba81f60e41b5f526001600160a01b03881660045260245ffd5b506001600160a01b0388165f908152600f602052604090206146c89061110c905460081c60ff1690565b614514565b600291506146da81611f28565b14155f61450d565b6309f6605160e41b5f52600485905260245ffd5b61eeee813561470481610db3565b6001600160a01b03161461475d5760200162030d4063ffffffff823561472981612acc565b16106147325750565b61473e6109d191613412565b630555d0f160e41b5f5263ffffffff1660045262030d40602452604490565b6040013561eeee81141580614785575b6147745750565b62e80c7760e31b5f5260045260245ffd5b5080151561476d565b90916148775761479c61487b565b916001600160a01b038084169083161415806147f3575b6147bc57505050565b604051631326f75560e11b81526001600160a01b039283166004820152929091166024830152604482015260206064820152608490fd5b50604051631a45b42760e11b8152602081806148158386888a60048601613a0b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a5a575f91614858575b50156147b3565b614871915060203d602011612f9657612f88818361292f565b5f614851565b5050565b6014361015806148a2575b1561489e5760131936013681116104bb573560601c90565b3390565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614886565b601454600160401b8110156128d957600181016014556014548110156128115760145f527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0155565b8054905f81558161492c575050565b81600302916003830403610829575f5260205f20908101905b818110614950575050565b6003905f81555f60018201555f600282015501614945565b91908110156128115760071b0190565b8054821015612811575f52600360205f20910201905f90565b3561282081612ae5565b8054600160401b8110156128d9576149b891600182018155614978565b614a43576002614a26606061162f94803585556001850160208201356149dd81612ada565b815460ff70ffffffffffffffffffffffffffffffff006040860135614a0181612ae5565b60081b1692169070ffffffffffffffffffffffffffffffffff19161717905501614991565b9101906001600160801b03166001600160801b0319825416179055565b634e487b7160e01b5f525f60045260245ffd5b90919392934682148015614b90575b61417157614a7b825f52600760205260405f2090565b5483111561417157614af292614a99835f52600760205260405f2090565b55614aac825f52600260205260405f2090565b55614ac561110c611b43835f52601060205260405f2090565b614b60575b614ae4614adf825f52601560205260405f2090565b61491d565b5f52601560205260405f2090565b905f5b818110614b025750505050565b80614b19614b136001938588614968565b8561499b565b614b24818487614968565b35614b406108b1848060a01b03925f52600d60205260405f2090565b1680614b4e575b5001614af5565b614b588286614978565b50555f614b47565b614b82614b75825f52601060205260405f2090565b805460ff19166001179055565b614b8b816148d4565b614aca565b508115614a65565b60208210156128115701905f90565b916020830190614bb78254612837565b92838355839463ffffffff94858111614c3857505f95915b60208710614bf057845463515447c160e01b5f52600452602486905260445ffd5b600180841614614c2557614c07610fff8884614b98565b5f526020526001614c1c60405f209360011c90565b96019591614bcf565b935061162f945061158292959150614b98565b63515447c160e01b5f52600452602485905260445ffd5b9060208110156128115760051b0190565b61042081019392915f825b60208210614c7d575050506104000152565b6020806001928551815201930191019091614c6b565b6020810154908115614d3157614ca7612fdd565b905f5b60208110614d01575050604051634a490c2560e01b81529160209183918291614cd7919060048401614c60565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a575f91613b7a575090565b80600180921b8516614d14575b01614caa565b614d21610fff8285614b98565b614d2b8286614c4f565b52614d0e565b50507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75790565b6020818303126104bb578051906001600160401b0382116104bb57018082039160c083126104bb576040805193614d8d85612914565b8351614d9881612ada565b8552602084015160208601528184015182860152605f1901126104bb57604051614dc1816128f9565b6060830151614dcf81612d2a565b815260808301516020820152606084015260a08201516001600160401b0381116104bb57614dfd92016130bd565b608082015290565b949091939550614e20600160125401806012554260801b1790565b906001600160401b0360115497614e35613291565b6060880151604051634cba057b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152604481019b909b5260648b019190915260848a015260a489018690521660c488015260e487015260016101048701526101248601525f8561014481730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4938415610a5a5761162f955f95614f08575b506153ee565b614f259195503d805f833e614f1d818361292f565b810190614d57565b935f614f02565b5f9080515f915b818310614f6657505050620124f8810290808204620124f8149015171561082957620493e00180620493e0116108295790565b9091926040614f758584612cbc565b51015151810180911161082957926001019190614f33565b63ffffffff8111614fa15763ffffffff1690565b6306dfcc6560e41b5f52602060045260245260445ffd5b61040061042092959493610440830196835260208301370152565b90926020906001614ff48460018060a01b03165f52600a60205260405f2090565b01549461501560405195869384936307fbe4d560e41b855260048501614fb8565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4918215610a5a575f926150a4575b5082821461509f576001600160a01b03165f908152600c60205260409020905f5b6004811061506b5750505090565b615078610fff8285612d45565b80151580615096575b61508e575060010161505d565b935050505090565b50808314615081565b505090565b6150be91925060203d602011611e0057611df3818361292f565b905f61503c565b926020916150e760405194859384936307fbe4d560e41b855260048501614fb8565b0381730b2b545a4e2fd65d29f2417f1b26698d71769a8f5af4908115610a5a575f9161512e575b5081810361511a575050565b6272c3e960e11b5f5260045260245260445ffd5b615147915060203d602011611e0057611df3818361292f565b5f61510e565b9061515782612ff3565b808211615330575061516c6103d68385613f54565b906001600160a01b0382161561530f576001600160a01b038316935f9261eeee861480159290859061530757506040516370a0823160e01b81523060048201526020816024818b5afa908115610a5a575f916152e8575b50946151d085848a6155fc565b823b156104bb57604051639e6eec0560e01b815260048101929092526001600160a01b0387166024830152604482018590525f6064830181905260c0608484015260c4830181905260e060a484015260e4830181905291928391610104918391905af18015610a5a576152d4575b5061524a575b50505050565b6152539161288c565b6040516370a0823160e01b815230600482015292909190602090849060249082905afa928315610a5a575f936152b3575b508183036152925780615244565b63884aa24960e01b5f526001600160a01b031660045260245260445260645ffd5b6152cd91935060203d602011611e0057611df3818361292f565b915f615284565b80610a4e5f6152e29361292f565b5f61523e565b615301915060203d602011611e0057611df3818361292f565b5f6151c3565b9450836151d0565b63b61c181f60e01b5f5260048490526001600160a01b03831660245260445ffd5b6360ec3e7160e01b5f5260049190915260245260445ffd5b6001600160a01b03918216815291811660208301529091166040820152606081019190915263ffffffff91909116608082015260c060a0820181905261282092910190613c26565b60e06080612820936020845260ff815116602085015260208101516040850152604081015160608501526153de606082015183860190602080916001600160401b0381511684520151910152565b01519160c0808201520190614198565b939190925f948061438f57506154056103d6612a99565b936001600160a01b0381169061eeee8214158061557b575b1561556f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316926154588585856155fc565b6060810151615479906040906001600160a01b031692015163ffffffff1690565b9161548261376d565b95853b156104bb5760405163540abf7360e01b8152965f94889485946154ae94918d9160048801615348565b038183865af1928315610a5a576154ca9361555b575b50615584565b60405163331e807b60e11b6020820152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906155309061433f90608090614338866155228360248301615390565b03601f19810188528761292f565b91813b156104bb57614370945f9460405196879586948593633dbb202b60e01b855260048501614293565b80610a4e5f6155699361292f565b5f6154c4565b505050909250916154ca565b5083151561541d565b906155905f828461564b565b15615599575050565b6155a38183615698565b156155db575f6155b391836156fc565b156155bb5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b50635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b919061560982828561564b565b1561561357505050565b61561d8184615698565b1561562d57906155b391836156fc565b635274afe760e01b5f9081526001600160a01b038416600452602490fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615687575b50604052565b3d15903b151516909216915f615681565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f51148416156156da5750604052565b600184929415166156f3573b15153d151616915f615681565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f51148416156156da575060405256fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a",
2298
+ "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract JBOptimismSuckerDeployer\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"registry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidInitialization\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSucker_AccountingSyncUnsupported\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_AmountExceedsUint128\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minGasLimit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_BelowMinGas\"},{\"inputs\":[{\"internalType\":\"enum JBSuckerState\",\"name\":\"state\",\"type\":\"uint8\"}],\"type\":\"error\",\"name\":\"JBSucker_Deprecated\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"givenTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTime\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_DeprecationTimestampTooSoon\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_ExpectedMsgValue\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_IndexOutOfRange\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_InsufficientMsgValue\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"received\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"type\":\"error\",\"name\":\"JBSucker_InvalidMessageVersion\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteToken\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBSucker_InvalidNativeRemoteAddress\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxRoot\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBSucker_InvalidProof\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_LeafAlreadyExecuted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_NoRetainedToRemoteFee\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_NoRetainedTransportPaymentRefund\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_NoTerminalForToken\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"caller\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBSucker_NotPeer\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"outboxBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"treeCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numberOfClaimsSent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_NothingToSend\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_RefundFailed\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteToken\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_RemoteTokenAlreadyMapped\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappedTo\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBSucker_TokenAlreadyMapped\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_TokenHasInvalidEmergencyHatchState\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBSucker_TokenNotMapped\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_UnexpectedMsgValue\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_UnexpectedTokenBalance\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBSucker_ZeroBeneficiary\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBSucker_ZeroERC20Token\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSucker_ZeroProjectTokenCount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeaves\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"MerkleLib_InsertTreeIsFull\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"NotInitializing\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sourceTimestamp\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AccountingDataSynced\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimFailed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Claimed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeprecationTimeUpdated\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"EmergencyExit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"EmergencyHatchOpened\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Initialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bytes32\",\"name\":\"hashed\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"InsertToOutboxTree\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"NewInboxTreeRoot\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RetainedToRemoteFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RetainedToRemoteFeeClaimed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RetainedTransportPaymentRefund\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RetainedTransportPaymentRefundClaimed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RootToRemote\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint64\",\"name\":\"receivedNonce\",\"type\":\"uint64\",\"indexed\":false},{\"internalType\":\"uint64\",\"name\":\"currentNonce\",\"type\":\"uint64\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"StaleRootRejected\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"MESSAGE_VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"MESSENGER_BASE_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"MESSENGER_ERC20_MIN_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"OPBRIDGE\",\"outputs\":[{\"internalType\":\"contract IOPStandardBridge\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"OPMESSENGER\",\"outputs\":[{\"internalType\":\"contract IOPMessenger\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"REGISTRY\",\"outputs\":[{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"amountToAddToBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBClaim[]\",\"name\":\"claims\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"}]},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claim\"},{\"inputs\":[{\"internalType\":\"struct JBClaim\",\"name\":\"claimData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"}]},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claim\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimRetainedToRemoteFee\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimRetainedTransportPaymentRefund\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"deployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"enableEmergencyHatchFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"executedLeafHashOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"struct JBClaim\",\"name\":\"claimData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"}]},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"exitThroughEmergencyHatch\"},{\"inputs\":[{\"internalType\":\"struct JBMessageRoot\",\"name\":\"root\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBInboxTreeRoot\",\"name\":\"remoteRoot\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}]},{\"internalType\":\"struct JBChainAccounting[]\",\"name\":\"accounts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSourceContext[]\",\"name\":\"contexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"surplus\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}]}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"fromRemote\"},{\"inputs\":[{\"internalType\":\"struct JBAccountingSnapshot\",\"name\":\"snapshot\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"},{\"internalType\":\"struct JBChainAccounting[]\",\"name\":\"accounts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSourceContext[]\",\"name\":\"contexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"surplus\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"fromRemoteAccounting\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"inboxOf\",\"outputs\":[{\"internalType\":\"struct JBInboxTreeRoot\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"localProjectId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"remotePeer\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialProjectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isMapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"struct JBTokenMapping\",\"name\":\"map\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"remoteToken\",\"type\":\"bytes32\"}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"mapToken\"},{\"inputs\":[{\"internalType\":\"struct JBTokenMapping[]\",\"name\":\"maps\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"remoteToken\",\"type\":\"bytes32\"}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"mapTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"outboxOf\",\"outputs\":[{\"internalType\":\"struct JBOutboxTree\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint192\",\"name\":\"numberOfClaimsSent\",\"type\":\"uint192\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"struct MerkleLib.Tree\",\"name\":\"tree\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bytes32[32]\",\"name\":\"branch\",\"type\":\"bytes32[32]\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peer\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainAccountsOf\",\"outputs\":[{\"internalType\":\"struct JBChainAccounting[]\",\"name\":\"accounts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSourceContext[]\",\"name\":\"contexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"surplus\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainContextsOf\",\"outputs\":[{\"internalType\":\"struct JBPeerChainContext[]\",\"name\":\"contexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"surplus\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}]},{\"internalType\":\"uint256\",\"name\":\"snapshot\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"includeVirtual\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainTotalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"peerChainTotalSupplyValue\",\"outputs\":[{\"internalType\":\"struct JBPeerChainValue\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"peerChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"snapshotTimestamp\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beneficiary\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"prepare\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"remoteTokenFor\",\"outputs\":[{\"internalType\":\"struct JBRemoteToken\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"emergencyHatch\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"addr\",\"type\":\"bytes32\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"retainedToRemoteFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"retainedToRemoteFeeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"retainedTransportPaymentRefundBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"retainedTransportPaymentRefundOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setDeprecation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"snapshotTimestampOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum JBSuckerState\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"syncAccountingData\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"toRemote\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"amountToAddToBalanceOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the amount to add to balance for.\"},\"returns\":{\"_0\":\"The amount of terminal tokens available to add to the project's balance.\"}},\"claim((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32]))\":{\"params\":{\"claimData\":\"The terminal token, merkle tree leaf, and proof for the claim.\"}},\"claim((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32])[])\":{\"details\":\"Per-leaf resilience: each leaf is claimed through an external `this.claim(JBClaim)` sub-call wrapped in try/catch, so a single failing or stale leaf (e.g. its inbox root has not arrived yet, it was already executed, or a transient mint/add-to-balance dependency reverts) only skips that one leaf — the rest of the batch still settles. Because the sub-call is a separate message frame, a caught revert rolls back every state change that leaf attempted (its `_executedFor` bit, its `executedLeafHashOf` entry, and any `_addToBalance`/`mintTokensOf` effects), so the skipped leaf stays fully claimable later. Routing through `this.claim` is safe because the single-leaf `claim` mints to `claimData.leaf.beneficiary` and adds funds to the project balance — it never depends on `msg.sender` being the original batch caller, so the self-call does not change who is credited.\",\"params\":{\"claims\":\"A list of claims to perform (including the terminal token, merkle tree leaf, and proof for each claim).\"}},\"claimRetainedToRemoteFee(address)\":{\"params\":{\"beneficiary\":\"The address that should receive the retained ETH.\"}},\"claimRetainedTransportPaymentRefund(address)\":{\"params\":{\"beneficiary\":\"The address that should receive the retained ETH.\"}},\"constructor\":{\"params\":{\"deployer\":\"A contract that deploys clones of this contract.\",\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"permissions\":\"A contract storing permissions.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"enableEmergencyHatchFor(address[])\":{\"details\":\"For use when a token or a few tokens are no longer compatible with a bridge.\",\"params\":{\"tokens\":\"The terminal tokens to enable the emergency hatch for.\"}},\"exitThroughEmergencyHatch((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32]))\":{\"params\":{\"claimData\":\"The terminal token, merkle tree leaf, and proof for the claim.\"}},\"fromRemote((uint8,bytes32,uint256,(uint64,bytes32),(uint256,uint256,(bytes32,uint8,uint128,uint128)[],uint256)[]))\":{\"details\":\"This can only be called by the messenger contract on the local chain, with a message from the remote peer.Nonce ordering: This function accepts any nonce strictly greater than the current inbox nonce, rather than requiring sequential (nonce == inbox.nonce + 1) processing. This is intentional because some bridges (e.g., Chainlink CCIP) do not guarantee in-order message delivery. If nonces arrive out of order, the inbox root is set to the latest nonce's root. Claims from earlier nonces remain provable against the latest root (the merkle tree is append-only), but users will need regenerated proofs computed against the current root. This trade-off is accepted because enforcing sequential nonces could permanently block a token's inbox if a single message is delayed or lost by the bridge.Post-deprecation root acceptance: Roots are accepted in DEPRECATED state to prevent stranding tokens that were sent before deprecation. Even though the mandatory `_maxMessagingDelay()` (14-day) buffer gives in-flight messages time to arrive, accepting roots after deprecation provides a stronger guarantee that users can always claim their bridged tokens. Double-spend is not a concern because `toRemote` is already disabled in `SENDING_DISABLED` and `DEPRECATED` states, so no new outbound transfers can occur.\",\"params\":{\"root\":\"The merkle root, token, and amount to receive.\"}},\"fromRemoteAccounting((uint8,(uint256,uint256,(bytes32,uint8,uint128,uint128)[],uint256)[]))\":{\"details\":\"This can only be called by the messenger contract on the local chain, with a message from the remote peer. It shares the same freshness gate as `fromRemote`, so stale accounting-only messages cannot roll back fresher state delivered by a root message.\",\"params\":{\"snapshot\":\"The peer-chain accounting snapshot to receive.\"}},\"inboxOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the inbox for.\"},\"returns\":{\"_0\":\"The inbox tree root for the token.\"}},\"initialize(uint256)\":{\"params\":{\"initialProjectId\":\"The ID of the project (on the local chain) that this sucker is associated with.\"}},\"initialize(uint256,bytes32)\":{\"params\":{\"localProjectId\":\"The ID of the project (on the local chain) that this sucker is associated with.\",\"remotePeer\":\"The remote peer address. Leave zero to use the default deterministic same-address peer.\"}},\"isMapped(address)\":{\"params\":{\"token\":\"The terminal token to check.\"},\"returns\":{\"_0\":\"A boolean which is `true` if the token is mapped to a remote token and `false` if it is not.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"mapToken((address,uint32,bytes32))\":{\"params\":{\"map\":\"The local and remote terminal token addresses to map, and minimum amount/gas limits for bridging them.\"}},\"mapTokens((address,uint32,bytes32)[])\":{\"params\":{\"maps\":\"A list of local and remote terminal token addresses to map, and minimum amount/gas limits for bridging them.\"}},\"outboxOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the outbox for.\"},\"returns\":{\"_0\":\"The outbox tree for the token.\"}},\"peer()\":{\"details\":\"Defaults to `_toBytes32(address(this))`, assuming deterministic cross-chain deployment via CREATE2. The deployer (`JBSuckerDeployer`) uses `salt = keccak256(abi.encodePacked(_msgSender(), salt))` to ensure sender-specific determinism. An explicit peer can be set during clone initialization for deployments where the legitimate remote sucker address is known but does not match the local clone address.\",\"returns\":{\"_0\":\"The bytes32 representation of the peer sucker address.\"}},\"peerChainAccountsOf()\":{\"details\":\"The registry reads this to gather a project's full cross-chain knowledge and re-gossip it. Incoming contexts are stored in this sucker's token namespace where a mapping exists, so a hub forwards sibling-chain accounting in hub-local token terms and the next spoke only needs its mapping to the hub token.\",\"returns\":{\"accounts\":\"One accounting record per known peer chain.\"}},\"peerChainContextsOf(uint256)\":{\"details\":\"Stored contexts are already keyed in this sucker's token namespace where a mapping exists. This folds same-currency, same-decimals entries together. The result is un-valued — the registry values each context into a requested currency; the sucker consults no price oracle. Contexts that share a currency but carry different decimals are kept separate because the raw amounts are on different scales and cannot be summed directly.\",\"params\":{\"chainId\":\"The peer chain to read the contexts of.\"},\"returns\":{\"contexts\":\"The per-currency surplus and balance for the chain.\",\"snapshot\":\"The source freshness key of the chain's latest accepted record.\"}},\"peerChainId()\":{\"returns\":{\"_0\":\"chainId of the peer.\"}},\"peerChainIds(bool)\":{\"details\":\"With `includeVirtual` false, returns only the directly-connected peer chain (the one this sucker is bridged to). With `includeVirtual` true, also returns every other chain it has learned about through gossip relayed by that peer. The directly-connected peer is always present (with a zero value until its first record) so the registry can enumerate the chain the moment this sucker is deployed. Until the sucker receives its first record, that entry is an empty sentinel (value 0, freshness 0) which the registry skips, so a freshly-deployed active sucker takes over a chain's accounting only once it has synced real data — a deprecated sucker's record keeps answering for the chain during the migration window.\",\"params\":{\"includeVirtual\":\"Whether to also include virtually-known (gossiped) peer chains.\"},\"returns\":{\"chainIds\":\"The peer chain IDs.\"}},\"peerChainTotalSupplyValue(uint256)\":{\"details\":\"Lets the registry read the value, the peer chain it belongs to, and its freshness in one call. The `value` matches `peerChainTotalSupplyOf(chainId)`.\",\"params\":{\"chainId\":\"The peer chain to read the total supply value of.\"},\"returns\":{\"_0\":\"A `JBPeerChainValue` with the total supply, peer chain ID, and snapshot freshness key.\"}},\"prepare(uint256,bytes32,uint256,address,bytes32)\":{\"details\":\"This adds the tokens and funds to the outbox tree for the `token`. They will be bridged by the next call to `toRemote` for the same `token`.Reentrancy protection: This function has implicit reentrancy protection through `_pullBackingAssets`. The `assert` in `_pullBackingAssets` verifies that the contract's token balance increased by exactly the amount reported by the terminal's `cashOutTokensOf`. A reentrant `prepare()` call would trigger a nested `cashOutTokensOf`, changing the contract's balance before the outer call's `assert` executes. The outer `assert` would then fail because the balance delta no longer matches the reported `reclaimedAmount`. Note: because `assert` is used (not `revert`), a failed reentrancy attempt will consume all remaining gas.\",\"params\":{\"beneficiary\":\"The recipient on the remote chain (bytes32 for cross-VM compatibility). For EVM peers: the EVM address left-padded to 32 bytes via `_toBytes32`. For SVM peers: the full 32-byte Solana public key.\",\"minTokensReclaimed\":\"The minimum amount of terminal tokens to cash out for. If the amount cashed out is less than this, the transaction will revert.\",\"projectTokenCount\":\"The number of project tokens to prepare for bridging.\",\"token\":\"The address of the terminal token to cash out for.\"}},\"projectId()\":{\"returns\":{\"_0\":\"The local project ID.\"}},\"remoteTokenFor(address)\":{\"params\":{\"token\":\"The local terminal token to get the remote token for.\"},\"returns\":{\"_0\":\"The remote token mapping for the given local token.\"}},\"setDeprecation(uint40)\":{\"params\":{\"timestamp\":\"The time after which the sucker will be deprecated. Or `0` to remove the upcoming deprecation.\"}},\"state()\":{\"returns\":{\"_0\":\"state The current deprecation state\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"The interface ID to check.\"},\"returns\":{\"_0\":\"A boolean indicating whether the interface is supported.\"}},\"syncAccountingData()\":{\"details\":\"The caller still provides any bridge transport payment through `msg.value`.\"},\"toRemote(address)\":{\"details\":\"This sends the outbox root for the specified `token` to the remote chain.Fee payment failure handling: The registry fee payment uses a best-effort pattern (try/catch). If the fee project's terminal doesn't exist or the `pay` call reverts, the fee ETH is retained as a refundable balance for the original caller instead of being added back to `transportPayment`. This preserves `transportPayment = msg.value - fee`, which is critical for zero-cost bridges (OP, Base, Celo, Arb L2->L1) that revert on non-zero transport payment. The retained fee is excluded from `amountToAddToBalanceOf`.\",\"params\":{\"token\":\"The terminal token to bridge.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FEE_PROJECT_ID()\":{\"notice\":\"The project ID that receives the `toRemoteFee` payment. Typically the protocol project (ID 1).\"},\"MESSAGE_VERSION()\":{\"notice\":\"The message format version. Used to reject incompatible messages from remote chains.\"},\"MESSENGER_BASE_GAS_LIMIT()\":{\"notice\":\"A reasonable minimum gas limit for a basic cross-chain call to `fromRemote` on the remote chain.\"},\"MESSENGER_ERC20_MIN_GAS_LIMIT()\":{\"notice\":\"A reasonable minimum gas limit for performing an ERC-20 transfer on the remote chain.\"},\"OPBRIDGE()\":{\"notice\":\"The bridge used to bridge tokens between the local and remote chain.\"},\"OPMESSENGER()\":{\"notice\":\"The messenger used to send messages between the local and remote sucker.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"The project registry (ERC-721 ownership).\"},\"REGISTRY()\":{\"notice\":\"The sucker registry that manages the global `toRemoteFee`.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"amountToAddToBalanceOf(address)\":{\"notice\":\"The outstanding amount of tokens to be added to the project's balance by `claim`.\"},\"claim((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32]))\":{\"notice\":\"Claim a single bridged entry: verifies the merkle proof against the inbox root, mints the specified project tokens for the beneficiary, and deposits the terminal tokens into the project's local balance.\"},\"claim((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32])[])\":{\"notice\":\"Claim multiple bridged entries in a single transaction. Each claim mints project tokens for the beneficiary and deposits the corresponding terminal tokens into the project's local balance.\"},\"claimRetainedToRemoteFee(address)\":{\"notice\":\"Claim retained failed-fee ETH.\"},\"claimRetainedTransportPaymentRefund(address)\":{\"notice\":\"Claim retained failed transport-payment refund ETH.\"},\"deployer()\":{\"notice\":\"The address of this contract's deployer.\"},\"enableEmergencyHatchFor(address[])\":{\"notice\":\"Enables the emergency hatch for a list of tokens, allowing users to exit on the chain they deposited on.\"},\"executedLeafHashOf(address,uint256)\":{\"notice\":\"The keccak256 hash of the leaf data committed at execution time, keyed by `(terminalToken, leafIndex)`. Beneficiary contracts (e.g. `JBReferralSplitHook`) use this to authenticate post-hoc settlement when their `claim()` call was front-run by a direct external caller — they re-derive the hash from the claim data they hold and compare. Returns `bytes32(0)` for unexecuted indices — `_buildTreeHash` is pre-image-resistant so zero unambiguously means \\\"not executed\\\".\"},\"exitThroughEmergencyHatch((address,(uint256,bytes32,uint256,uint256,bytes32),bytes32[32]))\":{\"notice\":\"Emergency escape hatch: lets a user reclaim their project tokens and terminal tokens on the chain they deposited from, when the bridge has become permanently non-functional. Must be enabled by the project owner via `enableEmergencyHatchFor`.\"},\"fromRemote((uint8,bytes32,uint256,(uint64,bytes32),(uint256,uint256,(bytes32,uint8,uint128,uint128)[],uint256)[]))\":{\"notice\":\"Receive a merkle root and peer-chain accounting snapshot from the remote sucker. Updates the inbox tree so that users can claim bridged tokens. Also accepts any native-token funds delivered with the message.\"},\"fromRemoteAccounting((uint8,(uint256,uint256,(bytes32,uint8,uint128,uint128)[],uint256)[]))\":{\"notice\":\"Receive a peer-chain accounting snapshot from the remote sucker without updating any token-local inbox root.\"},\"inboxOf(address)\":{\"notice\":\"The inbox merkle tree root for a given token.\"},\"initialize(uint256)\":{\"notice\":\"Initializes the sucker with the project ID.\"},\"initialize(uint256,bytes32)\":{\"notice\":\"Initializes the sucker with the project ID and an explicit peer address.\"},\"isMapped(address)\":{\"notice\":\"Checks whether the specified token is mapped to a remote token.\"},\"mapToken((address,uint32,bytes32))\":{\"notice\":\"Map an ERC-20 token on the local chain to a remote-chain ERC-20 token for bridging.\"},\"mapTokens((address,uint32,bytes32)[])\":{\"notice\":\"Configure which remote-chain tokens each local terminal token maps to, enabling (or disabling) those tokens for cross-chain bridging. Setting a remote token to `bytes32(0)` disables bridging and flushes any pending outbox entries. Requires `MAP_SUCKER_TOKEN` permission from the project owner or deployment registry.\"},\"outboxOf(address)\":{\"notice\":\"The outbox merkle tree for a given token.\"},\"peer()\":{\"notice\":\"The peer sucker on the remote chain, as a bytes32 for cross-VM compatibility.\"},\"peerChainAccountsOf()\":{\"notice\":\"The un-valued accounting record this sucker holds for every peer chain it has heard about.\"},\"peerChainContextsOf(uint256)\":{\"notice\":\"One peer chain's per-currency surplus and balance from its latest accepted record, plus that record's freshness key.\"},\"peerChainId()\":{\"notice\":\"Returns the chain on which the peer is located.\"},\"peerChainIds(bool)\":{\"notice\":\"The peer chains this sucker reports accounting for.\"},\"peerChainTotalSupplyOf(uint256)\":{\"notice\":\"The last known total token supply on each peer chain, updated each time a bridge message carries that chain's accounting record.\"},\"peerChainTotalSupplyValue(uint256)\":{\"notice\":\"One peer chain's total supply bundled with the peer chain ID and the record's freshness key.\"},\"prepare(uint256,bytes32,uint256,address,bytes32)\":{\"notice\":\"Queue project tokens for bridging to the remote chain. Transfers the caller's project tokens into this contract, cashes them out for the specified terminal token, and inserts a leaf into the outbox merkle tree. The queued entry will be bridged the next time anyone calls `toRemote` for the same `token`.\"},\"projectId()\":{\"notice\":\"The ID of the project (on the local chain) that this sucker is associated with.\"},\"remoteTokenFor(address)\":{\"notice\":\"Information about the token on the remote chain that the given token on the local chain is mapped to.\"},\"retainedToRemoteFeeBalance()\":{\"notice\":\"The total retained failed-fee ETH excluded from native add-to-balance accounting.\"},\"retainedToRemoteFeeOf(address)\":{\"notice\":\"The retained failed-fee ETH owed to each original `toRemote` caller.\"},\"retainedTransportPaymentRefundBalance()\":{\"notice\":\"The total retained failed transport-payment refund ETH excluded from native add-to-balance accounting.\"},\"retainedTransportPaymentRefundOf(address)\":{\"notice\":\"The retained failed transport-payment refund ETH owed to each original bridge caller.\"},\"setDeprecation(uint40)\":{\"notice\":\"Schedule (or cancel) the deprecation of this sucker. Once deprecated, no new outbound transfers are accepted and users can exit via the emergency hatch. Requires `SET_SUCKER_DEPRECATION` permission. A mandatory 14-day buffer ensures in-flight messages have time to arrive before the sucker fully shuts down.\"},\"snapshotTimestampOf(uint256)\":{\"notice\":\"The source-chain freshness key of the most recent accepted accounting record for each peer chain.\"},\"state()\":{\"notice\":\"Reports the deprecation state of the sucker.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract supports the given interface.\"},\"syncAccountingData()\":{\"notice\":\"Send the latest peer-chain accounting data without sending an outbox root or paying the registry `toRemoteFee`.\"},\"toRemote(address)\":{\"notice\":\"Send the accumulated outbox merkle root and locked terminal-token funds for a given `token` across the bridge to the remote peer sucker. Anyone can call this once entries exist in the outbox. Requires `msg.value` to cover the registry's `toRemoteFee` plus any bridge transport payment.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@ballkidz/=node_modules/@ballkidz/\",\"@bananapus/=node_modules/@bananapus/\",\"@bannynet/=node_modules/@bannynet/\",\"@chainlink/=node_modules/@chainlink/\",\"@croptop/=node_modules/@croptop/\",\"@ensdomains/=node_modules/@ensdomains/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@rev-net/=node_modules/@rev-net/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/=node_modules/@sphinx-labs/\",\"@uniswap/=node_modules/@uniswap/\",\"@unruggable/=node_modules/@unruggable/\",\"@zksync/=node_modules/@zksync/\",\"base64-sol/=node_modules/base64-sol/\",\"ds-test/=node_modules/@uniswap/v4-core/lib/solmate/lib/ds-test/\",\"erc4626-tests/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\"forge-gas-snapshot/=node_modules/@uniswap/v4-periphery/lib/permit2/lib/forge-gas-snapshot/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"lib/base64/=node_modules/base64-sol/\",\"openzeppelin-contracts/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/\",\"permit2/=node_modules/@uniswap/v4-periphery/lib/permit2/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/@sphinx-labs/contracts/node_modules/solmate/\",\"typeface/=lib/typeface/contracts/\",\"v4-core/=node_modules/@uniswap/v4-periphery/lib/v4-core/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"none\"},\"compilationTarget\":{\"node_modules/@bananapus/suckers-v6/src/JBOptimismSucker.sol\":\"JBOptimismSucker\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"viaIR\":true},\"sources\":{\"node_modules/@bananapus/core-v6/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0x16a1fa9f031564f9f3253d5e21327b228651269263bfbde10eb04862c65ed577\",\"urls\":[\"bzz-raw://4150d75d10f267953c0a42948ebd7bffe1568a5fb0dfe84befcda512ddf3a19c\",\"dweb:/ipfs/QmVMYXMRyiLySHCtoPke9AuVkhoVm9Gx1zoLMmSjXjFf2M\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x58f3eed8b6ecea6b640f4eb78a5a416ce8737f9155e350ef4077db422b3fca8f\",\"urls\":[\"bzz-raw://0b56bde97ef9d8ec2a3e464202c5d2fee9c39597485b3fb8baaeef971cc63bc8\",\"dweb:/ipfs/QmSdPaNfPm83yibuSvgLbaqgZw7LYkTLhacrxDagH3sprJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x2a6d327092775fdbeaf922b8364403102cae437f765f662fe142bf97e87c2ef1\",\"urls\":[\"bzz-raw://5f9a23971860b907569917fe14cbcc85993d83fb32e5342dd5338a1721e540f7\",\"dweb:/ipfs/Qmamt2n7HaWo2cUDn8K2FhrZPHBVxuaCWh9jf8V3WYPXMN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0x4923d51fd680cc280a9e90eec8e0597334ae2beb8c04d71289e319d7f82aa70b\",\"urls\":[\"bzz-raw://a39ee26c58248c154e5d4818fe544c614effded1c069b7d2e732c25d9caab4ff\",\"dweb:/ipfs/QmefeSH8CWtNQcrb8iNmfKKSViu3YnnJ9ciaNfEKhxgFHh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBController.sol\":{\"keccak256\":\"0x7032c26dd11cec1ed279bd96a63c0b4f77126835e9fec744e259495827f9ad92\",\"urls\":[\"bzz-raw://a2129d48bed0763676d7f0854d6e784134642584f4c70fabdc7e9e5a9490bf13\",\"dweb:/ipfs/QmU1D5L4gxf2acwXz4QAp9fSZNVboDcj4qTE3xCz5bh2M4\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xb8f3ba0a544360b32c9f0a704168ee93c2960accfc010735c8cbea54941e63d5\",\"urls\":[\"bzz-raw://e9f14d5daa2357db4afe96313b40bf0c53c606315c9cb55109fffdc9c2fd85d0\",\"dweb:/ipfs/QmRPHFAiivM9CqdfocRyahdSjfWTbaSepPNCGGQU23ABcv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x963e641f7b02187389fa813ab177b8d0f20a7a543f6ce2306e8d5f9db95d56e3\",\"urls\":[\"bzz-raw://b500161bcc70fac6830211b2f9855c2c1ab17a91226619cedde7daa166f9196c\",\"dweb:/ipfs/QmV92TK8CTZxVJoGBDEsBfUDidoLAobFmyL1NdQVJARpCD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0xaaa9a98ad8967e1ab71b560f1cc07fc53d4900a8d595d53f5fb090d8e004562f\",\"urls\":[\"bzz-raw://36513a02be24f9677e0f1e82e01970c81c09043b69e4e60cb3007e2a05f3ce64\",\"dweb:/ipfs/QmZPKkEhgM5A5GzHG4TPxAe8HzjyLxLZzmJaDMDTNxV783\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0x13cad5a8ef2daeb7634d93df6c9f6d1681b5344f4cdc89b03bbbd0953802fd8a\",\"urls\":[\"bzz-raw://35f25042894569b5c50a38d39ab3ceb91e4f69e56d448785701a3ffff335fe98\",\"dweb:/ipfs/QmTd6dF5X6L3v9bnfsh2ZKtRjK5ApwvmKipMWHNXfjwjBF\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessHook.sol\":{\"keccak256\":\"0x39b8d6e9798a90f555ea9ca44ade52f2fec5964df8994494bd5f4cfd42853602\",\"urls\":[\"bzz-raw://18e0a22e15d53db093648f6087280b45cf5a19571cf721ea49e4453f5da1cb98\",\"dweb:/ipfs/QmaRDN58nhCR4EkP3oaHpyG5EPgLtR2DSEDfPw4gRUG5Zd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0x0cb50a855cccbbe7c74a1ebc454112b7b63f502badd019895dd936365ac73340\",\"urls\":[\"bzz-raw://226be05349028b8f055e386fbc41f7db0feb6d027b6068c1c929b0924688e129\",\"dweb:/ipfs/QmXyotizn7pR8DQJtuj6Xkcr7LKorSkm9q8kQGaSDDikSw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x8e258ab09d0b1c429236d98a78610b829a9604e88f7c20fc1041535922c8b207\",\"urls\":[\"bzz-raw://0418c1dcfcd663ad55bf55ce38690e45ebefcc5a01575d6d7ecde18de283edab\",\"dweb:/ipfs/Qmbt2BJ3r9rLXqAZzrs36s24Ks3e6Ho3UTwvuUrtRdDtW6\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x08599d439d898566b311bc4bedf7f0050ce25c86e246c43f673f3ab4d2457f21\",\"urls\":[\"bzz-raw://db19e95707920262c79197be9296fe381782220bfaf00b71df3a4271da83832f\",\"dweb:/ipfs/QmYzdomQzXNSk46U5vkiEnDErJJdR17deL4S6hPundstZd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x67353962158e3349be384d3ceec89db2b7525c5f5c7f6c8cb8f98aeb09142e95\",\"urls\":[\"bzz-raw://01e55c712af9794b2bf0caeab8bd2bd8150f4c6cab61dfec026d40652d5a26d6\",\"dweb:/ipfs/QmbbcxEBJ8UxFUbGPWvyu1cwxgU9YefwhdNuPvfj7LzSZw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0xa43d05c9cc31cd768072e60d4f097d60dfe199469bfc96aa8df29346a15ee4dc\",\"urls\":[\"bzz-raw://de7caab7841a56b681140993557374edb54763a08b28aaaba35f1bc1a01f7937\",\"dweb:/ipfs/QmQKG6QNm7PNebRtKeLSzzXgp71Yw5Ja37nGPCvVa62Rzu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0xb32e13d512a7deb9ba1e47bbc0992817a63caa9e1f2913d6c55b637a57084037\",\"urls\":[\"bzz-raw://0d291ccc6edc581febf386779423001b0ed4d3b5b021ec444f7bef01cb2f9d28\",\"dweb:/ipfs/QmSUFhJpcpWYLEUzt4KrzyC4am39TNost8tWAtn5GdAUg2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0x5540c746854add8cdc1911f9903a77c9fc97098d8d205075b8baf07485be5cd2\",\"urls\":[\"bzz-raw://b2136b9ac8a2f2429c83531150810b144f5f7f1855dc85c60fcf8e8c161889a3\",\"dweb:/ipfs/QmNSB7LStqYoPLkZcDwb1dTcakxBp9iENoFfkTaNswBYXj\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x3a948500b5397c90e926f3bdef9423e7f095f906b23cd1503009802c80bedb41\",\"urls\":[\"bzz-raw://a0ea0b7e5d442257f6159799b7bf262615b0f04e5cd542b0980f131ae40a63bb\",\"dweb:/ipfs/QmX7uugLaXtT5XmYxqfrmDqU2YuknAeYjHMiLm9iHaRfHw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xed5e532f6ee86029a1a4a1ba8b593296f772909a5f9d95da6cc6c595a838446f\",\"urls\":[\"bzz-raw://4314cbfe4ebd96a48eaf1c14af860aa08b7cd6a73da10391746b4d3410d13d67\",\"dweb:/ipfs/QmfRkWFbxmJUMew6DsDGbK88PypDBUA6PDTJFvfBaMno5n\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0x4342aaa8b9566e17691f69fc71e050350dd89b63f5040f092f115610d7a6c0eb\",\"urls\":[\"bzz-raw://88ce07791403524a229b080ad05604962d5b54e57106a533f62bff8a32896b1d\",\"dweb:/ipfs/QmSYxFpoH714CF7mZVhgKvFdYHHgg8R4UGXVXhMS69C7H2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x72c6cbda5a93593e3cc49ef6c4e0848a4b6daa88c188c4192776af86c49911dc\",\"urls\":[\"bzz-raw://448ed5d7a704b5f4dd759514dbcb78160b82732ac6bd7bc368a9f8822045e6de\",\"dweb:/ipfs/QmbnpCPxQLDvQx5ymEy1Ty3aks7bjonydops1CsjCACJBN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x11dd67effb025396bec1bb97d35a9ba162340e9a824c048e8286802a12acaa45\",\"urls\":[\"bzz-raw://bae11f483c66d98e7fad9bbf47249f6fa4434693e8bace78cbe6d4da9afee009\",\"dweb:/ipfs/QmWjrjPtr8dLGtXQBrz6idwcNqyx2yVSVVQtqo74yqUSZV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x8fd69e04aa2b5962a917394c0a4baa6653f7cea93629a1915c1f9c2e870143e5\",\"urls\":[\"bzz-raw://6c7ce64037e6a11cc03e5c66607a219eb25c953ad76aa7b914d2a9e8f0cd5434\",\"dweb:/ipfs/QmYoTec9wfd89HAnNckC2XJWegtgUmfjmi1vJYT4LTXQ61\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0x8155763689f6f51b5c6712ac6f23728b248a8924e69e63f8aa14d01c78ea17f1\",\"urls\":[\"bzz-raw://7bab14bd7250cc3ba6665573f2a961308a3453015af7a0305488c0db1745f95b\",\"dweb:/ipfs/QmYpKwToPcSChWXyJ75SBEeWKugBygAnQ1WaZ8wWcu5rha\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x9d27fe4d9aa6dcbb24a24ee1fc16e51b51fab1c4ab1eace93981e73f3c4ce636\",\"urls\":[\"bzz-raw://7a6a1243102ac23cb1643bcc670b6b16b70566877941233964159f9b37755113\",\"dweb:/ipfs/Qmewa2o3nyoRwZ4pdhWqUh1ShWXA3GHJffiVafcKYXg2Ao\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xa3621c12f7c2e33ee38b5de626a5939190d8a12b1e5318a7cd8d398595480cec\",\"urls\":[\"bzz-raw://1341254389038383117d9b23ed2f9d1812fc30ef1c11cfd6c8423918894d7ba3\",\"dweb:/ipfs/QmV2WJ5a3NW12RnZAM3ySbEfGHNN6GfqqpsMHXorfoxiQo\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0x0ab2fd1b5249ff9dcbb51585df7df8c09af309a984fb0a2378426c7fd1800f43\",\"urls\":[\"bzz-raw://8bab809f8ea5692c738fbeb3f83d7b7259e469e03b7e4e3011358f887636ca44\",\"dweb:/ipfs/QmdbyiVSctQZcfibvygyyJntRpwzRoMDKrSkPydn7VouYm\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xadb3a7c3c149b60b6b51fdfb2acc814956d8aa9bb94e745c0e907c171b0983f2\",\"urls\":[\"bzz-raw://dddd118b37582f19c7559bdf848f53a29fb16289311bd14957c95fdee9cd28e6\",\"dweb:/ipfs/QmbwWXXVR4SGH9tz6pMKKMZxZ8YF8iRQpMCP3DnXDadx3L\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xcbdb1448260ebea5937411516957ef199099e34ff997e7f2a617c2898f921994\",\"urls\":[\"bzz-raw://d1cbf97e5684c987be6703c096e8230d870fab25a23eec8d209cd082e3f2637b\",\"dweb:/ipfs/QmNmzeuQoFiaUTQAcV1tyJyjUYEJ3t7386zTw4ofT7HoZM\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xf7b458ce7e75e1c4daf2052873846b7c99abb098c0d5fbb2ee5d18e132e4a76c\",\"urls\":[\"bzz-raw://ee20abdc20787df386809255eaee2ef27daca71d4769a0d146cc249502ab0604\",\"dweb:/ipfs/QmP3ZpnnnTQKKGNV9KyLxCYXkjBDuiAgqHX6NRGYuYzTaW\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x5d4b095f3b94c52f89b9cf8a8104de0242497e61f1b32ddc82e78a9ba71a6d0f\",\"urls\":[\"bzz-raw://3ac3340339e0b6a7aae881781b2830f59e3f44114955e2f770172a9bffddc104\",\"dweb:/ipfs/QmV9pFGNGcknqHLEuc6rmC1YPwuwtsokjzh1WX8H2jmVRp\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x5e260964f6c2d08b2a2929630fe4f261e8a93f40f0d073ed1a8174dbc3ca2fef\",\"urls\":[\"bzz-raw://125b54e29e33cb009a34651b9e255ca3e49545079839e58d14d5c5992871a27d\",\"dweb:/ipfs/QmcGAm8kytywkQogQUabLhuYDC5kLnsTinAm1rBLFwRjf9\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbd3b117f9457dbe55bd29a2daf368a682c0ab25cbedc0139f309809a4ab646c5\",\"urls\":[\"bzz-raw://6a72f70e18edb22b8abc238ba169e5c775696d07915b5d91a8601c1a28ff096e\",\"dweb:/ipfs/QmQZHfiTLqdk1pv1hiursm2icuAwFSzmjGTxRaHMcAqsUh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0xf53e975ce2632558a95d0a57679dbb8afff984d06daaa530cd4c442e467c3403\",\"urls\":[\"bzz-raw://519f7c466c8d90227afe2bd9108e7477412600fea8b4134889795a58a51b156c\",\"dweb:/ipfs/QmaSHMrNLfP8D9RRUaYbMWURdZYweUmt5ysgtTGMZiwnai\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0x8cd6d13c98bd825d7e61cb3b2f5cbf56e77f9a2f85eaa0e27d82f1fb8d5af4f7\",\"urls\":[\"bzz-raw://0e4ff9a254147cc6728b3bdc3862b77d15b518b49375e400b5f0b78552f14c62\",\"dweb:/ipfs/Qmd25R3LDrnRHiSdrNSdfqk8746A3J3VH44C5HDfHkFvU2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xcf1761f48e4cbd6eeeb64bb19e434eff50a7f666b2116657f88f63d19620c6de\",\"urls\":[\"bzz-raw://842fe47a4ad56c830040864b458de398efd0cf82eb0add9349e792d0c8b0c275\",\"dweb:/ipfs/QmXBj6EVnzvVX8ZYa2ndyjoSZDGjpXxaoy7dBuoGMaAmRX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x1579c160a19e68eb06158f56120acf06b8aa4bbbc9836c80fabbb3d2e57ccf3d\",\"urls\":[\"bzz-raw://a81f5e0c384caf0ac11814825ce07e6c6cee97d28f60dcd65dfe8d529b6135fe\",\"dweb:/ipfs/QmY2q7oMFDMN1PoQ8zp7PUQu4K5dYKhYLKBKqrTy42YU6N\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFee.sol\":{\"keccak256\":\"0x354a99f21d8fa1e306886b0163c8b2daed66d32a2b2bcf6eb1dcefecfc7ef471\",\"urls\":[\"bzz-raw://91b468d942f96d5e27882b836d503125aedd8b0da4ea8e4295cd1b619a83073b\",\"dweb:/ipfs/QmT6TL5eEap2GvaWCwcsCEgVVVwnwnNWmBGskrkESJeFKu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x7e62015441edc056c3959fb0e5d0b59a1b209a91ce4beab9d3f6c25e02daf0c0\",\"urls\":[\"bzz-raw://5c77a27155794a7c05ea17ed4bdb382039187b9effecc300563d7fb144029983\",\"dweb:/ipfs/QmXE4FptihU4wSqFLeGWsaNDpZmmNYFLEXMnWGhEC5pf3X\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x28f565b626774c36a990ac999f268fbaf9d7f7861e862fab1fb8301f2534e8d1\",\"urls\":[\"bzz-raw://a5d7375934179178febd3b412099b1a5ff42a154ce8b949df2c11b5f3cb3b80e\",\"dweb:/ipfs/QmXP5vVq8Z6HntiuMcPWfQURCKejyiyHLKYuMmzCuUJJtV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x9cb75b1171657be08950f9fc9f6c2bcb2496f618de4ab932141d424dec29d9df\",\"urls\":[\"bzz-raw://a8f578d6132c92048ae553a3c13260ecfa657f4a1bbe18f6c550d96988167590\",\"dweb:/ipfs/QmSYfGm2mcYfMm4wfnZMTjuUr1kBJoq4vZSCkwdgi9BRFk\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRuleset.sol\":{\"keccak256\":\"0xd03f45345597fca43effe3bc593572c989f4294d909505e331cbd2640a801d23\",\"urls\":[\"bzz-raw://2cc09b335549f4982c16c1109f3078f09fb81c32370baff007633a38badb7a83\",\"dweb:/ipfs/QmYJHBvXscvokRqzdGdTCRQtHUpnePS2uaCDfgHLuuMo56\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x812ca14f18e228fde272c0caf56a59b71302bfb4f9c514ac6fb0989ab8e1c48e\",\"urls\":[\"bzz-raw://9b234704315ac567db402c89dd5be46ca029094872f6dd52698324dd6ddf6a2d\",\"dweb:/ipfs/QmYPUJHLkyUwbYfJ7UdcpgvyzPtibUmhrKtzXQcRtA8Kvz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0xbb9bda3b7ebb6796fa091ee6ce3182ad2a03dc35b89df0fb1107fae7c26ae0b4\",\"urls\":[\"bzz-raw://1b400674d8ec4e3495041c03d5601c07a68eb5d18a0cff83a5823007d6bad36e\",\"dweb:/ipfs/Qma76CRFPwV9WZq2ttZ2FFvui5BvzRHnftrL3Tz1m9uGKv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplit.sol\":{\"keccak256\":\"0xf50ba85591d86076ff127e97af2c4b7d1a1be3e20e25d784b64591697d71ab52\",\"urls\":[\"bzz-raw://04276773313a01c2b816c95addea68843c21db3888f4c547eb6e6c486ac55547\",\"dweb:/ipfs/QmZGpxzryNkheek5V9dJWfcJyTP7T52PsPXgRBuweK2rsN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0xa2246f4960ec2b24db3fbfce5d59782cdb9a8fb3c3f832a2c39ddc92859ff170\",\"urls\":[\"bzz-raw://3e3a0ae100c15bb15f0484cb68e3052c3d3d764f84e37020e8dd6b658ff98076\",\"dweb:/ipfs/QmPAv99zN7senrfCMMkeT4RMWpwTdqLgMURQR73BLRe4ZG\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/permission-ids-v6/src/JBPermissionIds.sol\":{\"keccak256\":\"0x5105c29834e0dce4e395e262f23089a1077404f5317c591c89f3621cdfda9628\",\"urls\":[\"bzz-raw://54deca2c06d77f5d1087911e8035d244dde2b08a5dc0dff146b86e6a314419e8\",\"dweb:/ipfs/QmNdpTioAbk6bahJx4aT1WFUY9aV182JH1Dn4FqfuqC8QC\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/JBOptimismSucker.sol\":{\"keccak256\":\"0x7dfc57a8e21f3de849237a2a61677ee65998ffd054c8bee193a73cf6bc329750\",\"urls\":[\"bzz-raw://28001deb4506dd735df50d9818228f33378d859aa3cb4fc0d8d2a1176e137328\",\"dweb:/ipfs/QmQTCFjawcctmEv6oqcLnPZXy9MA67fjrVYmSnnvZUGsw6\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/JBSucker.sol\":{\"keccak256\":\"0x6bf9e8a6cd065a5c43cb1be44d62ed69cc6e86c1077ce3d2e5a2b552b83f1b73\",\"urls\":[\"bzz-raw://9c4da2083c8de16e2ced8bf7f0f9f03dcd5c6bce3089a0f42be15de5f67e6758\",\"dweb:/ipfs/QmTnwsoYbYtuVcppFFFDzR983WEd9rrjdXUr5zyRQUJaXX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/deployers/JBOptimismSuckerDeployer.sol\":{\"keccak256\":\"0xa5a6f163e9452342cd380250959b010b098870e5e5fc18d8e2e9d97af0e0efd0\",\"urls\":[\"bzz-raw://5a151c5a963d9db6d557e1afb7315bd50358a26c72a17d2555059af53f05128c\",\"dweb:/ipfs/QmQxD3Q9iPk9r5AH2c49rgAPTseHREjdNXKttfuhYtf21D\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/deployers/JBSuckerDeployer.sol\":{\"keccak256\":\"0x45fc70d622e3f74924cd11b3cc818ff40b030ecfd419e6724b24208ccb22797e\",\"urls\":[\"bzz-raw://9cc01e0a4f2fe2564ce4f872f6530b199f68c8a916ff174b61eb1bd302c8e60b\",\"dweb:/ipfs/QmPCKEYksbnuydzupCFrympzn3NFq6zcxt3y4EiecNmDW2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBOpSuckerDeployer.sol\":{\"keccak256\":\"0x07c142cb6c56b462a4c221d09e77069835f2f94eacdf4a4d0d31ac02f4b9f213\",\"urls\":[\"bzz-raw://fcdda2dea112ee98524d12b84bd185353150ac9c527284e8c0de596bd3ffc4df\",\"dweb:/ipfs/QmZKjuXi1TD1YzNzhzx2qJzYRNU7fV2Ctkdeg1VwAv1Y5J\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBOptimismSucker.sol\":{\"keccak256\":\"0x360276e21ac95eef7ddeb063efe62ca4fdcdf6e55bb39081a1433f155d7db0e6\",\"urls\":[\"bzz-raw://2130f749f6d0e07d24a6b3df8552398cfd599dc18e73253c17e9396ca93a59d4\",\"dweb:/ipfs/QmNeaunJ7uippRh1mNTxdSStWwPRb5j2gEuUDf1aDBB3z4\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBPeerChainAdjustedAccounts.sol\":{\"keccak256\":\"0x9edb4e2d8aa9becff5b761f84d16048fcc5c2136686ca05dd974f9d2b6568895\",\"urls\":[\"bzz-raw://bd9d6254c7e5c6f315d8e835b2414b943c629bf7ea8e7f23720cef433af6cc9a\",\"dweb:/ipfs/QmVDjtn5BgGhYCpFQ28b2e4rHMit9zLqZKmPCBSENFjBsT\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0x570edfbf153b28f44f5dcf4b8e9ee146be16ba08aee58178d288e121edd023d4\",\"urls\":[\"bzz-raw://f67f5797159640a3d39835b7dbac501ca3f4e95fbebdf4673dc884af6c8b4de3\",\"dweb:/ipfs/QmW49DYyf2vrwMz2Jt3x2NuA6Dy4phnyGpifMpGPacQ4qz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x385534f1171e96f75da0fb34c31976a8bff68e3719a87fe526a1bd2c80044826\",\"urls\":[\"bzz-raw://af89283ddccdad821f8d975175082e8a3ecdccba35ad1ec626b2cebbfe5696ec\",\"dweb:/ipfs/QmXAzpwVBH1PwpCZoXFbTXk8v4wUhiKAzXF6chpe5cgoYJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSuckerExtended.sol\":{\"keccak256\":\"0xe3d34fd1bd702c37de48dc7a1cb7a8bee4fb3f38718ffdaf08ac2cea6338266d\",\"urls\":[\"bzz-raw://f4ce0af97c941ae72aecd78b7cb9376c741d0b4e2637fe5a63f08f44847dafca\",\"dweb:/ipfs/QmXuVb3CYnKywWPEFAuE4goXTrqkQgUbfQNSQHARdvRs9E\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSuckerRegistry.sol\":{\"keccak256\":\"0xa80cf6e229335f88468be1625cb02d65bd84f585e047a720e53661dd5c9caab2\",\"urls\":[\"bzz-raw://01b17afe90ae5f10adfac0d32d54615128ac66fae4357d85f4e12a0cd7259b8d\",\"dweb:/ipfs/QmW3reADRJmkA2ay4AqM5TcseW3ybKvdbexZBG9FuLCUAi\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IOPMessenger.sol\":{\"keccak256\":\"0x6ad3c27d171f2b48deadc585ef30ee1b245009800f5c4f2373e2cb99a7e821f0\",\"urls\":[\"bzz-raw://e89654a1f20a41e790a90ae5aa8b4f98df587ade23bc062870295e2f06c0ae59\",\"dweb:/ipfs/QmNUBdKhRYB6CMRKGYhe8jqe7wAiD9rxXQArB3efFKdKYC\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IOPStandardBridge.sol\":{\"keccak256\":\"0x8a05943ede96852a719463069f263bea9d3ab2bd0606a9ce78244146156cf843\",\"urls\":[\"bzz-raw://722a0896377037695a987b797fcb439df2adc70e395541802c1b463570cc654b\",\"dweb:/ipfs/QmfXTAgXMhnUTYWnEJ1Zz7VGzb6dX63PWFURCVcDx4fYfn\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/libraries/JBPeerChainAdjustedAccountsLib.sol\":{\"keccak256\":\"0x838291ed97d7089a916f02cd87487cc6fe661af548b969d8ec1fa6d5aa3a918c\",\"urls\":[\"bzz-raw://9511a6fae687968dc8813374eabb4e16322dc4acc680f9f395c7365e3cade8cc\",\"dweb:/ipfs/QmYFq7weEEu9JUCKetn5FPNjg9YGfdMArU6pFhRdkfx1kb\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/libraries/JBSuckerLib.sol\":{\"keccak256\":\"0x5ec3a9d29120856b97d6c6b692ebd78704bdde44af97b45676f54c370ee15c93\",\"urls\":[\"bzz-raw://082924b3338e8c55711254e4abc9c716626fe6fb764040437d0b7ae6e75367e9\",\"dweb:/ipfs/QmYtaK22AHrbZWAHUUPE9oXpu3vC5JJXfPPoK3QWoGQDWy\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBAccountingSnapshot.sol\":{\"keccak256\":\"0x3a3b48c50fe27dd4b2907dd26d9e48de0f8bf7e48e4ac42b65e4c8550b5037cf\",\"urls\":[\"bzz-raw://b61c627efb41e8bf1f77fec9e79a1d43846dfa14ec6d6dfe8b6fc93ab09c3bf8\",\"dweb:/ipfs/QmVx19cqSfeHHzr94n9iJAp45WC6sETtC6fp9SuHX8gNfF\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBChainAccounting.sol\":{\"keccak256\":\"0x40ee90d31b301b8ad7c3879afa605cf65e9f41c763b3c84f9a73f15ef67b8dc3\",\"urls\":[\"bzz-raw://0ef0660386fefb8c4761f7a96484ae88027ae7432939fb43170b209cd54a01b7\",\"dweb:/ipfs/QmSyhhHEyHswUoTT99SekwfoVnCbL9cBjEDHsXcqpWxMKM\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0x9553483a63fbad26d7f3fc50d47bbf309f6b2b316785bc179fa83f97f6ba88f1\",\"urls\":[\"bzz-raw://fddbe03a2a31812774aba9ffe44b0d0209da182f03ddd7fb8f8f2cb5858a3923\",\"dweb:/ipfs/QmeQJHXw5Bc8s3CXr9kE7Tw35m3Tcmq7DjrEidcB2CK5D5\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBLeaf.sol\":{\"keccak256\":\"0x48da8acc3873c390430f57de4871bce06b0d9a1be75935a4367b694acab447e2\",\"urls\":[\"bzz-raw://0ecb27f67901ef293993dc257efa592191bd2464cf9c2afcf5b53a4ddaff905c\",\"dweb:/ipfs/QmdoA5SkomSqJvx7v3qn9Z1cTzzH43WDCozqoi7GBYKjaA\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBMessageRoot.sol\":{\"keccak256\":\"0x5f51bc50dd2617355fcf6bff543fd190a367f8c2edda2c2e431cac136f21fc27\",\"urls\":[\"bzz-raw://5627bec722dbc3778e3f3d9280cf93552af22679682489463fbb637226331f98\",\"dweb:/ipfs/QmSSK3apkXb86BN6cnhs8V1sTdfgonPXKhHbcwvUGY4zDf\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x52552d8927b83d06955f7d40552b19779bc05e3d4ee58a7e026d160fb1958a92\",\"urls\":[\"bzz-raw://d1f21d7415fa29bf088f1dfc3ba2e7251f1132424194703b7dc2493839495bbe\",\"dweb:/ipfs/QmTUL5mALZi8A6QyrWrp1Qdt2e5S72nyEDPuZPwgW54dc7\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBPeerChainContext.sol\":{\"keccak256\":\"0x1da3d201771c88f2469069d3f2295fd26e2f494e0ec0c4d06d0ccb068f2b26bc\",\"urls\":[\"bzz-raw://2898b578f708e6988392fec3b1eca0eb07cb267c139ed7c1cf1b62f27a153e91\",\"dweb:/ipfs/QmVQJxAdkLZVyVGaeYywrwoA8GkTbBwLykWeroLJvS8A7w\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBPeerChainValue.sol\":{\"keccak256\":\"0x784d12e2ee229cb8242366a27636228d2df62915f8bcc64cb6d72ddcf111f655\",\"urls\":[\"bzz-raw://b7d3885e5f02a52af36487ce6fa15f11ee41674c2821c8959ad6ccaac10941fb\",\"dweb:/ipfs/QmYVdYM55ajAKE78sEkf5GZo45k4iP8t6JceDnce4bpjrW\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0x972657457699a63ded3cba38b3796cf619fe1929b7e857d4861e52a06ad9b378\",\"urls\":[\"bzz-raw://b35379dc126296a4f8a47ebd2bc09101ec782677711373245b33017670deb051\",\"dweb:/ipfs/QmQs397EjjPgbZdzQR8yUC6vxMYj3nvJZ26RZ6qy9Thg9N\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSourceContext.sol\":{\"keccak256\":\"0x1fc57c102ae28eb62103063a13289ed484c5520ce220ee59f4412e9b78f431c2\",\"urls\":[\"bzz-raw://af3a7ba1d82c982f6396cc9444fb69afe2a90279eb6b8b147ce1626bab3836f7\",\"dweb:/ipfs/QmUZybGqw84SgTbqvDk27eXQhpPYLDz7FV6o4M4oJC4chK\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSuckerDeployerConfig.sol\":{\"keccak256\":\"0xee7d3235a13ea2a66a885f90a2623740029f58fad4121e59b46666abb598fcdd\",\"urls\":[\"bzz-raw://3702c6c3f19d11fa0d0cf8b918cdb122c27e2aec09a67386483834e98f533706\",\"dweb:/ipfs/QmZMwk65iWi5HCwLwHiqwrXSEJMnaZMEM9cW359matZ8AT\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSuckersPair.sol\":{\"keccak256\":\"0x535f28ba838f066ea773b575f83230663761996cc358f6f9b684340403faab18\",\"urls\":[\"bzz-raw://c94e5c03989b03d66ee9cc08c3299957a25b7c3492416792d1d8fa50d11f34e3\",\"dweb:/ipfs/QmTrsUX4KySQsVZYEY6hjwtL6g5cFqFkwopMMAU47Atyqf\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x45ab5eb3775475cbf5b2c011ed8ea78fbc719f5dc13019409f09d53e9719f97b\",\"urls\":[\"bzz-raw://7010e7fe473cc892ee5fbb8310ebf7c739bc64e4c9311b6fd63a358dc16bb634\",\"dweb:/ipfs/Qmcj73PiufP2dRdPVGV3gSfdbneYH13Kx4NP1cYbV5aVX8\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/utils/MerkleLib.sol\":{\"keccak256\":\"0xb08ffa1c6d9394eed1396ecf6bf59333ec925c9cb80623248448a6f1f2a7b366\",\"urls\":[\"bzz-raw://da8df7bd8918eba5116f3ff527352f804f73dc430f03cf529b34b4bb225479d2\",\"dweb:/ipfs/QmarAXVxZAAxePcMgpzsE84E1LNnCEFZKRXjhaBUy46L74\"],\"license\":\"MIT OR Apache-2.0\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x9695d220b99dcf62910533bdf5d40d4cf6a4e04d5b106b6803a80586486dc7f7\",\"urls\":[\"bzz-raw://83b7aecd65882d8953643dce144efe91367082cc01830c9c4ed3c8a4837fb558\",\"dweb:/ipfs/QmQ5HxGavcCKjuhd8buv177qjG6A4kvxx4pZviceKdspdM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/BitMaps.sol\":{\"keccak256\":\"0x3616f1b0d0a9ee1ca8f0953ecaceb9230e36f691c7974d30f964212acff52d2b\",\"urls\":[\"bzz-raw://d4bebdd07b31ac28e3e596ac6f0333da90a4e332405aa7d65f3a3a7e0b4cf15e\",\"dweb:/ipfs/QmckoDU5bBnye2UtPcrfJNahLD2FbxrnPP9nrREMWPpnug\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"node_modules/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x1b96fd03a3948155bd2fe95dc4980930c759b174026e18f11bc8e88d55ae030e\",\"urls\":[\"bzz-raw://64998d16472a127031ee6a796ed9afcf13dd662afd30eb4d3e2a42c2bc9fd204\",\"dweb:/ipfs/QmTXHGy9t8YTW96tjiZ8RBqmijXUTqc1JznEBqHv8Duc4A\"],\"license\":\"MIT\"}},\"version\":1}",
2299
+ "gitCommit": "npm:@bananapus/suckers-v6@1.0.2",
2300
+ "gitDirty": false,
2301
+ "history": []
2302
+ }