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