@super-protocol/sdk-js 3.15.0 → 3.16.0-beta.1

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 (141) hide show
  1. package/dist/cjs/RIGenerator.d.ts +2 -3
  2. package/dist/cjs/RIGenerator.js +6 -7
  3. package/dist/cjs/TeeInputGeneratorBase.d.ts +2 -2
  4. package/dist/cjs/TeeInputGeneratorBase.js +1 -1
  5. package/dist/cjs/connectors/BaseConnector.d.ts +2 -3
  6. package/dist/cjs/connectors/BaseConnector.js +1 -1
  7. package/dist/cjs/connectors/BlockchainConnector.js +1 -3
  8. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +2 -2
  9. package/dist/cjs/connectors/BlockchainEventsListener.js +2 -3
  10. package/dist/cjs/constants.d.ts +2 -0
  11. package/dist/cjs/constants.js +6 -2
  12. package/dist/cjs/contracts/Campaign.d.ts +1078 -0
  13. package/dist/cjs/contracts/Campaign.js +1401 -0
  14. package/dist/cjs/contracts/abi.d.ts +406 -245
  15. package/dist/cjs/contracts/abi.js +511 -307
  16. package/dist/cjs/contracts/adminCertificateHelperAbi.d.ts +316 -0
  17. package/dist/cjs/contracts/adminCertificateHelperAbi.js +410 -0
  18. package/dist/cjs/crypto/Crypto.d.ts +13 -10
  19. package/dist/cjs/crypto/Crypto.js +17 -14
  20. package/dist/cjs/crypto/nodejs/AES.d.ts +1 -1
  21. package/dist/cjs/crypto/nodejs/AES.js +2 -2
  22. package/dist/cjs/crypto/nodejs/ARIA.d.ts +1 -1
  23. package/dist/cjs/crypto/nodejs/ARIA.js +2 -2
  24. package/dist/cjs/errors/index.d.ts +0 -1
  25. package/dist/cjs/errors/index.js +2 -4
  26. package/dist/cjs/index.d.ts +2 -1
  27. package/dist/cjs/index.js +5 -4
  28. package/dist/cjs/models/Offer.d.ts +1 -16
  29. package/dist/cjs/models/Offer.js +1 -51
  30. package/dist/cjs/models/Order.d.ts +1 -1
  31. package/dist/cjs/models/Order.js +15 -11
  32. package/dist/cjs/providers/storage/S3StorageProvider.js +5 -5
  33. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  34. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +2 -1
  35. package/dist/cjs/staticModels/AdminCertificateHelper.d.ts +24 -0
  36. package/dist/cjs/staticModels/AdminCertificateHelper.js +99 -0
  37. package/dist/cjs/staticModels/Campaign.d.ts +61 -0
  38. package/dist/cjs/staticModels/Campaign.js +297 -0
  39. package/dist/cjs/staticModels/Offers.d.ts +0 -1
  40. package/dist/cjs/staticModels/Offers.js +2 -4
  41. package/dist/cjs/staticModels/Orders.js +9 -10
  42. package/dist/cjs/staticModels/SuperproToken.d.ts +7 -7
  43. package/dist/cjs/staticModels/SuperproToken.js +3 -3
  44. package/dist/cjs/staticModels/TeeOffers.d.ts +1 -1
  45. package/dist/cjs/staticModels/TeeOffers.js +2 -4
  46. package/dist/cjs/tee/TeeCertificateService.js +8 -1
  47. package/dist/cjs/types/Campaign.d.ts +45 -0
  48. package/dist/cjs/types/Campaign.js +16 -0
  49. package/dist/cjs/types/Offer.d.ts +0 -5
  50. package/dist/cjs/types/Order.d.ts +20 -25
  51. package/dist/cjs/types/Order.js +14 -21
  52. package/dist/cjs/types/index.d.ts +1 -0
  53. package/dist/cjs/types/index.js +2 -1
  54. package/dist/cjs/utils/TxManager.js +1 -5
  55. package/dist/cjs/utils/admin-service.d.ts +13 -0
  56. package/dist/cjs/utils/admin-service.js +73 -0
  57. package/dist/cjs/utils/helper.d.ts +3 -0
  58. package/dist/cjs/utils/helper.js +20 -2
  59. package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  60. package/dist/cjs/utils/helpers/OrderArgsHelper.js +5 -5
  61. package/dist/cjs/utils/helpers/index.d.ts +0 -1
  62. package/dist/cjs/utils/helpers/index.js +1 -2
  63. package/dist/cjs/utils/order/versify.js +7 -1
  64. package/dist/cjs/utils/rent-calculator/rent-calculator.js +3 -2
  65. package/dist/cjs/utils/rent-calculator/types.d.ts +1 -0
  66. package/dist/cjs/utils/types.d.ts +5 -0
  67. package/dist/mjs/RIGenerator.d.ts +2 -3
  68. package/dist/mjs/RIGenerator.js +7 -8
  69. package/dist/mjs/TeeInputGeneratorBase.d.ts +2 -2
  70. package/dist/mjs/TeeInputGeneratorBase.js +1 -1
  71. package/dist/mjs/connectors/BaseConnector.d.ts +2 -3
  72. package/dist/mjs/connectors/BaseConnector.js +1 -1
  73. package/dist/mjs/connectors/BlockchainConnector.js +1 -3
  74. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +2 -2
  75. package/dist/mjs/connectors/BlockchainEventsListener.js +2 -3
  76. package/dist/mjs/constants.d.ts +2 -0
  77. package/dist/mjs/constants.js +5 -1
  78. package/dist/mjs/contracts/Campaign.d.ts +1078 -0
  79. package/dist/mjs/contracts/Campaign.js +1398 -0
  80. package/dist/mjs/contracts/abi.d.ts +406 -245
  81. package/dist/mjs/contracts/abi.js +509 -305
  82. package/dist/mjs/contracts/adminCertificateHelperAbi.d.ts +316 -0
  83. package/dist/mjs/contracts/adminCertificateHelperAbi.js +407 -0
  84. package/dist/mjs/crypto/Crypto.d.ts +13 -10
  85. package/dist/mjs/crypto/Crypto.js +17 -14
  86. package/dist/mjs/crypto/nodejs/AES.d.ts +1 -1
  87. package/dist/mjs/crypto/nodejs/AES.js +2 -2
  88. package/dist/mjs/crypto/nodejs/ARIA.d.ts +1 -1
  89. package/dist/mjs/crypto/nodejs/ARIA.js +2 -2
  90. package/dist/mjs/errors/index.d.ts +0 -1
  91. package/dist/mjs/errors/index.js +1 -2
  92. package/dist/mjs/index.d.ts +2 -1
  93. package/dist/mjs/index.js +3 -2
  94. package/dist/mjs/models/Offer.d.ts +1 -16
  95. package/dist/mjs/models/Offer.js +1 -51
  96. package/dist/mjs/models/Order.d.ts +1 -1
  97. package/dist/mjs/models/Order.js +15 -11
  98. package/dist/mjs/providers/storage/S3StorageProvider.js +5 -5
  99. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  100. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +2 -1
  101. package/dist/mjs/staticModels/AdminCertificateHelper.d.ts +24 -0
  102. package/dist/mjs/staticModels/AdminCertificateHelper.js +92 -0
  103. package/dist/mjs/staticModels/Campaign.d.ts +61 -0
  104. package/dist/mjs/staticModels/Campaign.js +292 -0
  105. package/dist/mjs/staticModels/Offers.d.ts +0 -1
  106. package/dist/mjs/staticModels/Offers.js +2 -4
  107. package/dist/mjs/staticModels/Orders.js +9 -10
  108. package/dist/mjs/staticModels/SuperproToken.d.ts +7 -7
  109. package/dist/mjs/staticModels/SuperproToken.js +3 -3
  110. package/dist/mjs/staticModels/TeeOffers.d.ts +1 -1
  111. package/dist/mjs/staticModels/TeeOffers.js +2 -4
  112. package/dist/mjs/tee/TeeCertificateService.js +9 -2
  113. package/dist/mjs/types/Campaign.d.ts +45 -0
  114. package/dist/mjs/types/Campaign.js +13 -0
  115. package/dist/mjs/types/Offer.d.ts +0 -5
  116. package/dist/mjs/types/Order.d.ts +20 -25
  117. package/dist/mjs/types/Order.js +14 -18
  118. package/dist/mjs/types/index.d.ts +1 -0
  119. package/dist/mjs/types/index.js +2 -1
  120. package/dist/mjs/utils/TxManager.js +1 -5
  121. package/dist/mjs/utils/admin-service.d.ts +13 -0
  122. package/dist/mjs/utils/admin-service.js +66 -0
  123. package/dist/mjs/utils/helper.d.ts +3 -0
  124. package/dist/mjs/utils/helper.js +17 -2
  125. package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  126. package/dist/mjs/utils/helpers/OrderArgsHelper.js +5 -5
  127. package/dist/mjs/utils/helpers/index.d.ts +0 -1
  128. package/dist/mjs/utils/helpers/index.js +1 -2
  129. package/dist/mjs/utils/order/versify.js +7 -1
  130. package/dist/mjs/utils/rent-calculator/rent-calculator.js +3 -2
  131. package/dist/mjs/utils/rent-calculator/types.d.ts +1 -0
  132. package/dist/mjs/utils/types.d.ts +5 -0
  133. package/package.json +3 -3
  134. package/dist/cjs/errors/insufficient-funds.error.d.ts +0 -19
  135. package/dist/cjs/errors/insufficient-funds.error.js +0 -57
  136. package/dist/cjs/utils/helpers/streamToBuffer.d.ts +0 -4
  137. package/dist/cjs/utils/helpers/streamToBuffer.js +0 -13
  138. package/dist/mjs/errors/insufficient-funds.error.d.ts +0 -19
  139. package/dist/mjs/errors/insufficient-funds.error.js +0 -53
  140. package/dist/mjs/utils/helpers/streamToBuffer.d.ts +0 -4
  141. package/dist/mjs/utils/helpers/streamToBuffer.js +0 -9
@@ -0,0 +1,1398 @@
1
+ export const CompetitionToggled = 'CompetitionToggled';
2
+ export const MigrationStatusUpdated = 'MigrationStatusUpdated';
3
+ export const MigrationSubmitted = 'MigrationSubmitted';
4
+ export const MigrationTransactionsUpdated = 'MigrationTransactionsUpdated';
5
+ export const NodeInserted = 'NodeInserted';
6
+ export const NodeRemoved = 'NodeRemoved';
7
+ export const NodeUpdated = 'NodeUpdated';
8
+ export const ParticipantRegistered = 'ParticipantRegistered';
9
+ export const RewardClaimed = 'RewardClaimed';
10
+ export const RoleAdminChanged = 'RoleAdminChanged';
11
+ export const RoleGranted = 'RoleGranted';
12
+ export const RoleRevoked = 'RoleRevoked';
13
+ export const ScoreUpdated = 'ScoreUpdated';
14
+ export const abi = [
15
+ {
16
+ inputs: [
17
+ {
18
+ internalType: 'uint32',
19
+ name: '_notValidBefore',
20
+ type: 'uint32',
21
+ },
22
+ {
23
+ internalType: 'uint32',
24
+ name: '_notValidAfter',
25
+ type: 'uint32',
26
+ },
27
+ {
28
+ internalType: 'address',
29
+ name: '_usdt',
30
+ type: 'address',
31
+ },
32
+ ],
33
+ stateMutability: 'nonpayable',
34
+ type: 'constructor',
35
+ },
36
+ {
37
+ anonymous: false,
38
+ inputs: [
39
+ {
40
+ indexed: false,
41
+ internalType: 'bool',
42
+ name: 'active',
43
+ type: 'bool',
44
+ },
45
+ ],
46
+ name: 'CompetitionToggled',
47
+ type: 'event',
48
+ },
49
+ {
50
+ anonymous: false,
51
+ inputs: [
52
+ {
53
+ indexed: true,
54
+ internalType: 'uint256',
55
+ name: 'migrationIndex',
56
+ type: 'uint256',
57
+ },
58
+ {
59
+ indexed: true,
60
+ internalType: 'enum Campaign.Status',
61
+ name: 'status',
62
+ type: 'uint8',
63
+ },
64
+ ],
65
+ name: 'MigrationStatusUpdated',
66
+ type: 'event',
67
+ },
68
+ {
69
+ anonymous: false,
70
+ inputs: [
71
+ {
72
+ indexed: true,
73
+ internalType: 'address',
74
+ name: 'participant',
75
+ type: 'address',
76
+ },
77
+ {
78
+ indexed: true,
79
+ internalType: 'uint256',
80
+ name: 'migrationIndex',
81
+ type: 'uint256',
82
+ },
83
+ ],
84
+ name: 'MigrationSubmitted',
85
+ type: 'event',
86
+ },
87
+ {
88
+ anonymous: false,
89
+ inputs: [
90
+ {
91
+ indexed: true,
92
+ internalType: 'uint256',
93
+ name: 'migrationIndex',
94
+ type: 'uint256',
95
+ },
96
+ {
97
+ indexed: false,
98
+ internalType: 'uint256',
99
+ name: 'transactions',
100
+ type: 'uint256',
101
+ },
102
+ ],
103
+ name: 'MigrationTransactionsUpdated',
104
+ type: 'event',
105
+ },
106
+ {
107
+ anonymous: false,
108
+ inputs: [
109
+ {
110
+ indexed: true,
111
+ internalType: 'address',
112
+ name: 'participant',
113
+ type: 'address',
114
+ },
115
+ {
116
+ indexed: false,
117
+ internalType: 'int256',
118
+ name: 'score',
119
+ type: 'int256',
120
+ },
121
+ {
122
+ indexed: false,
123
+ internalType: 'uint256',
124
+ name: 'nodeId',
125
+ type: 'uint256',
126
+ },
127
+ ],
128
+ name: 'NodeInserted',
129
+ type: 'event',
130
+ },
131
+ {
132
+ anonymous: false,
133
+ inputs: [
134
+ {
135
+ indexed: true,
136
+ internalType: 'address',
137
+ name: 'participant',
138
+ type: 'address',
139
+ },
140
+ {
141
+ indexed: false,
142
+ internalType: 'int256',
143
+ name: 'score',
144
+ type: 'int256',
145
+ },
146
+ {
147
+ indexed: false,
148
+ internalType: 'uint256',
149
+ name: 'nodeId',
150
+ type: 'uint256',
151
+ },
152
+ ],
153
+ name: 'NodeRemoved',
154
+ type: 'event',
155
+ },
156
+ {
157
+ anonymous: false,
158
+ inputs: [
159
+ {
160
+ indexed: true,
161
+ internalType: 'address',
162
+ name: 'participant',
163
+ type: 'address',
164
+ },
165
+ {
166
+ indexed: false,
167
+ internalType: 'int256',
168
+ name: 'oldScore',
169
+ type: 'int256',
170
+ },
171
+ {
172
+ indexed: false,
173
+ internalType: 'int256',
174
+ name: 'newScore',
175
+ type: 'int256',
176
+ },
177
+ {
178
+ indexed: false,
179
+ internalType: 'uint256',
180
+ name: 'nodeId',
181
+ type: 'uint256',
182
+ },
183
+ ],
184
+ name: 'NodeUpdated',
185
+ type: 'event',
186
+ },
187
+ {
188
+ anonymous: false,
189
+ inputs: [
190
+ {
191
+ indexed: true,
192
+ internalType: 'address',
193
+ name: 'participant',
194
+ type: 'address',
195
+ },
196
+ ],
197
+ name: 'ParticipantRegistered',
198
+ type: 'event',
199
+ },
200
+ {
201
+ anonymous: false,
202
+ inputs: [
203
+ {
204
+ indexed: true,
205
+ internalType: 'address',
206
+ name: 'participant',
207
+ type: 'address',
208
+ },
209
+ {
210
+ indexed: true,
211
+ internalType: 'uint256',
212
+ name: 'amount',
213
+ type: 'uint256',
214
+ },
215
+ ],
216
+ name: 'RewardClaimed',
217
+ type: 'event',
218
+ },
219
+ {
220
+ anonymous: false,
221
+ inputs: [
222
+ {
223
+ indexed: true,
224
+ internalType: 'bytes32',
225
+ name: 'role',
226
+ type: 'bytes32',
227
+ },
228
+ {
229
+ indexed: true,
230
+ internalType: 'bytes32',
231
+ name: 'previousAdminRole',
232
+ type: 'bytes32',
233
+ },
234
+ {
235
+ indexed: true,
236
+ internalType: 'bytes32',
237
+ name: 'newAdminRole',
238
+ type: 'bytes32',
239
+ },
240
+ ],
241
+ name: 'RoleAdminChanged',
242
+ type: 'event',
243
+ },
244
+ {
245
+ anonymous: false,
246
+ inputs: [
247
+ {
248
+ indexed: true,
249
+ internalType: 'bytes32',
250
+ name: 'role',
251
+ type: 'bytes32',
252
+ },
253
+ {
254
+ indexed: true,
255
+ internalType: 'address',
256
+ name: 'account',
257
+ type: 'address',
258
+ },
259
+ {
260
+ indexed: true,
261
+ internalType: 'address',
262
+ name: 'sender',
263
+ type: 'address',
264
+ },
265
+ ],
266
+ name: 'RoleGranted',
267
+ type: 'event',
268
+ },
269
+ {
270
+ anonymous: false,
271
+ inputs: [
272
+ {
273
+ indexed: true,
274
+ internalType: 'bytes32',
275
+ name: 'role',
276
+ type: 'bytes32',
277
+ },
278
+ {
279
+ indexed: true,
280
+ internalType: 'address',
281
+ name: 'account',
282
+ type: 'address',
283
+ },
284
+ {
285
+ indexed: true,
286
+ internalType: 'address',
287
+ name: 'sender',
288
+ type: 'address',
289
+ },
290
+ ],
291
+ name: 'RoleRevoked',
292
+ type: 'event',
293
+ },
294
+ {
295
+ anonymous: false,
296
+ inputs: [
297
+ {
298
+ indexed: true,
299
+ internalType: 'address',
300
+ name: 'participant',
301
+ type: 'address',
302
+ },
303
+ {
304
+ indexed: false,
305
+ internalType: 'int256',
306
+ name: 'oldScore',
307
+ type: 'int256',
308
+ },
309
+ {
310
+ indexed: false,
311
+ internalType: 'int256',
312
+ name: 'newScore',
313
+ type: 'int256',
314
+ },
315
+ ],
316
+ name: 'ScoreUpdated',
317
+ type: 'event',
318
+ },
319
+ {
320
+ inputs: [],
321
+ name: 'DEFAULT_ADMIN_ROLE',
322
+ outputs: [
323
+ {
324
+ internalType: 'bytes32',
325
+ name: '',
326
+ type: 'bytes32',
327
+ },
328
+ ],
329
+ stateMutability: 'view',
330
+ type: 'function',
331
+ },
332
+ {
333
+ inputs: [
334
+ {
335
+ internalType: 'uint256',
336
+ name: 'transactions',
337
+ type: 'uint256',
338
+ },
339
+ ],
340
+ name: '_getTransactionScoreDetailed',
341
+ outputs: [
342
+ {
343
+ internalType: 'int256',
344
+ name: '',
345
+ type: 'int256',
346
+ },
347
+ ],
348
+ stateMutability: 'pure',
349
+ type: 'function',
350
+ },
351
+ {
352
+ inputs: [],
353
+ name: 'claimReward',
354
+ outputs: [],
355
+ stateMutability: 'nonpayable',
356
+ type: 'function',
357
+ },
358
+ {
359
+ inputs: [],
360
+ name: 'competitionActive',
361
+ outputs: [
362
+ {
363
+ internalType: 'bool',
364
+ name: '',
365
+ type: 'bool',
366
+ },
367
+ ],
368
+ stateMutability: 'view',
369
+ type: 'function',
370
+ },
371
+ {
372
+ inputs: [],
373
+ name: 'getCompetitionSetup',
374
+ outputs: [
375
+ {
376
+ internalType: 'uint256',
377
+ name: 'claimDateAfter',
378
+ type: 'uint256',
379
+ },
380
+ {
381
+ internalType: 'uint256',
382
+ name: 'notValidBeforeTs',
383
+ type: 'uint256',
384
+ },
385
+ {
386
+ internalType: 'uint256',
387
+ name: 'notValidAfterTs',
388
+ type: 'uint256',
389
+ },
390
+ ],
391
+ stateMutability: 'view',
392
+ type: 'function',
393
+ },
394
+ {
395
+ inputs: [
396
+ {
397
+ internalType: 'uint256',
398
+ name: 'from',
399
+ type: 'uint256',
400
+ },
401
+ {
402
+ internalType: 'uint256',
403
+ name: 'to',
404
+ type: 'uint256',
405
+ },
406
+ {
407
+ internalType: 'enum Campaign.Status',
408
+ name: 'status',
409
+ type: 'uint8',
410
+ },
411
+ ],
412
+ name: 'getMigrationRange',
413
+ outputs: [
414
+ {
415
+ components: [
416
+ {
417
+ components: [
418
+ {
419
+ internalType: 'address',
420
+ name: 'participant',
421
+ type: 'address',
422
+ },
423
+ {
424
+ internalType: 'uint16',
425
+ name: 'score',
426
+ type: 'uint16',
427
+ },
428
+ {
429
+ internalType: 'bool',
430
+ name: 'firstSourceMigration',
431
+ type: 'bool',
432
+ },
433
+ {
434
+ internalType: 'enum Campaign.MigrationNetwork',
435
+ name: 'sourceNetwork',
436
+ type: 'uint8',
437
+ },
438
+ {
439
+ internalType: 'enum Campaign.Status',
440
+ name: 'status',
441
+ type: 'uint8',
442
+ },
443
+ {
444
+ internalType: 'address',
445
+ name: 'sourceAddress',
446
+ type: 'address',
447
+ },
448
+ {
449
+ internalType: 'address',
450
+ name: 'destinationAddress',
451
+ type: 'address',
452
+ },
453
+ {
454
+ internalType: 'string',
455
+ name: 'sourceUrl',
456
+ type: 'string',
457
+ },
458
+ {
459
+ internalType: 'string',
460
+ name: 'destinationUrl',
461
+ type: 'string',
462
+ },
463
+ ],
464
+ internalType: 'struct Campaign.Migration',
465
+ name: 'migration',
466
+ type: 'tuple',
467
+ },
468
+ {
469
+ internalType: 'uint256',
470
+ name: 'index',
471
+ type: 'uint256',
472
+ },
473
+ ],
474
+ internalType: 'struct Campaign.MigrationWithIndex[]',
475
+ name: 'result',
476
+ type: 'tuple[]',
477
+ },
478
+ ],
479
+ stateMutability: 'view',
480
+ type: 'function',
481
+ },
482
+ {
483
+ inputs: [
484
+ {
485
+ internalType: 'uint256[]',
486
+ name: 'indexes',
487
+ type: 'uint256[]',
488
+ },
489
+ ],
490
+ name: 'getMigrationsByIndexes',
491
+ outputs: [
492
+ {
493
+ components: [
494
+ {
495
+ components: [
496
+ {
497
+ internalType: 'address',
498
+ name: 'participant',
499
+ type: 'address',
500
+ },
501
+ {
502
+ internalType: 'uint16',
503
+ name: 'score',
504
+ type: 'uint16',
505
+ },
506
+ {
507
+ internalType: 'bool',
508
+ name: 'firstSourceMigration',
509
+ type: 'bool',
510
+ },
511
+ {
512
+ internalType: 'enum Campaign.MigrationNetwork',
513
+ name: 'sourceNetwork',
514
+ type: 'uint8',
515
+ },
516
+ {
517
+ internalType: 'enum Campaign.Status',
518
+ name: 'status',
519
+ type: 'uint8',
520
+ },
521
+ {
522
+ internalType: 'address',
523
+ name: 'sourceAddress',
524
+ type: 'address',
525
+ },
526
+ {
527
+ internalType: 'address',
528
+ name: 'destinationAddress',
529
+ type: 'address',
530
+ },
531
+ {
532
+ internalType: 'string',
533
+ name: 'sourceUrl',
534
+ type: 'string',
535
+ },
536
+ {
537
+ internalType: 'string',
538
+ name: 'destinationUrl',
539
+ type: 'string',
540
+ },
541
+ ],
542
+ internalType: 'struct Campaign.Migration',
543
+ name: 'migration',
544
+ type: 'tuple',
545
+ },
546
+ {
547
+ internalType: 'uint256',
548
+ name: 'index',
549
+ type: 'uint256',
550
+ },
551
+ ],
552
+ internalType: 'struct Campaign.MigrationWithIndex[]',
553
+ name: 'result',
554
+ type: 'tuple[]',
555
+ },
556
+ ],
557
+ stateMutability: 'view',
558
+ type: 'function',
559
+ },
560
+ {
561
+ inputs: [
562
+ {
563
+ internalType: 'uint256',
564
+ name: 'rank',
565
+ type: 'uint256',
566
+ },
567
+ ],
568
+ name: 'getParticipantByRank',
569
+ outputs: [
570
+ {
571
+ components: [
572
+ {
573
+ internalType: 'address',
574
+ name: 'participant',
575
+ type: 'address',
576
+ },
577
+ {
578
+ internalType: 'int256',
579
+ name: 'score',
580
+ type: 'int256',
581
+ },
582
+ ],
583
+ internalType: 'struct AVLTreeLib.ParticipantScore',
584
+ name: '',
585
+ type: 'tuple',
586
+ },
587
+ ],
588
+ stateMutability: 'view',
589
+ type: 'function',
590
+ },
591
+ {
592
+ inputs: [
593
+ {
594
+ internalType: 'address',
595
+ name: 'participant',
596
+ type: 'address',
597
+ },
598
+ ],
599
+ name: 'getParticipantInfo',
600
+ outputs: [
601
+ {
602
+ components: [
603
+ {
604
+ components: [
605
+ {
606
+ internalType: 'bool',
607
+ name: 'isParticipantRegistered',
608
+ type: 'bool',
609
+ },
610
+ {
611
+ internalType: 'bool',
612
+ name: 'isRewardClaimed',
613
+ type: 'bool',
614
+ },
615
+ {
616
+ internalType: 'uint256[]',
617
+ name: 'migrationsIndexes',
618
+ type: 'uint256[]',
619
+ },
620
+ ],
621
+ internalType: 'struct Campaign.ParticipantInfo',
622
+ name: 'storedInfo',
623
+ type: 'tuple',
624
+ },
625
+ {
626
+ components: [
627
+ {
628
+ internalType: 'address',
629
+ name: 'participant',
630
+ type: 'address',
631
+ },
632
+ {
633
+ internalType: 'uint256',
634
+ name: 'rank',
635
+ type: 'uint256',
636
+ },
637
+ {
638
+ internalType: 'int256',
639
+ name: 'score',
640
+ type: 'int256',
641
+ },
642
+ {
643
+ internalType: 'uint256',
644
+ name: 'reward',
645
+ type: 'uint256',
646
+ },
647
+ ],
648
+ internalType: 'struct Campaign.ParticipantInfoViewed',
649
+ name: 'viewedInfo',
650
+ type: 'tuple',
651
+ },
652
+ ],
653
+ internalType: 'struct Campaign.FullParticipantInfo',
654
+ name: 'data',
655
+ type: 'tuple',
656
+ },
657
+ ],
658
+ stateMutability: 'view',
659
+ type: 'function',
660
+ },
661
+ {
662
+ inputs: [
663
+ {
664
+ internalType: 'address',
665
+ name: 'participant',
666
+ type: 'address',
667
+ },
668
+ ],
669
+ name: 'getParticipantRank',
670
+ outputs: [
671
+ {
672
+ internalType: 'uint256',
673
+ name: 'rank',
674
+ type: 'uint256',
675
+ },
676
+ ],
677
+ stateMutability: 'view',
678
+ type: 'function',
679
+ },
680
+ {
681
+ inputs: [
682
+ {
683
+ internalType: 'address',
684
+ name: 'participant',
685
+ type: 'address',
686
+ },
687
+ ],
688
+ name: 'getParticipantRewardAndPoints',
689
+ outputs: [
690
+ {
691
+ internalType: 'uint256',
692
+ name: 'reward',
693
+ type: 'uint256',
694
+ },
695
+ ],
696
+ stateMutability: 'view',
697
+ type: 'function',
698
+ },
699
+ {
700
+ inputs: [
701
+ {
702
+ internalType: 'address',
703
+ name: 'participant',
704
+ type: 'address',
705
+ },
706
+ ],
707
+ name: 'getParticipantScore',
708
+ outputs: [
709
+ {
710
+ internalType: 'int256',
711
+ name: 'score',
712
+ type: 'int256',
713
+ },
714
+ ],
715
+ stateMutability: 'view',
716
+ type: 'function',
717
+ },
718
+ {
719
+ inputs: [
720
+ {
721
+ internalType: 'uint256',
722
+ name: 'centerRank',
723
+ type: 'uint256',
724
+ },
725
+ {
726
+ internalType: 'uint256',
727
+ name: 'range',
728
+ type: 'uint256',
729
+ },
730
+ ],
731
+ name: 'getParticipantsAroundRank',
732
+ outputs: [
733
+ {
734
+ components: [
735
+ {
736
+ internalType: 'address',
737
+ name: 'participant',
738
+ type: 'address',
739
+ },
740
+ {
741
+ internalType: 'int256',
742
+ name: 'score',
743
+ type: 'int256',
744
+ },
745
+ ],
746
+ internalType: 'struct AVLTreeLib.ParticipantScore[]',
747
+ name: 'participants',
748
+ type: 'tuple[]',
749
+ },
750
+ ],
751
+ stateMutability: 'view',
752
+ type: 'function',
753
+ },
754
+ {
755
+ inputs: [
756
+ {
757
+ internalType: 'uint256',
758
+ name: 'startRank',
759
+ type: 'uint256',
760
+ },
761
+ {
762
+ internalType: 'uint256',
763
+ name: 'endRank',
764
+ type: 'uint256',
765
+ },
766
+ ],
767
+ name: 'getParticipantsByRange',
768
+ outputs: [
769
+ {
770
+ components: [
771
+ {
772
+ internalType: 'address',
773
+ name: 'participant',
774
+ type: 'address',
775
+ },
776
+ {
777
+ internalType: 'int256',
778
+ name: 'score',
779
+ type: 'int256',
780
+ },
781
+ ],
782
+ internalType: 'struct AVLTreeLib.ParticipantScore[]',
783
+ name: 'participants',
784
+ type: 'tuple[]',
785
+ },
786
+ ],
787
+ stateMutability: 'view',
788
+ type: 'function',
789
+ },
790
+ {
791
+ inputs: [
792
+ {
793
+ internalType: 'uint256',
794
+ name: 'startRank',
795
+ type: 'uint256',
796
+ },
797
+ {
798
+ internalType: 'uint256',
799
+ name: 'endRank',
800
+ type: 'uint256',
801
+ },
802
+ ],
803
+ name: 'getParticipantsInfoByRange',
804
+ outputs: [
805
+ {
806
+ components: [
807
+ {
808
+ components: [
809
+ {
810
+ internalType: 'bool',
811
+ name: 'isParticipantRegistered',
812
+ type: 'bool',
813
+ },
814
+ {
815
+ internalType: 'bool',
816
+ name: 'isRewardClaimed',
817
+ type: 'bool',
818
+ },
819
+ {
820
+ internalType: 'uint256[]',
821
+ name: 'migrationsIndexes',
822
+ type: 'uint256[]',
823
+ },
824
+ ],
825
+ internalType: 'struct Campaign.ParticipantInfo',
826
+ name: 'storedInfo',
827
+ type: 'tuple',
828
+ },
829
+ {
830
+ components: [
831
+ {
832
+ internalType: 'address',
833
+ name: 'participant',
834
+ type: 'address',
835
+ },
836
+ {
837
+ internalType: 'uint256',
838
+ name: 'rank',
839
+ type: 'uint256',
840
+ },
841
+ {
842
+ internalType: 'int256',
843
+ name: 'score',
844
+ type: 'int256',
845
+ },
846
+ {
847
+ internalType: 'uint256',
848
+ name: 'reward',
849
+ type: 'uint256',
850
+ },
851
+ ],
852
+ internalType: 'struct Campaign.ParticipantInfoViewed',
853
+ name: 'viewedInfo',
854
+ type: 'tuple',
855
+ },
856
+ ],
857
+ internalType: 'struct Campaign.FullParticipantInfo[]',
858
+ name: 'datas',
859
+ type: 'tuple[]',
860
+ },
861
+ ],
862
+ stateMutability: 'view',
863
+ type: 'function',
864
+ },
865
+ {
866
+ inputs: [
867
+ {
868
+ internalType: 'bytes32',
869
+ name: 'role',
870
+ type: 'bytes32',
871
+ },
872
+ ],
873
+ name: 'getRoleAdmin',
874
+ outputs: [
875
+ {
876
+ internalType: 'bytes32',
877
+ name: '',
878
+ type: 'bytes32',
879
+ },
880
+ ],
881
+ stateMutability: 'view',
882
+ type: 'function',
883
+ },
884
+ {
885
+ inputs: [],
886
+ name: 'getStat',
887
+ outputs: [
888
+ {
889
+ internalType: 'uint256',
890
+ name: 'totalMigrations',
891
+ type: 'uint256',
892
+ },
893
+ {
894
+ internalType: 'uint256',
895
+ name: '_totalDeployedMigrations',
896
+ type: 'uint256',
897
+ },
898
+ {
899
+ internalType: 'uint256',
900
+ name: '_totalNotDeployedMigrations',
901
+ type: 'uint256',
902
+ },
903
+ ],
904
+ stateMutability: 'view',
905
+ type: 'function',
906
+ },
907
+ {
908
+ inputs: [
909
+ {
910
+ internalType: 'uint256',
911
+ name: 'count',
912
+ type: 'uint256',
913
+ },
914
+ ],
915
+ name: 'getTopParticipants',
916
+ outputs: [
917
+ {
918
+ components: [
919
+ {
920
+ internalType: 'address',
921
+ name: 'participant',
922
+ type: 'address',
923
+ },
924
+ {
925
+ internalType: 'int256',
926
+ name: 'score',
927
+ type: 'int256',
928
+ },
929
+ ],
930
+ internalType: 'struct AVLTreeLib.ParticipantScore[]',
931
+ name: 'participants',
932
+ type: 'tuple[]',
933
+ },
934
+ ],
935
+ stateMutability: 'view',
936
+ type: 'function',
937
+ },
938
+ {
939
+ inputs: [
940
+ {
941
+ internalType: 'uint256',
942
+ name: 'count',
943
+ type: 'uint256',
944
+ },
945
+ ],
946
+ name: 'getTopParticipantsInfo',
947
+ outputs: [
948
+ {
949
+ components: [
950
+ {
951
+ components: [
952
+ {
953
+ internalType: 'bool',
954
+ name: 'isParticipantRegistered',
955
+ type: 'bool',
956
+ },
957
+ {
958
+ internalType: 'bool',
959
+ name: 'isRewardClaimed',
960
+ type: 'bool',
961
+ },
962
+ {
963
+ internalType: 'uint256[]',
964
+ name: 'migrationsIndexes',
965
+ type: 'uint256[]',
966
+ },
967
+ ],
968
+ internalType: 'struct Campaign.ParticipantInfo',
969
+ name: 'storedInfo',
970
+ type: 'tuple',
971
+ },
972
+ {
973
+ components: [
974
+ {
975
+ internalType: 'address',
976
+ name: 'participant',
977
+ type: 'address',
978
+ },
979
+ {
980
+ internalType: 'uint256',
981
+ name: 'rank',
982
+ type: 'uint256',
983
+ },
984
+ {
985
+ internalType: 'int256',
986
+ name: 'score',
987
+ type: 'int256',
988
+ },
989
+ {
990
+ internalType: 'uint256',
991
+ name: 'reward',
992
+ type: 'uint256',
993
+ },
994
+ ],
995
+ internalType: 'struct Campaign.ParticipantInfoViewed',
996
+ name: 'viewedInfo',
997
+ type: 'tuple',
998
+ },
999
+ ],
1000
+ internalType: 'struct Campaign.FullParticipantInfo[]',
1001
+ name: 'datas',
1002
+ type: 'tuple[]',
1003
+ },
1004
+ ],
1005
+ stateMutability: 'view',
1006
+ type: 'function',
1007
+ },
1008
+ {
1009
+ inputs: [],
1010
+ name: 'getTotalMigrations',
1011
+ outputs: [
1012
+ {
1013
+ internalType: 'uint256',
1014
+ name: '',
1015
+ type: 'uint256',
1016
+ },
1017
+ ],
1018
+ stateMutability: 'view',
1019
+ type: 'function',
1020
+ },
1021
+ {
1022
+ inputs: [],
1023
+ name: 'getTotalParticipants',
1024
+ outputs: [
1025
+ {
1026
+ internalType: 'uint256',
1027
+ name: 'count',
1028
+ type: 'uint256',
1029
+ },
1030
+ ],
1031
+ stateMutability: 'view',
1032
+ type: 'function',
1033
+ },
1034
+ {
1035
+ inputs: [
1036
+ {
1037
+ internalType: 'bytes32',
1038
+ name: 'role',
1039
+ type: 'bytes32',
1040
+ },
1041
+ {
1042
+ internalType: 'address',
1043
+ name: 'account',
1044
+ type: 'address',
1045
+ },
1046
+ ],
1047
+ name: 'grantRole',
1048
+ outputs: [],
1049
+ stateMutability: 'nonpayable',
1050
+ type: 'function',
1051
+ },
1052
+ {
1053
+ inputs: [
1054
+ {
1055
+ internalType: 'bytes32',
1056
+ name: 'role',
1057
+ type: 'bytes32',
1058
+ },
1059
+ {
1060
+ internalType: 'address',
1061
+ name: 'account',
1062
+ type: 'address',
1063
+ },
1064
+ ],
1065
+ name: 'hasRole',
1066
+ outputs: [
1067
+ {
1068
+ internalType: 'bool',
1069
+ name: '',
1070
+ type: 'bool',
1071
+ },
1072
+ ],
1073
+ stateMutability: 'view',
1074
+ type: 'function',
1075
+ },
1076
+ {
1077
+ inputs: [
1078
+ {
1079
+ internalType: 'address',
1080
+ name: '',
1081
+ type: 'address',
1082
+ },
1083
+ ],
1084
+ name: 'isUniqueDstAddress',
1085
+ outputs: [
1086
+ {
1087
+ internalType: 'bool',
1088
+ name: '',
1089
+ type: 'bool',
1090
+ },
1091
+ ],
1092
+ stateMutability: 'view',
1093
+ type: 'function',
1094
+ },
1095
+ {
1096
+ inputs: [
1097
+ {
1098
+ internalType: 'address',
1099
+ name: '',
1100
+ type: 'address',
1101
+ },
1102
+ ],
1103
+ name: 'isUniqueSrcAddress',
1104
+ outputs: [
1105
+ {
1106
+ internalType: 'bool',
1107
+ name: '',
1108
+ type: 'bool',
1109
+ },
1110
+ ],
1111
+ stateMutability: 'view',
1112
+ type: 'function',
1113
+ },
1114
+ {
1115
+ inputs: [
1116
+ {
1117
+ internalType: 'address',
1118
+ name: '',
1119
+ type: 'address',
1120
+ },
1121
+ {
1122
+ internalType: 'address',
1123
+ name: '',
1124
+ type: 'address',
1125
+ },
1126
+ ],
1127
+ name: 'isUniqueSrcAddressByParticipant',
1128
+ outputs: [
1129
+ {
1130
+ internalType: 'bool',
1131
+ name: '',
1132
+ type: 'bool',
1133
+ },
1134
+ ],
1135
+ stateMutability: 'view',
1136
+ type: 'function',
1137
+ },
1138
+ {
1139
+ inputs: [
1140
+ {
1141
+ internalType: 'uint256',
1142
+ name: '',
1143
+ type: 'uint256',
1144
+ },
1145
+ ],
1146
+ name: 'migrations',
1147
+ outputs: [
1148
+ {
1149
+ internalType: 'address',
1150
+ name: 'participant',
1151
+ type: 'address',
1152
+ },
1153
+ {
1154
+ internalType: 'uint16',
1155
+ name: 'score',
1156
+ type: 'uint16',
1157
+ },
1158
+ {
1159
+ internalType: 'bool',
1160
+ name: 'firstSourceMigration',
1161
+ type: 'bool',
1162
+ },
1163
+ {
1164
+ internalType: 'enum Campaign.MigrationNetwork',
1165
+ name: 'sourceNetwork',
1166
+ type: 'uint8',
1167
+ },
1168
+ {
1169
+ internalType: 'enum Campaign.Status',
1170
+ name: 'status',
1171
+ type: 'uint8',
1172
+ },
1173
+ {
1174
+ internalType: 'address',
1175
+ name: 'sourceAddress',
1176
+ type: 'address',
1177
+ },
1178
+ {
1179
+ internalType: 'address',
1180
+ name: 'destinationAddress',
1181
+ type: 'address',
1182
+ },
1183
+ {
1184
+ internalType: 'string',
1185
+ name: 'sourceUrl',
1186
+ type: 'string',
1187
+ },
1188
+ {
1189
+ internalType: 'string',
1190
+ name: 'destinationUrl',
1191
+ type: 'string',
1192
+ },
1193
+ ],
1194
+ stateMutability: 'view',
1195
+ type: 'function',
1196
+ },
1197
+ {
1198
+ inputs: [
1199
+ {
1200
+ internalType: 'address',
1201
+ name: 'participant',
1202
+ type: 'address',
1203
+ },
1204
+ ],
1205
+ name: 'participantExist',
1206
+ outputs: [
1207
+ {
1208
+ internalType: 'bool',
1209
+ name: '',
1210
+ type: 'bool',
1211
+ },
1212
+ ],
1213
+ stateMutability: 'view',
1214
+ type: 'function',
1215
+ },
1216
+ {
1217
+ inputs: [],
1218
+ name: 'registry',
1219
+ outputs: [],
1220
+ stateMutability: 'nonpayable',
1221
+ type: 'function',
1222
+ },
1223
+ {
1224
+ inputs: [
1225
+ {
1226
+ internalType: 'bytes32',
1227
+ name: 'role',
1228
+ type: 'bytes32',
1229
+ },
1230
+ {
1231
+ internalType: 'address',
1232
+ name: 'account',
1233
+ type: 'address',
1234
+ },
1235
+ ],
1236
+ name: 'renounceRole',
1237
+ outputs: [],
1238
+ stateMutability: 'nonpayable',
1239
+ type: 'function',
1240
+ },
1241
+ {
1242
+ inputs: [
1243
+ {
1244
+ internalType: 'address',
1245
+ name: 'participant',
1246
+ type: 'address',
1247
+ },
1248
+ ],
1249
+ name: 'revokeParticipant',
1250
+ outputs: [],
1251
+ stateMutability: 'nonpayable',
1252
+ type: 'function',
1253
+ },
1254
+ {
1255
+ inputs: [
1256
+ {
1257
+ internalType: 'bytes32',
1258
+ name: 'role',
1259
+ type: 'bytes32',
1260
+ },
1261
+ {
1262
+ internalType: 'address',
1263
+ name: 'account',
1264
+ type: 'address',
1265
+ },
1266
+ ],
1267
+ name: 'revokeRole',
1268
+ outputs: [],
1269
+ stateMutability: 'nonpayable',
1270
+ type: 'function',
1271
+ },
1272
+ {
1273
+ inputs: [
1274
+ {
1275
+ internalType: 'enum Campaign.MigrationNetwork',
1276
+ name: 'srcNetwork',
1277
+ type: 'uint8',
1278
+ },
1279
+ {
1280
+ internalType: 'address',
1281
+ name: 'srcAddress',
1282
+ type: 'address',
1283
+ },
1284
+ {
1285
+ internalType: 'address',
1286
+ name: 'dstAddress',
1287
+ type: 'address',
1288
+ },
1289
+ {
1290
+ internalType: 'string',
1291
+ name: 'srcUrl',
1292
+ type: 'string',
1293
+ },
1294
+ {
1295
+ internalType: 'string',
1296
+ name: 'dstUrl',
1297
+ type: 'string',
1298
+ },
1299
+ ],
1300
+ name: 'submitMigration',
1301
+ outputs: [],
1302
+ stateMutability: 'nonpayable',
1303
+ type: 'function',
1304
+ },
1305
+ {
1306
+ inputs: [
1307
+ {
1308
+ internalType: 'bytes4',
1309
+ name: 'interfaceId',
1310
+ type: 'bytes4',
1311
+ },
1312
+ ],
1313
+ name: 'supportsInterface',
1314
+ outputs: [
1315
+ {
1316
+ internalType: 'bool',
1317
+ name: '',
1318
+ type: 'bool',
1319
+ },
1320
+ ],
1321
+ stateMutability: 'view',
1322
+ type: 'function',
1323
+ },
1324
+ {
1325
+ inputs: [
1326
+ {
1327
+ internalType: 'uint64',
1328
+ name: 'migrationIndex',
1329
+ type: 'uint64',
1330
+ },
1331
+ {
1332
+ internalType: 'bool',
1333
+ name: 'isDeployed',
1334
+ type: 'bool',
1335
+ },
1336
+ {
1337
+ internalType: 'uint256',
1338
+ name: 'transactions',
1339
+ type: 'uint256',
1340
+ },
1341
+ ],
1342
+ name: 'updateMigrationStatusByApp',
1343
+ outputs: [],
1344
+ stateMutability: 'nonpayable',
1345
+ type: 'function',
1346
+ },
1347
+ {
1348
+ inputs: [
1349
+ {
1350
+ internalType: 'uint64',
1351
+ name: 'migrationIndex',
1352
+ type: 'uint64',
1353
+ },
1354
+ {
1355
+ internalType: 'uint256',
1356
+ name: 'transactions',
1357
+ type: 'uint256',
1358
+ },
1359
+ ],
1360
+ name: 'updateMigrationTransactionsByApp',
1361
+ outputs: [],
1362
+ stateMutability: 'nonpayable',
1363
+ type: 'function',
1364
+ },
1365
+ {
1366
+ inputs: [],
1367
+ name: 'usdt',
1368
+ outputs: [
1369
+ {
1370
+ internalType: 'address',
1371
+ name: '',
1372
+ type: 'address',
1373
+ },
1374
+ ],
1375
+ stateMutability: 'view',
1376
+ type: 'function',
1377
+ },
1378
+ {
1379
+ inputs: [
1380
+ {
1381
+ internalType: 'address',
1382
+ name: 'token',
1383
+ type: 'address',
1384
+ },
1385
+ {
1386
+ internalType: 'uint256',
1387
+ name: 'amount',
1388
+ type: 'uint256',
1389
+ },
1390
+ ],
1391
+ name: 'withdrawByAdmin',
1392
+ outputs: [],
1393
+ stateMutability: 'nonpayable',
1394
+ type: 'function',
1395
+ },
1396
+ ];
1397
+ export default abi;
1398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtcGFpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL0NhbXBhaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG9CQUE2QixDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHdCQUFpQyxDQUFDO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG9CQUE2QixDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLDhCQUF1QyxDQUFDO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUF1QixDQUFDO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFzQixDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFzQixDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHVCQUFnQyxDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxlQUF3QixDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUEyQixDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFzQixDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFzQixDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUF1QixDQUFDO0FBZXBELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQjtRQUNFLE1BQU0sRUFBRTtZQUNOO2dCQUNFLFlBQVksRUFBRSxRQUFRO2dCQUN0QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixJQUFJLEVBQUUsUUFBUTthQUNmO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRDtnQkFD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