@aastar/paymaster 0.16.7

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 (106) hide show
  1. package/LICENSE +21 -0
  2. package/dist/core/src/abis/BLSAggregator.json +686 -0
  3. package/dist/core/src/abis/BLSValidator.json +42 -0
  4. package/dist/core/src/abis/DVTValidator.json +368 -0
  5. package/dist/core/src/abis/EntryPoint.json +1382 -0
  6. package/dist/core/src/abis/GToken.json +513 -0
  7. package/dist/core/src/abis/GTokenStaking.json +949 -0
  8. package/dist/core/src/abis/MySBT.json +1518 -0
  9. package/dist/core/src/abis/Paymaster.json +1143 -0
  10. package/dist/core/src/abis/PaymasterFactory.json +640 -0
  11. package/dist/core/src/abis/Registry.json +1942 -0
  12. package/dist/core/src/abis/ReputationSystem.json +699 -0
  13. package/dist/core/src/abis/SimpleAccount.json +560 -0
  14. package/dist/core/src/abis/SimpleAccountFactory.json +111 -0
  15. package/dist/core/src/abis/SuperPaymaster.json +1781 -0
  16. package/dist/core/src/abis/index.d.ts +1126 -0
  17. package/dist/core/src/abis/index.js +91 -0
  18. package/dist/core/src/abis/xPNTsFactory.json +718 -0
  19. package/dist/core/src/abis/xPNTsToken.json +1280 -0
  20. package/dist/core/src/actions/StateValidator.d.ts +68 -0
  21. package/dist/core/src/actions/StateValidator.js +187 -0
  22. package/dist/core/src/actions/account.d.ts +55 -0
  23. package/dist/core/src/actions/account.js +133 -0
  24. package/dist/core/src/actions/aggregator.d.ts +17 -0
  25. package/dist/core/src/actions/aggregator.js +31 -0
  26. package/dist/core/src/actions/dvt.d.ts +30 -0
  27. package/dist/core/src/actions/dvt.js +41 -0
  28. package/dist/core/src/actions/entryPoint.d.ts +90 -0
  29. package/dist/core/src/actions/entryPoint.js +211 -0
  30. package/dist/core/src/actions/factory.d.ts +215 -0
  31. package/dist/core/src/actions/factory.js +442 -0
  32. package/dist/core/src/actions/faucet.d.ts +48 -0
  33. package/dist/core/src/actions/faucet.js +337 -0
  34. package/dist/core/src/actions/gtokenExtended.d.ts +39 -0
  35. package/dist/core/src/actions/gtokenExtended.js +115 -0
  36. package/dist/core/src/actions/index.d.ts +15 -0
  37. package/dist/core/src/actions/index.js +17 -0
  38. package/dist/core/src/actions/paymasterV4.d.ts +170 -0
  39. package/dist/core/src/actions/paymasterV4.js +334 -0
  40. package/dist/core/src/actions/registry.d.ts +246 -0
  41. package/dist/core/src/actions/registry.js +667 -0
  42. package/dist/core/src/actions/reputation.d.ts +129 -0
  43. package/dist/core/src/actions/reputation.js +281 -0
  44. package/dist/core/src/actions/sbt.d.ts +191 -0
  45. package/dist/core/src/actions/sbt.js +533 -0
  46. package/dist/core/src/actions/staking.d.ts +132 -0
  47. package/dist/core/src/actions/staking.js +330 -0
  48. package/dist/core/src/actions/superPaymaster.d.ts +237 -0
  49. package/dist/core/src/actions/superPaymaster.js +644 -0
  50. package/dist/core/src/actions/tokens.d.ts +229 -0
  51. package/dist/core/src/actions/tokens.js +415 -0
  52. package/dist/core/src/branding.d.ts +30 -0
  53. package/dist/core/src/branding.js +30 -0
  54. package/dist/core/src/clients/BaseClient.d.ts +25 -0
  55. package/dist/core/src/clients/BaseClient.js +66 -0
  56. package/dist/core/src/clients/types.d.ts +60 -0
  57. package/dist/core/src/clients/types.js +1 -0
  58. package/dist/core/src/clients.d.ts +5 -0
  59. package/dist/core/src/clients.js +11 -0
  60. package/dist/core/src/communities.d.ts +52 -0
  61. package/dist/core/src/communities.js +73 -0
  62. package/dist/core/src/config/ContractConfigManager.d.ts +20 -0
  63. package/dist/core/src/config/ContractConfigManager.js +48 -0
  64. package/dist/core/src/constants.d.ts +88 -0
  65. package/dist/core/src/constants.js +125 -0
  66. package/dist/core/src/contract-addresses.d.ts +110 -0
  67. package/dist/core/src/contract-addresses.js +99 -0
  68. package/dist/core/src/contracts.d.ts +424 -0
  69. package/dist/core/src/contracts.js +343 -0
  70. package/dist/core/src/crypto/blsSigner.d.ts +64 -0
  71. package/dist/core/src/crypto/blsSigner.js +98 -0
  72. package/dist/core/src/crypto/index.d.ts +1 -0
  73. package/dist/core/src/crypto/index.js +1 -0
  74. package/dist/core/src/index.d.ts +21 -0
  75. package/dist/core/src/index.js +21 -0
  76. package/dist/core/src/networks.d.ts +127 -0
  77. package/dist/core/src/networks.js +118 -0
  78. package/dist/core/src/requirementChecker.d.ts +38 -0
  79. package/dist/core/src/requirementChecker.js +139 -0
  80. package/dist/core/src/roles.d.ts +204 -0
  81. package/dist/core/src/roles.js +211 -0
  82. package/dist/core/src/utils/validation.d.ts +24 -0
  83. package/dist/core/src/utils/validation.js +56 -0
  84. package/dist/paymaster/src/SuperPaymaster/index.d.ts +44 -0
  85. package/dist/paymaster/src/SuperPaymaster/index.js +133 -0
  86. package/dist/paymaster/src/V4/PaymasterClient.d.ts +79 -0
  87. package/dist/paymaster/src/V4/PaymasterClient.js +315 -0
  88. package/dist/paymaster/src/V4/PaymasterClient.test.d.ts +1 -0
  89. package/dist/paymaster/src/V4/PaymasterClient.test.js +80 -0
  90. package/dist/paymaster/src/V4/PaymasterOperator.d.ts +41 -0
  91. package/dist/paymaster/src/V4/PaymasterOperator.js +241 -0
  92. package/dist/paymaster/src/V4/PaymasterOperator.test.d.ts +1 -0
  93. package/dist/paymaster/src/V4/PaymasterOperator.test.js +66 -0
  94. package/dist/paymaster/src/V4/PaymasterUtils.d.ts +55 -0
  95. package/dist/paymaster/src/V4/PaymasterUtils.js +124 -0
  96. package/dist/paymaster/src/V4/PaymasterUtils.test.d.ts +1 -0
  97. package/dist/paymaster/src/V4/PaymasterUtils.test.js +43 -0
  98. package/dist/paymaster/src/V4/SuperPaymasterClient.d.ts +21 -0
  99. package/dist/paymaster/src/V4/SuperPaymasterClient.js +73 -0
  100. package/dist/paymaster/src/V4/SuperPaymasterClient.test.d.ts +1 -0
  101. package/dist/paymaster/src/V4/SuperPaymasterClient.test.js +53 -0
  102. package/dist/paymaster/src/V4/index.d.ts +4 -0
  103. package/dist/paymaster/src/V4/index.js +4 -0
  104. package/dist/paymaster/src/index.d.ts +2 -0
  105. package/dist/paymaster/src/index.js +4 -0
  106. package/package.json +26 -0
@@ -0,0 +1,1518 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "constructor",
5
+ "inputs": [
6
+ {
7
+ "name": "_g",
8
+ "type": "address",
9
+ "internalType": "address"
10
+ },
11
+ {
12
+ "name": "_s",
13
+ "type": "address",
14
+ "internalType": "address"
15
+ },
16
+ {
17
+ "name": "_r",
18
+ "type": "address",
19
+ "internalType": "address"
20
+ },
21
+ {
22
+ "name": "_d",
23
+ "type": "address",
24
+ "internalType": "address"
25
+ }
26
+ ],
27
+ "stateMutability": "nonpayable"
28
+ },
29
+ {
30
+ "type": "function",
31
+ "name": "GTOKEN",
32
+ "inputs": [],
33
+ "outputs": [
34
+ {
35
+ "name": "",
36
+ "type": "address",
37
+ "internalType": "address"
38
+ }
39
+ ],
40
+ "stateMutability": "view"
41
+ },
42
+ {
43
+ "type": "function",
44
+ "name": "GTOKEN_STAKING",
45
+ "inputs": [],
46
+ "outputs": [
47
+ {
48
+ "name": "",
49
+ "type": "address",
50
+ "internalType": "address"
51
+ }
52
+ ],
53
+ "stateMutability": "view"
54
+ },
55
+ {
56
+ "type": "function",
57
+ "name": "REGISTRY",
58
+ "inputs": [],
59
+ "outputs": [
60
+ {
61
+ "name": "",
62
+ "type": "address",
63
+ "internalType": "address"
64
+ }
65
+ ],
66
+ "stateMutability": "view"
67
+ },
68
+ {
69
+ "type": "function",
70
+ "name": "airdropMint",
71
+ "inputs": [
72
+ {
73
+ "name": "u",
74
+ "type": "address",
75
+ "internalType": "address"
76
+ },
77
+ {
78
+ "name": "roleId",
79
+ "type": "bytes32",
80
+ "internalType": "bytes32"
81
+ },
82
+ {
83
+ "name": "roleData",
84
+ "type": "bytes",
85
+ "internalType": "bytes"
86
+ }
87
+ ],
88
+ "outputs": [
89
+ {
90
+ "name": "tid",
91
+ "type": "uint256",
92
+ "internalType": "uint256"
93
+ },
94
+ {
95
+ "name": "isNew",
96
+ "type": "bool",
97
+ "internalType": "bool"
98
+ }
99
+ ],
100
+ "stateMutability": "nonpayable"
101
+ },
102
+ {
103
+ "type": "function",
104
+ "name": "approve",
105
+ "inputs": [
106
+ {
107
+ "name": "to",
108
+ "type": "address",
109
+ "internalType": "address"
110
+ },
111
+ {
112
+ "name": "tokenId",
113
+ "type": "uint256",
114
+ "internalType": "uint256"
115
+ }
116
+ ],
117
+ "outputs": [],
118
+ "stateMutability": "nonpayable"
119
+ },
120
+ {
121
+ "type": "function",
122
+ "name": "balanceOf",
123
+ "inputs": [
124
+ {
125
+ "name": "owner",
126
+ "type": "address",
127
+ "internalType": "address"
128
+ }
129
+ ],
130
+ "outputs": [
131
+ {
132
+ "name": "",
133
+ "type": "uint256",
134
+ "internalType": "uint256"
135
+ }
136
+ ],
137
+ "stateMutability": "view"
138
+ },
139
+ {
140
+ "type": "function",
141
+ "name": "burnSBT",
142
+ "inputs": [
143
+ {
144
+ "name": "u",
145
+ "type": "address",
146
+ "internalType": "address"
147
+ }
148
+ ],
149
+ "outputs": [],
150
+ "stateMutability": "nonpayable"
151
+ },
152
+ {
153
+ "type": "function",
154
+ "name": "daoMultisig",
155
+ "inputs": [],
156
+ "outputs": [
157
+ {
158
+ "name": "",
159
+ "type": "address",
160
+ "internalType": "address"
161
+ }
162
+ ],
163
+ "stateMutability": "view"
164
+ },
165
+ {
166
+ "type": "function",
167
+ "name": "deactivateAllMemberships",
168
+ "inputs": [
169
+ {
170
+ "name": "user",
171
+ "type": "address",
172
+ "internalType": "address"
173
+ }
174
+ ],
175
+ "outputs": [],
176
+ "stateMutability": "nonpayable"
177
+ },
178
+ {
179
+ "type": "function",
180
+ "name": "deactivateMembership",
181
+ "inputs": [
182
+ {
183
+ "name": "user",
184
+ "type": "address",
185
+ "internalType": "address"
186
+ },
187
+ {
188
+ "name": "community",
189
+ "type": "address",
190
+ "internalType": "address"
191
+ }
192
+ ],
193
+ "outputs": [],
194
+ "stateMutability": "nonpayable"
195
+ },
196
+ {
197
+ "type": "function",
198
+ "name": "getActiveMemberships",
199
+ "inputs": [
200
+ {
201
+ "name": "tid",
202
+ "type": "uint256",
203
+ "internalType": "uint256"
204
+ }
205
+ ],
206
+ "outputs": [
207
+ {
208
+ "name": "active",
209
+ "type": "address[]",
210
+ "internalType": "address[]"
211
+ }
212
+ ],
213
+ "stateMutability": "view"
214
+ },
215
+ {
216
+ "type": "function",
217
+ "name": "getApproved",
218
+ "inputs": [
219
+ {
220
+ "name": "tokenId",
221
+ "type": "uint256",
222
+ "internalType": "uint256"
223
+ }
224
+ ],
225
+ "outputs": [
226
+ {
227
+ "name": "",
228
+ "type": "address",
229
+ "internalType": "address"
230
+ }
231
+ ],
232
+ "stateMutability": "view"
233
+ },
234
+ {
235
+ "type": "function",
236
+ "name": "getCommunityMembership",
237
+ "inputs": [
238
+ {
239
+ "name": "tid",
240
+ "type": "uint256",
241
+ "internalType": "uint256"
242
+ },
243
+ {
244
+ "name": "comm",
245
+ "type": "address",
246
+ "internalType": "address"
247
+ }
248
+ ],
249
+ "outputs": [
250
+ {
251
+ "name": "mem",
252
+ "type": "tuple",
253
+ "internalType": "struct MySBT.CommunityMembership",
254
+ "components": [
255
+ {
256
+ "name": "community",
257
+ "type": "address",
258
+ "internalType": "address"
259
+ },
260
+ {
261
+ "name": "joinedAt",
262
+ "type": "uint256",
263
+ "internalType": "uint256"
264
+ },
265
+ {
266
+ "name": "lastActiveTime",
267
+ "type": "uint256",
268
+ "internalType": "uint256"
269
+ },
270
+ {
271
+ "name": "isActive",
272
+ "type": "bool",
273
+ "internalType": "bool"
274
+ },
275
+ {
276
+ "name": "metadata",
277
+ "type": "string",
278
+ "internalType": "string"
279
+ }
280
+ ]
281
+ }
282
+ ],
283
+ "stateMutability": "view"
284
+ },
285
+ {
286
+ "type": "function",
287
+ "name": "getMemberships",
288
+ "inputs": [
289
+ {
290
+ "name": "tid",
291
+ "type": "uint256",
292
+ "internalType": "uint256"
293
+ }
294
+ ],
295
+ "outputs": [
296
+ {
297
+ "name": "",
298
+ "type": "tuple[]",
299
+ "internalType": "struct MySBT.CommunityMembership[]",
300
+ "components": [
301
+ {
302
+ "name": "community",
303
+ "type": "address",
304
+ "internalType": "address"
305
+ },
306
+ {
307
+ "name": "joinedAt",
308
+ "type": "uint256",
309
+ "internalType": "uint256"
310
+ },
311
+ {
312
+ "name": "lastActiveTime",
313
+ "type": "uint256",
314
+ "internalType": "uint256"
315
+ },
316
+ {
317
+ "name": "isActive",
318
+ "type": "bool",
319
+ "internalType": "bool"
320
+ },
321
+ {
322
+ "name": "metadata",
323
+ "type": "string",
324
+ "internalType": "string"
325
+ }
326
+ ]
327
+ }
328
+ ],
329
+ "stateMutability": "view"
330
+ },
331
+ {
332
+ "type": "function",
333
+ "name": "getSBTData",
334
+ "inputs": [
335
+ {
336
+ "name": "tid",
337
+ "type": "uint256",
338
+ "internalType": "uint256"
339
+ }
340
+ ],
341
+ "outputs": [
342
+ {
343
+ "name": "",
344
+ "type": "tuple",
345
+ "internalType": "struct MySBT.SBTData",
346
+ "components": [
347
+ {
348
+ "name": "holder",
349
+ "type": "address",
350
+ "internalType": "address"
351
+ },
352
+ {
353
+ "name": "firstCommunity",
354
+ "type": "address",
355
+ "internalType": "address"
356
+ },
357
+ {
358
+ "name": "mintedAt",
359
+ "type": "uint256",
360
+ "internalType": "uint256"
361
+ },
362
+ {
363
+ "name": "totalCommunities",
364
+ "type": "uint256",
365
+ "internalType": "uint256"
366
+ }
367
+ ]
368
+ }
369
+ ],
370
+ "stateMutability": "view"
371
+ },
372
+ {
373
+ "type": "function",
374
+ "name": "getUserSBT",
375
+ "inputs": [
376
+ {
377
+ "name": "u",
378
+ "type": "address",
379
+ "internalType": "address"
380
+ }
381
+ ],
382
+ "outputs": [
383
+ {
384
+ "name": "",
385
+ "type": "uint256",
386
+ "internalType": "uint256"
387
+ }
388
+ ],
389
+ "stateMutability": "view"
390
+ },
391
+ {
392
+ "type": "function",
393
+ "name": "isApprovedForAll",
394
+ "inputs": [
395
+ {
396
+ "name": "owner",
397
+ "type": "address",
398
+ "internalType": "address"
399
+ },
400
+ {
401
+ "name": "operator",
402
+ "type": "address",
403
+ "internalType": "address"
404
+ }
405
+ ],
406
+ "outputs": [
407
+ {
408
+ "name": "",
409
+ "type": "bool",
410
+ "internalType": "bool"
411
+ }
412
+ ],
413
+ "stateMutability": "view"
414
+ },
415
+ {
416
+ "type": "function",
417
+ "name": "lastActivityTime",
418
+ "inputs": [
419
+ {
420
+ "name": "",
421
+ "type": "uint256",
422
+ "internalType": "uint256"
423
+ },
424
+ {
425
+ "name": "",
426
+ "type": "address",
427
+ "internalType": "address"
428
+ }
429
+ ],
430
+ "outputs": [
431
+ {
432
+ "name": "",
433
+ "type": "uint256",
434
+ "internalType": "uint256"
435
+ }
436
+ ],
437
+ "stateMutability": "view"
438
+ },
439
+ {
440
+ "type": "function",
441
+ "name": "leaveCommunity",
442
+ "inputs": [
443
+ {
444
+ "name": "comm",
445
+ "type": "address",
446
+ "internalType": "address"
447
+ }
448
+ ],
449
+ "outputs": [],
450
+ "stateMutability": "nonpayable"
451
+ },
452
+ {
453
+ "type": "function",
454
+ "name": "membershipIndex",
455
+ "inputs": [
456
+ {
457
+ "name": "",
458
+ "type": "uint256",
459
+ "internalType": "uint256"
460
+ },
461
+ {
462
+ "name": "",
463
+ "type": "address",
464
+ "internalType": "address"
465
+ }
466
+ ],
467
+ "outputs": [
468
+ {
469
+ "name": "",
470
+ "type": "uint256",
471
+ "internalType": "uint256"
472
+ }
473
+ ],
474
+ "stateMutability": "view"
475
+ },
476
+ {
477
+ "type": "function",
478
+ "name": "minLockAmount",
479
+ "inputs": [],
480
+ "outputs": [
481
+ {
482
+ "name": "",
483
+ "type": "uint256",
484
+ "internalType": "uint256"
485
+ }
486
+ ],
487
+ "stateMutability": "view"
488
+ },
489
+ {
490
+ "type": "function",
491
+ "name": "mintFee",
492
+ "inputs": [],
493
+ "outputs": [
494
+ {
495
+ "name": "",
496
+ "type": "uint256",
497
+ "internalType": "uint256"
498
+ }
499
+ ],
500
+ "stateMutability": "view"
501
+ },
502
+ {
503
+ "type": "function",
504
+ "name": "mintForRole",
505
+ "inputs": [
506
+ {
507
+ "name": "user",
508
+ "type": "address",
509
+ "internalType": "address"
510
+ },
511
+ {
512
+ "name": "roleId",
513
+ "type": "bytes32",
514
+ "internalType": "bytes32"
515
+ },
516
+ {
517
+ "name": "roleData",
518
+ "type": "bytes",
519
+ "internalType": "bytes"
520
+ }
521
+ ],
522
+ "outputs": [
523
+ {
524
+ "name": "tokenId",
525
+ "type": "uint256",
526
+ "internalType": "uint256"
527
+ },
528
+ {
529
+ "name": "isNewMint",
530
+ "type": "bool",
531
+ "internalType": "bool"
532
+ }
533
+ ],
534
+ "stateMutability": "nonpayable"
535
+ },
536
+ {
537
+ "type": "function",
538
+ "name": "name",
539
+ "inputs": [],
540
+ "outputs": [
541
+ {
542
+ "name": "",
543
+ "type": "string",
544
+ "internalType": "string"
545
+ }
546
+ ],
547
+ "stateMutability": "view"
548
+ },
549
+ {
550
+ "type": "function",
551
+ "name": "nextTokenId",
552
+ "inputs": [],
553
+ "outputs": [
554
+ {
555
+ "name": "",
556
+ "type": "uint256",
557
+ "internalType": "uint256"
558
+ }
559
+ ],
560
+ "stateMutability": "view"
561
+ },
562
+ {
563
+ "type": "function",
564
+ "name": "ownerOf",
565
+ "inputs": [
566
+ {
567
+ "name": "tokenId",
568
+ "type": "uint256",
569
+ "internalType": "uint256"
570
+ }
571
+ ],
572
+ "outputs": [
573
+ {
574
+ "name": "",
575
+ "type": "address",
576
+ "internalType": "address"
577
+ }
578
+ ],
579
+ "stateMutability": "view"
580
+ },
581
+ {
582
+ "type": "function",
583
+ "name": "pause",
584
+ "inputs": [],
585
+ "outputs": [],
586
+ "stateMutability": "nonpayable"
587
+ },
588
+ {
589
+ "type": "function",
590
+ "name": "paused",
591
+ "inputs": [],
592
+ "outputs": [
593
+ {
594
+ "name": "",
595
+ "type": "bool",
596
+ "internalType": "bool"
597
+ }
598
+ ],
599
+ "stateMutability": "view"
600
+ },
601
+ {
602
+ "type": "function",
603
+ "name": "recordActivity",
604
+ "inputs": [
605
+ {
606
+ "name": "u",
607
+ "type": "address",
608
+ "internalType": "address"
609
+ }
610
+ ],
611
+ "outputs": [],
612
+ "stateMutability": "nonpayable"
613
+ },
614
+ {
615
+ "type": "function",
616
+ "name": "reputationCalculator",
617
+ "inputs": [],
618
+ "outputs": [
619
+ {
620
+ "name": "",
621
+ "type": "address",
622
+ "internalType": "address"
623
+ }
624
+ ],
625
+ "stateMutability": "view"
626
+ },
627
+ {
628
+ "type": "function",
629
+ "name": "safeTransferFrom",
630
+ "inputs": [
631
+ {
632
+ "name": "from",
633
+ "type": "address",
634
+ "internalType": "address"
635
+ },
636
+ {
637
+ "name": "to",
638
+ "type": "address",
639
+ "internalType": "address"
640
+ },
641
+ {
642
+ "name": "tokenId",
643
+ "type": "uint256",
644
+ "internalType": "uint256"
645
+ }
646
+ ],
647
+ "outputs": [],
648
+ "stateMutability": "nonpayable"
649
+ },
650
+ {
651
+ "type": "function",
652
+ "name": "safeTransferFrom",
653
+ "inputs": [
654
+ {
655
+ "name": "from",
656
+ "type": "address",
657
+ "internalType": "address"
658
+ },
659
+ {
660
+ "name": "to",
661
+ "type": "address",
662
+ "internalType": "address"
663
+ },
664
+ {
665
+ "name": "tokenId",
666
+ "type": "uint256",
667
+ "internalType": "uint256"
668
+ },
669
+ {
670
+ "name": "data",
671
+ "type": "bytes",
672
+ "internalType": "bytes"
673
+ }
674
+ ],
675
+ "outputs": [],
676
+ "stateMutability": "nonpayable"
677
+ },
678
+ {
679
+ "type": "function",
680
+ "name": "sbtData",
681
+ "inputs": [
682
+ {
683
+ "name": "",
684
+ "type": "uint256",
685
+ "internalType": "uint256"
686
+ }
687
+ ],
688
+ "outputs": [
689
+ {
690
+ "name": "holder",
691
+ "type": "address",
692
+ "internalType": "address"
693
+ },
694
+ {
695
+ "name": "firstCommunity",
696
+ "type": "address",
697
+ "internalType": "address"
698
+ },
699
+ {
700
+ "name": "mintedAt",
701
+ "type": "uint256",
702
+ "internalType": "uint256"
703
+ },
704
+ {
705
+ "name": "totalCommunities",
706
+ "type": "uint256",
707
+ "internalType": "uint256"
708
+ }
709
+ ],
710
+ "stateMutability": "view"
711
+ },
712
+ {
713
+ "type": "function",
714
+ "name": "setApprovalForAll",
715
+ "inputs": [
716
+ {
717
+ "name": "operator",
718
+ "type": "address",
719
+ "internalType": "address"
720
+ },
721
+ {
722
+ "name": "approved",
723
+ "type": "bool",
724
+ "internalType": "bool"
725
+ }
726
+ ],
727
+ "outputs": [],
728
+ "stateMutability": "nonpayable"
729
+ },
730
+ {
731
+ "type": "function",
732
+ "name": "setBaseURI",
733
+ "inputs": [
734
+ {
735
+ "name": "baseURI",
736
+ "type": "string",
737
+ "internalType": "string"
738
+ }
739
+ ],
740
+ "outputs": [],
741
+ "stateMutability": "nonpayable"
742
+ },
743
+ {
744
+ "type": "function",
745
+ "name": "setDAOMultisig",
746
+ "inputs": [
747
+ {
748
+ "name": "d",
749
+ "type": "address",
750
+ "internalType": "address"
751
+ }
752
+ ],
753
+ "outputs": [],
754
+ "stateMutability": "nonpayable"
755
+ },
756
+ {
757
+ "type": "function",
758
+ "name": "setMinLockAmount",
759
+ "inputs": [
760
+ {
761
+ "name": "a",
762
+ "type": "uint256",
763
+ "internalType": "uint256"
764
+ }
765
+ ],
766
+ "outputs": [],
767
+ "stateMutability": "nonpayable"
768
+ },
769
+ {
770
+ "type": "function",
771
+ "name": "setMintFee",
772
+ "inputs": [
773
+ {
774
+ "name": "f",
775
+ "type": "uint256",
776
+ "internalType": "uint256"
777
+ }
778
+ ],
779
+ "outputs": [],
780
+ "stateMutability": "nonpayable"
781
+ },
782
+ {
783
+ "type": "function",
784
+ "name": "setRegistry",
785
+ "inputs": [
786
+ {
787
+ "name": "r",
788
+ "type": "address",
789
+ "internalType": "address"
790
+ }
791
+ ],
792
+ "outputs": [],
793
+ "stateMutability": "nonpayable"
794
+ },
795
+ {
796
+ "type": "function",
797
+ "name": "setReputationCalculator",
798
+ "inputs": [
799
+ {
800
+ "name": "c",
801
+ "type": "address",
802
+ "internalType": "address"
803
+ }
804
+ ],
805
+ "outputs": [],
806
+ "stateMutability": "nonpayable"
807
+ },
808
+ {
809
+ "type": "function",
810
+ "name": "supportsInterface",
811
+ "inputs": [
812
+ {
813
+ "name": "interfaceId",
814
+ "type": "bytes4",
815
+ "internalType": "bytes4"
816
+ }
817
+ ],
818
+ "outputs": [
819
+ {
820
+ "name": "",
821
+ "type": "bool",
822
+ "internalType": "bool"
823
+ }
824
+ ],
825
+ "stateMutability": "view"
826
+ },
827
+ {
828
+ "type": "function",
829
+ "name": "symbol",
830
+ "inputs": [],
831
+ "outputs": [
832
+ {
833
+ "name": "",
834
+ "type": "string",
835
+ "internalType": "string"
836
+ }
837
+ ],
838
+ "stateMutability": "view"
839
+ },
840
+ {
841
+ "type": "function",
842
+ "name": "tokenURI",
843
+ "inputs": [
844
+ {
845
+ "name": "tokenId",
846
+ "type": "uint256",
847
+ "internalType": "uint256"
848
+ }
849
+ ],
850
+ "outputs": [
851
+ {
852
+ "name": "",
853
+ "type": "string",
854
+ "internalType": "string"
855
+ }
856
+ ],
857
+ "stateMutability": "view"
858
+ },
859
+ {
860
+ "type": "function",
861
+ "name": "transferFrom",
862
+ "inputs": [
863
+ {
864
+ "name": "from",
865
+ "type": "address",
866
+ "internalType": "address"
867
+ },
868
+ {
869
+ "name": "to",
870
+ "type": "address",
871
+ "internalType": "address"
872
+ },
873
+ {
874
+ "name": "tokenId",
875
+ "type": "uint256",
876
+ "internalType": "uint256"
877
+ }
878
+ ],
879
+ "outputs": [],
880
+ "stateMutability": "nonpayable"
881
+ },
882
+ {
883
+ "type": "function",
884
+ "name": "unpause",
885
+ "inputs": [],
886
+ "outputs": [],
887
+ "stateMutability": "nonpayable"
888
+ },
889
+ {
890
+ "type": "function",
891
+ "name": "userToSBT",
892
+ "inputs": [
893
+ {
894
+ "name": "",
895
+ "type": "address",
896
+ "internalType": "address"
897
+ }
898
+ ],
899
+ "outputs": [
900
+ {
901
+ "name": "",
902
+ "type": "uint256",
903
+ "internalType": "uint256"
904
+ }
905
+ ],
906
+ "stateMutability": "view"
907
+ },
908
+ {
909
+ "type": "function",
910
+ "name": "verifyCommunityMembership",
911
+ "inputs": [
912
+ {
913
+ "name": "u",
914
+ "type": "address",
915
+ "internalType": "address"
916
+ },
917
+ {
918
+ "name": "comm",
919
+ "type": "address",
920
+ "internalType": "address"
921
+ }
922
+ ],
923
+ "outputs": [
924
+ {
925
+ "name": "",
926
+ "type": "bool",
927
+ "internalType": "bool"
928
+ }
929
+ ],
930
+ "stateMutability": "view"
931
+ },
932
+ {
933
+ "type": "function",
934
+ "name": "version",
935
+ "inputs": [],
936
+ "outputs": [
937
+ {
938
+ "name": "",
939
+ "type": "string",
940
+ "internalType": "string"
941
+ }
942
+ ],
943
+ "stateMutability": "pure"
944
+ },
945
+ {
946
+ "type": "function",
947
+ "name": "weeklyActivity",
948
+ "inputs": [
949
+ {
950
+ "name": "",
951
+ "type": "uint256",
952
+ "internalType": "uint256"
953
+ },
954
+ {
955
+ "name": "",
956
+ "type": "address",
957
+ "internalType": "address"
958
+ },
959
+ {
960
+ "name": "",
961
+ "type": "uint256",
962
+ "internalType": "uint256"
963
+ }
964
+ ],
965
+ "outputs": [
966
+ {
967
+ "name": "",
968
+ "type": "bool",
969
+ "internalType": "bool"
970
+ }
971
+ ],
972
+ "stateMutability": "view"
973
+ },
974
+ {
975
+ "type": "event",
976
+ "name": "ActivityRecorded",
977
+ "inputs": [
978
+ {
979
+ "name": "tokenId",
980
+ "type": "uint256",
981
+ "indexed": true,
982
+ "internalType": "uint256"
983
+ },
984
+ {
985
+ "name": "community",
986
+ "type": "address",
987
+ "indexed": true,
988
+ "internalType": "address"
989
+ },
990
+ {
991
+ "name": "week",
992
+ "type": "uint256",
993
+ "indexed": false,
994
+ "internalType": "uint256"
995
+ },
996
+ {
997
+ "name": "timestamp",
998
+ "type": "uint256",
999
+ "indexed": false,
1000
+ "internalType": "uint256"
1001
+ }
1002
+ ],
1003
+ "anonymous": false
1004
+ },
1005
+ {
1006
+ "type": "event",
1007
+ "name": "Approval",
1008
+ "inputs": [
1009
+ {
1010
+ "name": "owner",
1011
+ "type": "address",
1012
+ "indexed": true,
1013
+ "internalType": "address"
1014
+ },
1015
+ {
1016
+ "name": "approved",
1017
+ "type": "address",
1018
+ "indexed": true,
1019
+ "internalType": "address"
1020
+ },
1021
+ {
1022
+ "name": "tokenId",
1023
+ "type": "uint256",
1024
+ "indexed": true,
1025
+ "internalType": "uint256"
1026
+ }
1027
+ ],
1028
+ "anonymous": false
1029
+ },
1030
+ {
1031
+ "type": "event",
1032
+ "name": "ApprovalForAll",
1033
+ "inputs": [
1034
+ {
1035
+ "name": "owner",
1036
+ "type": "address",
1037
+ "indexed": true,
1038
+ "internalType": "address"
1039
+ },
1040
+ {
1041
+ "name": "operator",
1042
+ "type": "address",
1043
+ "indexed": true,
1044
+ "internalType": "address"
1045
+ },
1046
+ {
1047
+ "name": "approved",
1048
+ "type": "bool",
1049
+ "indexed": false,
1050
+ "internalType": "bool"
1051
+ }
1052
+ ],
1053
+ "anonymous": false
1054
+ },
1055
+ {
1056
+ "type": "event",
1057
+ "name": "ContractPaused",
1058
+ "inputs": [
1059
+ {
1060
+ "name": "by",
1061
+ "type": "address",
1062
+ "indexed": true,
1063
+ "internalType": "address"
1064
+ },
1065
+ {
1066
+ "name": "timestamp",
1067
+ "type": "uint256",
1068
+ "indexed": false,
1069
+ "internalType": "uint256"
1070
+ }
1071
+ ],
1072
+ "anonymous": false
1073
+ },
1074
+ {
1075
+ "type": "event",
1076
+ "name": "ContractUnpaused",
1077
+ "inputs": [
1078
+ {
1079
+ "name": "by",
1080
+ "type": "address",
1081
+ "indexed": true,
1082
+ "internalType": "address"
1083
+ },
1084
+ {
1085
+ "name": "timestamp",
1086
+ "type": "uint256",
1087
+ "indexed": false,
1088
+ "internalType": "uint256"
1089
+ }
1090
+ ],
1091
+ "anonymous": false
1092
+ },
1093
+ {
1094
+ "type": "event",
1095
+ "name": "DAOMultisigUpdated",
1096
+ "inputs": [
1097
+ {
1098
+ "name": "oldDAO",
1099
+ "type": "address",
1100
+ "indexed": true,
1101
+ "internalType": "address"
1102
+ },
1103
+ {
1104
+ "name": "newDAO",
1105
+ "type": "address",
1106
+ "indexed": true,
1107
+ "internalType": "address"
1108
+ },
1109
+ {
1110
+ "name": "timestamp",
1111
+ "type": "uint256",
1112
+ "indexed": false,
1113
+ "internalType": "uint256"
1114
+ }
1115
+ ],
1116
+ "anonymous": false
1117
+ },
1118
+ {
1119
+ "type": "event",
1120
+ "name": "MembershipAdded",
1121
+ "inputs": [
1122
+ {
1123
+ "name": "tokenId",
1124
+ "type": "uint256",
1125
+ "indexed": true,
1126
+ "internalType": "uint256"
1127
+ },
1128
+ {
1129
+ "name": "community",
1130
+ "type": "address",
1131
+ "indexed": true,
1132
+ "internalType": "address"
1133
+ },
1134
+ {
1135
+ "name": "metadata",
1136
+ "type": "string",
1137
+ "indexed": false,
1138
+ "internalType": "string"
1139
+ },
1140
+ {
1141
+ "name": "timestamp",
1142
+ "type": "uint256",
1143
+ "indexed": false,
1144
+ "internalType": "uint256"
1145
+ }
1146
+ ],
1147
+ "anonymous": false
1148
+ },
1149
+ {
1150
+ "type": "event",
1151
+ "name": "MembershipDeactivated",
1152
+ "inputs": [
1153
+ {
1154
+ "name": "tokenId",
1155
+ "type": "uint256",
1156
+ "indexed": true,
1157
+ "internalType": "uint256"
1158
+ },
1159
+ {
1160
+ "name": "community",
1161
+ "type": "address",
1162
+ "indexed": true,
1163
+ "internalType": "address"
1164
+ },
1165
+ {
1166
+ "name": "timestamp",
1167
+ "type": "uint256",
1168
+ "indexed": false,
1169
+ "internalType": "uint256"
1170
+ }
1171
+ ],
1172
+ "anonymous": false
1173
+ },
1174
+ {
1175
+ "type": "event",
1176
+ "name": "MinLockAmountUpdated",
1177
+ "inputs": [
1178
+ {
1179
+ "name": "oldAmount",
1180
+ "type": "uint256",
1181
+ "indexed": false,
1182
+ "internalType": "uint256"
1183
+ },
1184
+ {
1185
+ "name": "newAmount",
1186
+ "type": "uint256",
1187
+ "indexed": false,
1188
+ "internalType": "uint256"
1189
+ },
1190
+ {
1191
+ "name": "timestamp",
1192
+ "type": "uint256",
1193
+ "indexed": false,
1194
+ "internalType": "uint256"
1195
+ }
1196
+ ],
1197
+ "anonymous": false
1198
+ },
1199
+ {
1200
+ "type": "event",
1201
+ "name": "MintFeeUpdated",
1202
+ "inputs": [
1203
+ {
1204
+ "name": "oldFee",
1205
+ "type": "uint256",
1206
+ "indexed": false,
1207
+ "internalType": "uint256"
1208
+ },
1209
+ {
1210
+ "name": "newFee",
1211
+ "type": "uint256",
1212
+ "indexed": false,
1213
+ "internalType": "uint256"
1214
+ },
1215
+ {
1216
+ "name": "timestamp",
1217
+ "type": "uint256",
1218
+ "indexed": false,
1219
+ "internalType": "uint256"
1220
+ }
1221
+ ],
1222
+ "anonymous": false
1223
+ },
1224
+ {
1225
+ "type": "event",
1226
+ "name": "Paused",
1227
+ "inputs": [
1228
+ {
1229
+ "name": "account",
1230
+ "type": "address",
1231
+ "indexed": false,
1232
+ "internalType": "address"
1233
+ }
1234
+ ],
1235
+ "anonymous": false
1236
+ },
1237
+ {
1238
+ "type": "event",
1239
+ "name": "RegistryUpdated",
1240
+ "inputs": [
1241
+ {
1242
+ "name": "oldRegistry",
1243
+ "type": "address",
1244
+ "indexed": true,
1245
+ "internalType": "address"
1246
+ },
1247
+ {
1248
+ "name": "newRegistry",
1249
+ "type": "address",
1250
+ "indexed": true,
1251
+ "internalType": "address"
1252
+ },
1253
+ {
1254
+ "name": "timestamp",
1255
+ "type": "uint256",
1256
+ "indexed": false,
1257
+ "internalType": "uint256"
1258
+ }
1259
+ ],
1260
+ "anonymous": false
1261
+ },
1262
+ {
1263
+ "type": "event",
1264
+ "name": "ReputationCalculatorUpdated",
1265
+ "inputs": [
1266
+ {
1267
+ "name": "oldCalculator",
1268
+ "type": "address",
1269
+ "indexed": true,
1270
+ "internalType": "address"
1271
+ },
1272
+ {
1273
+ "name": "newCalculator",
1274
+ "type": "address",
1275
+ "indexed": true,
1276
+ "internalType": "address"
1277
+ },
1278
+ {
1279
+ "name": "timestamp",
1280
+ "type": "uint256",
1281
+ "indexed": false,
1282
+ "internalType": "uint256"
1283
+ }
1284
+ ],
1285
+ "anonymous": false
1286
+ },
1287
+ {
1288
+ "type": "event",
1289
+ "name": "SBTBurned",
1290
+ "inputs": [
1291
+ {
1292
+ "name": "user",
1293
+ "type": "address",
1294
+ "indexed": true,
1295
+ "internalType": "address"
1296
+ },
1297
+ {
1298
+ "name": "tokenId",
1299
+ "type": "uint256",
1300
+ "indexed": true,
1301
+ "internalType": "uint256"
1302
+ },
1303
+ {
1304
+ "name": "grossAmount",
1305
+ "type": "uint256",
1306
+ "indexed": false,
1307
+ "internalType": "uint256"
1308
+ },
1309
+ {
1310
+ "name": "netAmount",
1311
+ "type": "uint256",
1312
+ "indexed": false,
1313
+ "internalType": "uint256"
1314
+ },
1315
+ {
1316
+ "name": "timestamp",
1317
+ "type": "uint256",
1318
+ "indexed": false,
1319
+ "internalType": "uint256"
1320
+ }
1321
+ ],
1322
+ "anonymous": false
1323
+ },
1324
+ {
1325
+ "type": "event",
1326
+ "name": "SBTMinted",
1327
+ "inputs": [
1328
+ {
1329
+ "name": "user",
1330
+ "type": "address",
1331
+ "indexed": true,
1332
+ "internalType": "address"
1333
+ },
1334
+ {
1335
+ "name": "tokenId",
1336
+ "type": "uint256",
1337
+ "indexed": true,
1338
+ "internalType": "uint256"
1339
+ },
1340
+ {
1341
+ "name": "firstCommunity",
1342
+ "type": "address",
1343
+ "indexed": true,
1344
+ "internalType": "address"
1345
+ },
1346
+ {
1347
+ "name": "timestamp",
1348
+ "type": "uint256",
1349
+ "indexed": false,
1350
+ "internalType": "uint256"
1351
+ }
1352
+ ],
1353
+ "anonymous": false
1354
+ },
1355
+ {
1356
+ "type": "event",
1357
+ "name": "Transfer",
1358
+ "inputs": [
1359
+ {
1360
+ "name": "from",
1361
+ "type": "address",
1362
+ "indexed": true,
1363
+ "internalType": "address"
1364
+ },
1365
+ {
1366
+ "name": "to",
1367
+ "type": "address",
1368
+ "indexed": true,
1369
+ "internalType": "address"
1370
+ },
1371
+ {
1372
+ "name": "tokenId",
1373
+ "type": "uint256",
1374
+ "indexed": true,
1375
+ "internalType": "uint256"
1376
+ }
1377
+ ],
1378
+ "anonymous": false
1379
+ },
1380
+ {
1381
+ "type": "event",
1382
+ "name": "Unpaused",
1383
+ "inputs": [
1384
+ {
1385
+ "name": "account",
1386
+ "type": "address",
1387
+ "indexed": false,
1388
+ "internalType": "address"
1389
+ }
1390
+ ],
1391
+ "anonymous": false
1392
+ },
1393
+ {
1394
+ "type": "error",
1395
+ "name": "E",
1396
+ "inputs": []
1397
+ },
1398
+ {
1399
+ "type": "error",
1400
+ "name": "ERC721IncorrectOwner",
1401
+ "inputs": [
1402
+ {
1403
+ "name": "sender",
1404
+ "type": "address",
1405
+ "internalType": "address"
1406
+ },
1407
+ {
1408
+ "name": "tokenId",
1409
+ "type": "uint256",
1410
+ "internalType": "uint256"
1411
+ },
1412
+ {
1413
+ "name": "owner",
1414
+ "type": "address",
1415
+ "internalType": "address"
1416
+ }
1417
+ ]
1418
+ },
1419
+ {
1420
+ "type": "error",
1421
+ "name": "ERC721InsufficientApproval",
1422
+ "inputs": [
1423
+ {
1424
+ "name": "operator",
1425
+ "type": "address",
1426
+ "internalType": "address"
1427
+ },
1428
+ {
1429
+ "name": "tokenId",
1430
+ "type": "uint256",
1431
+ "internalType": "uint256"
1432
+ }
1433
+ ]
1434
+ },
1435
+ {
1436
+ "type": "error",
1437
+ "name": "ERC721InvalidApprover",
1438
+ "inputs": [
1439
+ {
1440
+ "name": "approver",
1441
+ "type": "address",
1442
+ "internalType": "address"
1443
+ }
1444
+ ]
1445
+ },
1446
+ {
1447
+ "type": "error",
1448
+ "name": "ERC721InvalidOperator",
1449
+ "inputs": [
1450
+ {
1451
+ "name": "operator",
1452
+ "type": "address",
1453
+ "internalType": "address"
1454
+ }
1455
+ ]
1456
+ },
1457
+ {
1458
+ "type": "error",
1459
+ "name": "ERC721InvalidOwner",
1460
+ "inputs": [
1461
+ {
1462
+ "name": "owner",
1463
+ "type": "address",
1464
+ "internalType": "address"
1465
+ }
1466
+ ]
1467
+ },
1468
+ {
1469
+ "type": "error",
1470
+ "name": "ERC721InvalidReceiver",
1471
+ "inputs": [
1472
+ {
1473
+ "name": "receiver",
1474
+ "type": "address",
1475
+ "internalType": "address"
1476
+ }
1477
+ ]
1478
+ },
1479
+ {
1480
+ "type": "error",
1481
+ "name": "ERC721InvalidSender",
1482
+ "inputs": [
1483
+ {
1484
+ "name": "sender",
1485
+ "type": "address",
1486
+ "internalType": "address"
1487
+ }
1488
+ ]
1489
+ },
1490
+ {
1491
+ "type": "error",
1492
+ "name": "ERC721NonexistentToken",
1493
+ "inputs": [
1494
+ {
1495
+ "name": "tokenId",
1496
+ "type": "uint256",
1497
+ "internalType": "uint256"
1498
+ }
1499
+ ]
1500
+ },
1501
+ {
1502
+ "type": "error",
1503
+ "name": "EnforcedPause",
1504
+ "inputs": []
1505
+ },
1506
+ {
1507
+ "type": "error",
1508
+ "name": "ExpectedPause",
1509
+ "inputs": []
1510
+ },
1511
+ {
1512
+ "type": "error",
1513
+ "name": "ReentrancyGuardReentrantCall",
1514
+ "inputs": []
1515
+ }
1516
+ ],
1517
+ "bytecode": "0x60c06040523461020a576132a36080813803918261001c81610428565b93849283398101031261020a576100328161044d565b9061003f6020820161044d565b61005760606100506040850161044d565b930161044d565b926100626040610428565b601981527f4d7963656c69756d20536f756c20426f756e6420546f6b656e0000000000000060208201526100966040610428565b6005815264135e54d09560da1b6020820152815190916001600160401b03821161032f575f5490600182811c9216801561041e575b60208310146103115781601f8493116103b1575b50602090601f831160011461034e575f92610343575b50508160011b915f199060031b1c1916175f555b8051906001600160401b03821161032f5760015490600182811c92168015610325575b60208310146103115781601f8493116102a3575b50602090601f831160011461023d575f92610232575b50508160011b915f199060031b1c1916176001555b600160068190556007805460ff19169055601255670429d069189e000060135567016345785d8a00006014556001600160a01b038116151580610220575b8061020e575b1561020a5760805260a052600e80546001600160a01b039283166001600160a01b031991821617909155600f8054939092169216919091179055604051612e419081610462823960805181610d70015260a05181610cf40152f35b5f80fd5b506001600160a01b03841615156101af565b506001600160a01b03821615156101a9565b015190505f80610156565b60015f9081528281209350601f198516905b81811061028b5750908460019594939210610273575b505050811b0160015561016b565b01515f1960f88460031b161c191690555f8080610265565b9293602060018192878601518155019501930161024f565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610307575b90601f859493920160051c01905b8181106102f95750610140565b5f81558493506001016102ec565b90915081906102de565b634e487b7160e01b5f52602260045260245ffd5b91607f169161012c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100f5565b5f8080528281209350601f198516905b8181106103995750908460019594939210610381575b505050811b015f55610109565b01515f1960f88460031b161c191690555f8080610374565b9293602060018192878601518155019501930161035e565b5f80529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f840160051c81019160208510610414575b90601f859493920160051c01905b81811061040657506100df565b5f81558493506001016103f9565b90915081906103eb565b91607f16916100cb565b6040519190601f01601f191682016001600160401b0381118382101761032f57604052565b51906001600160a01b038216820361020a5756fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611a535750806306433b1b14611a2b57806306fdde0314611989578063081812fc1461194d5780630880427514611930578063095ea7b3146118465780630f68ae40146117dc57806313966db5146117bf57806323b872dd146117a85780632d5a7f4f14610d235780632f7c88f514611650578063374e7fa3146114515780633e3e6842146114125780633f4ba83a1461137357806342842e0e1461134a5780634f8cc065146112ca57806354fd4d501461127d578063556697da146111a757806355f804b31461103f5780635afc4b5c146110095780635bb5bf0c14610fd35780635c975abb14610fb15780636352211e14610f8157806370a0823114610f3057806371eb90a114610e6d57806375794a3c14610e50578063776fafac14610df45780637e21579114610d9f5780637f6b337b14610d5b57806380f4b8c814610d23578063826600ce14610cdf5780638456cb5914610c4d5780638ceebd8f14610ac6578063908c101814610a8257806395d89b41146109b8578063a1141b0714610974578063a22cb465146108d0578063a610965014610851578063a91ee0dc146107c6578063b88d4fde14610767578063bead05131461072e578063bf1fb0f214610689578063c0d0aa6914610661578063c580163e1461060b578063c87b56dd14610363578063ccbc10d01461033b578063d977b66b146102fa578063e985e9c5146102a35763eddd0d9c14610237575f80fd5b3461029f57602036600319011261029f577fd3950a5507479ea19c5c7766f5191546ace60f0a00dc360d52ce083b58f2233160043561028160018060a01b03600f54163314611cf8565b601454908060145561029a604051928392429184611d2f565b0390a1005b5f80fd5b3461029f57604036600319011261029f576102bc611ae2565b6102c4611af8565b9060018060a01b03165f52600560205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461029f57604036600319011261029f57610339610316611ae2565b61031e611af8565b9061033460018060a01b03600e54163314611f10565b612cb2565b005b3461029f575f36600319011261029f576010546040516001600160a01b039091168152602090f35b3461029f57602036600319011261029f5760043561038081612a5a565b5060405160115490915f8361039484611cc0565b9182825260208201946001811690815f146105ef57506001146105a3575b6103be92500384611c4c565b82511561058757915f90838072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015610561575b50600a906904ee2d6d415b85acef8160201b811015610545575b662386f26fc10000811015610531575b6305f5e100811015610520575b612710811015610511575b6064811015610503575b10156104f9575b6001820193600a602161046761045188611c6f565b9761045f604051998a611c4c565b808952611c6f565b602088019590601f19013687378701015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049081156104a657600a90610478565b505060206104e1926104f5956040519586945180918587015e840190838201905f8252519283915e01015f815203601f198101835282611c4c565b604051918291602083526020830190611abe565b0390f35b906001019061043c565b606460029104930192610435565b6127106004910493019261042b565b6305f5e10060089104930192610420565b662386f26fc1000060109104930192610413565b602093909301926904ee2d6d415b85acef8160201b9004610403565b6040935072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b90049050600a6103e9565b5050506104f560405161059b602082611c4c565b5f81526104e1565b5060115f90815290915f516020612d8c5f395f51905f525b8183106105d35750509060206103be928201016103b2565b6020919350806001915483858a010152019101909185926105bb565b60ff19168652506103be92151560051b820160200190506103b2565b3461029f5761064a61061c36611b89565b92909150610628612a8e565b610630612bb8565b61064560018060a01b03600e54163314611f10565b6128b5565b600160065560408051928352901515602083015290f35b3461029f575f36600319011261029f57600f546040516001600160a01b039091168152602090f35b3461029f57602036600319011261029f575f60606040516106a981611c31565b82815282602082015282604082015201526004355f526009602052608060405f206040516106d681611c31565b81546001600160a01b0390811680835260018401548216602080850191825260028601546040808701918252600390970154606096870190815287519485529251909416908301529151938101939093525190820152f35b3461029f57602036600319011261029f5761076061074a611ae2565b610752612a8e565b61075a612bb8565b33612cb2565b6001600655005b3461029f57608036600319011261029f57610780611ae2565b610788611af8565b606435916001600160401b03831161029f573660238401121561029f576107bc610339933690602481600401359101611c8a565b9160443591612775565b3461029f57602036600319011261029f576107df611ae2565b6107f460018060a01b03600f54163314611cf8565b6001600160a01b0316801561029f57600e80546001600160a01b0319811683179091556040514281526001600160a01b03909116907f724c89272c35417e239c6cd89ada342e0717632938f38b47eaacecacf291ace290602090a3005b3461029f57602036600319011261029f5761086a611ae2565b61087f60018060a01b03600f54163314611cf8565b601080546001600160a01b039283166001600160a01b031982168117909255604051428152919216907fb71a92720c720f655d24a8ebbeeb4c9875d85189ca58d32cb0e6997aa5e6c29190602090a3005b3461029f57604036600319011261029f576108e9611ae2565b602435908115159081830361029f576001600160a01b03169182156109615761093390335f52600560205260405f20845f5260205260405f209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b82630b61174360e31b5f5260045260245ffd5b3461029f57604036600319011261029f5761098d611af8565b6004355f52600b60205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b3461029f575f36600319011261029f576040515f6001546109d881611cc0565b8084529060018116908115610a5e5750600114610a00575b6104f5836104e181850382611c4c565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210610a44575090915081016020016104e16109f0565b919260018160209254838588010152019101909291610a2c565b60ff191660208086019190915291151560051b840190910191506104e190506109f0565b3461029f57604036600319011261029f57610a9b611af8565b6004355f52600d60205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b3461029f57602036600319011261029f576004355f52600a60205260405f208054610af081612520565b91610afe6040519384611c4c565b81835260208301905f5260205f205f915b838310610c2f575f85815b8151811015610b53576060610b2f8284612761565b510151610b3f575b600101610b1a565b91610b4b60019161215f565b929050610b37565b50610b76610b6083612520565b92610b6e6040519485611c4c565b808452612520565b602083019190601f19013683375f5f5b8251811015610be0576060610b9b8285612761565b510151610bab575b600101610b86565b90600190610bd8906001600160a01b03610bc58587612761565b515116610bd28289612761565b5261215f565b919050610ba3565b50505090604051918291602083019060208452518091526040830191905f5b818110610c0d575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610bff565b60056020600192610c3f85612537565b815201920192019190610b0f565b3461029f575f36600319011261029f57610c7260018060a01b03600f54163314611cf8565b610c7a612a8e565b600160ff1960075416176007557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a2005b3461029f575f36600319011261029f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029f57602036600319011261029f576001600160a01b03610d44611ae2565b165f526008602052602060405f2054604051908152f35b3461029f575f36600319011261029f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029f57606036600319011261029f57610db8611af8565b6004355f52600c60205260405f209060018060a01b03165f5260205260405f206044355f52602052602060ff60405f2054166040519015158152f35b3461029f57602036600319011261029f576004355f526009602052608060405f2060018060a01b038154169060018060a01b03600182015416906003600282015491015491604051938452602084015260408301526060820152f35b3461029f575f36600319011261029f576020601254604051908152f35b3461029f57604036600319011261029f57600435610e89611af8565b9060606080604051610e9a81611c16565b5f81525f60208201525f60408201525f838201520152805f52600b60205260405f2060018060a01b0383165f5260205260405f205490805f52600a60205260405f205482101561029f57610f0291610efc915f52600a60205260405f20611ee3565b50612537565b805190916001600160a01b0391821691160361029f576104f590604051918291602083526020830190611bcf565b3461029f57602036600319011261029f576001600160a01b03610f51611ae2565b168015610f6e575f526003602052602060405f2054604051908152f35b6322718ad960e21b5f525f60045260245ffd5b3461029f57602036600319011261029f576020610f9f600435612a5a565b6040516001600160a01b039091168152f35b3461029f575f36600319011261029f57602060ff600754166040519015158152f35b3461029f57604036600319011261029f576020610fff610ff1611ae2565b610ff9611af8565b906126c3565b6040519015158152f35b3461029f57602036600319011261029f57610339611025611ae2565b61103a60018060a01b03600e54163314611f10565b61261f565b3461029f57602036600319011261029f576004356001600160401b03811161029f5761106f903690600401611b5c565b61108460018060a01b03600f54163314611cf8565b6001600160401b0381116111935761109d601154611cc0565b601f8111611143575b505f601f82116001146110e45781906110d4935f926110d9575b50508160011b915f199060031b1c19161790565b601155005b0135905083806110c0565b601f1982169260115f5260205f20915f5b85811061112b57508360019510611112575b505050811b01601155005b01355f19600384901b60f8161c19169055828080611107565b909260206001819286860135815501940191016110f5565b60115f525f516020612d8c5f395f51905f52601f830160051c81019160208410611189575b601f0160051c01905b81811061117e57506110a6565b5f8155600101611171565b9091508190611168565b634e487b7160e01b5f52604160045260245ffd5b3461029f57602036600319011261029f576004355f52600a60205260405f208054906111d282612520565b916111e06040519384611c4c565b8083526020830180925f5260205f205f915b83831061125f57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b82821061123057505050500390f35b9193600191939550602061124f8192603f198a82030186528851611bcf565b9601920192018594939192611221565b6005602060019261126f85612537565b8152019201920191906111f2565b3461029f575f36600319011261029f576104f560405161129e604082611c4c565b600b81526a26bca9a12a16999718971960a91b6020820152604051918291602083526020830190611abe565b3461029f57602036600319011261029f576112e3611ae2565b600f54906001600160a01b038216906112fd338314611cf8565b6001600160a01b031691821561029f576001600160a01b0319168217600f556040514281527f90de8705b1aaf3966be0e8ec8acf9aed10a6d3d0d572ec8f96112409e2820c6190602090a3005b3461029f5761033961135b36611b22565b906040519261136b602085611c4c565b5f8452612775565b3461029f575f36600319011261029f5761139860018060a01b03600f54163314611cf8565b60075460ff8116156114035760ff19166007557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a2005b638dfc202b60e01b5f5260045ffd5b3461029f5761064a61142336611b89565b9290915061142f612a8e565b611437612bb8565b61144c60018060a01b03600e54163314611f10565b612189565b3461029f57602036600319011261029f5761146a611ae2565b611472612a8e565b61147a612bb8565b61148f60018060a01b03600e54163314611f10565b6001600160a01b03165f818152600860205260409020549081151580611636575b1561029f57815f52600a60205260405f205f5b8154811015611533578060ff60036114dd60019486611ee3565b500154166114ec575b016114c3565b60036114f88285611ee3565b5001805460ff1916905561150c8184611ee3565b50828060a01b03905416855f516020612dac5f395f51905f526020604051428152a36114e6565b5050805f5260086020525f6040812055815f52600260205260018060a01b0360405f20541615801561162e575b1561029f575f828152600260205260409020546001600160a01b0316801590811561160d575b5f84815260026020526040812080546001600160a01b03191690558490825f516020612dcc5f395f51905f528280a4506115fa577f108d98610c6944880c68d31a01ab6252b635e7c7a9728687f31e68a76538c86560606013546040519081525f6020820152426040820152a36001600655005b50637e27328960e01b5f5260045260245ffd5b61161684612d6e565b805f52600360205260405f205f198154019055611586565b506001611560565b50806001600160a01b0361164984612a5a565b16146114b0565b3461029f57602036600319011261029f57611669611ae2565b611671612a8e565b61167a33612ac1565b1561029f576001600160a01b03165f90815260086020526040902054801561029f575f818152600b60209081526040808320338452825280832054848452600a909252909120548110908161177f575b501561029f575f818152600d602090815260408083203384529091529020548015908115611754575b501561029f57805f52600d60205260405f2060018060a01b0333165f5260205260405f204290556040519062093a80420482524260208301527f0bd2c5444bc0126737809a3970e1c3bc8cf29e5efb7d5448cbaa6a9c1af8120760403393a3005b905061012c810180911161176b57421015826116f3565b634e487b7160e01b5f52601160045260245ffd5b6117959150825f52600a60205260405f20611ee3565b50546001600160a01b03163314826116ca565b3461029f576103396117b936611b22565b91611d45565b3461029f575f36600319011261029f576020601454604051908152f35b3461029f57602036600319011261029f5760043561180560018060a01b03600f54163314611cf8565b801561029f577f5d1f56e31e5dc1f29354822b887b1463ececf7edfad7c39216980b7dfd7ea97d90601354908060135561029a604051928392429184611d2f565b3461029f57604036600319011261029f5761185f611ae2565b60243561186b81612a5a565b3315158061191d575b806118f0575b6118dd5781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f90815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b5f523360045260245ffd5b506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff161561187a565b506001600160a01b038116331415611874565b3461029f575f36600319011261029f576020601354604051908152f35b3461029f57602036600319011261029f5760043561196a81612a5a565b505f526004602052602060018060a01b0360405f205416604051908152f35b3461029f575f36600319011261029f576040515f5f546119a881611cc0565b8084529060018116908115610a5e57506001146119cf576104f5836104e181850382611c4c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210611a11575090915081016020016104e16109f0565b9192600181602092548385880101520191019092916119f9565b3461029f575f36600319011261029f57600e546040516001600160a01b039091168152602090f35b3461029f57602036600319011261029f576004359063ffffffff60e01b821680920361029f576020916380ac58cd60e01b8114908115611aad575b8115611a9c575b5015158152f35b6301ffc9a760e01b14905083611a95565b635b5e139f60e01b81149150611a8e565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361029f57565b602435906001600160a01b038216820361029f57565b35906001600160a01b038216820361029f57565b606090600319011261029f576004356001600160a01b038116810361029f57906024356001600160a01b038116810361029f579060443590565b9181601f8401121561029f578235916001600160401b03831161029f576020838186019501011161029f57565b606060031982011261029f576004356001600160a01b038116810361029f579160243591604435906001600160401b03821161029f57611bcb91600401611b5c565b9091565b9060a06080611c1393600180841b03815116845260208101516020850152604081015160408501526060810151151560608501520151918160808201520190611abe565b90565b60a081019081106001600160401b0382111761119357604052565b608081019081106001600160401b0382111761119357604052565b601f909101601f19168101906001600160401b0382119082101761119357604052565b6001600160401b03811161119357601f01601f191660200190565b929192611c9682611c6f565b91611ca46040519384611c4c565b82948184528183011161029f578281602093845f960137010152565b90600182811c92168015611cee575b6020831014611cda57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611ccf565b15611cff57565b60405162461bcd60e51b81526020600482015260086024820152674f6e6c792044414f60c01b6044820152606490fd5b6040919493926060820195825260208201520152565b6001600160a01b0390911691908215611ed0575f828152600260205260409020546001600160a01b0316158015611ec9575b1561029f575f828152600260205260409020546001600160a01b031692829033151580611e34575b5084611e13575b805f52600360205260405f2060018154019055815f52600260205260405f208160018060a01b0319825416179055845f516020612dcc5f395f51905f525f80a46001600160a01b0316808303611dfb57505050565b6364283d7b60e01b5f5260045260245260445260645ffd5b611e1c82612d6e565b845f52600360205260405f205f198154019055611da6565b90915080611e78575b15611e4a5782905f611d9f565b8284611e6257637e27328960e01b5f5260045260245ffd5b63177e802f60e01b5f523360045260245260445ffd5b503384148015611ea7575b80611e3d57505f838152600460205260409020546001600160a01b03163314611e3d565b505f84815260056020908152604080832033845290915290205460ff16611e83565b505f611d77565b633250574960e11b5f525f60045260245ffd5b8054821015611efc575f52600560205f20910201905f90565b634e487b7160e01b5f52603260045260245ffd5b15611f1757565b60405162461bcd60e51b815260206004820152600d60248201526c4f6e6c7920526567697374727960981b6044820152606490fd5b15611f5357565b60405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103ab9b2b960a11b6044820152606490fd5b919060408382031261029f57611f9c83611b0e565b926020810135906001600160401b03821161029f57019080601f8301121561029f57816020611c1393359101611c8a565b8054919291600160401b81101561119357611fed91600182018155611ee3565b61214c57825181546001600160a01b039091166001600160a01b03199091161781556020830151600182015560408301516002820155606083015160038201805460ff191691151560ff1691909117905560809060040192015191825160018060401b038111611193576120618254611cc0565b601f8111612107575b506020601f82116001146120a957819061209a9394955f9261209e5750508160011b915f199060031b1c19161790565b9055565b015190505f806110c0565b601f19821690835f52805f20915f5b8181106120ef575095836001959697106120d7575b505050811b019055565b01515f1960f88460031b161c191690555f80806120cd565b9192602060018192868b0151815501940192016120b8565b825f5260205f20601f830160051c81019160208410612142575b601f0160051c01905b818110612137575061206a565b5f815560010161212a565b9091508190612121565b634e487b7160e01b5f525f60045260245ffd5b5f19811461176b5760010190565b929190612184602091604086526040860190611abe565b930152565b919290916001600160a01b0381166121a2811515611f4c565b805f52600860205260405f205480155f146123325750601254906121c58261215f565b60125581956001958181019460208287031261029f577ff5491bdb765a4be5a1bdc9bfd09cf61e1b89962ac33ed2e928f11a59a5e72331926123169186916122f3906001600160a01b0361221887611b0e565b16998c60038c6040519261222b84611c31565b8c84526020808501928352426040808701918252606087018481525f8d815260098552828120985189546001600160a01b03199081166001600160a01b03928316178b559751968a01805490981696169590951790955590516002870155925193909401929092558b825260088352908190208790555190979088906122b18282611c4c565b5f8152931161231f575b5050835f52600a865260405f20604051916122d583611c16565b8b835242888401524260408401528d60608401526080830152611fcd565b5f828152600b855260408082206001600160a01b038b1683528652812055612bd8565b604051428152a4565b6123299250611f87565b90505f806122bb565b94939150505f928082019160208184031261029f576001600160a01b0361235882611b0e565b1692865f52600b60205260405f2060018060a01b0385165f5260205260405f2054875f52600a60205260405f20548110806124f8575b6124765750602091826040516123a48282611c4c565b5f81529411612461575b5050855f52600a81526123eb60405f20604051906123cb82611c16565b858252428483015242604083015260016060830152846080830152611fcd565b855f52600a815260405f2054905f19820191821161176b578692600961245c925f516020612dec5f395f51905f5294865f52600b825260405f2060018060a01b0389165f52825260405f2055855f5252600360405f200161244c815461215f565b905560405191829142908361216d565b0390a3565b61246c929350611f87565b9050905f806123ae565b9394969550505050825f52600a60205260ff60036124978360405f20611ee3565b50015416156124a8575b5050905f90565b6124bf600391845f52600a60205260405f20611ee3565b5001600160ff19825416179055815f516020612dec5f395f51905f526060604051604081525f6040820152426020820152a35f806124a1565b50875f52600a6020528461250f8260405f20611ee3565b50546001600160a01b03161461238e565b6001600160401b0381116111935760051b60200190565b9060405161254481611c16565b6004819360018060a01b038154168352600181015460208401526002810154604084015260ff60038201541615156060840152019060405180925f9080549061258c82611cc0565b80855291600181169081156125f857506001146125b9575b5050608092916125b5910384611c4c565b0152565b5f908152602081209092505b8183106125dc5750508101602001816125b56125a4565b60209193508060019154838589010152019101909184926125c5565b60ff191660208681019190915292151560051b850190920192508391506125b590506125a4565b6001600160a01b03165f9081526008602052604090205480156126c057805f52600a60205260405f20905f5b82548110156126bb578060ff600361266560019487611ee3565b50015416612674575b0161264b565b60036126808286611ee3565b5001805460ff191690556126948185611ee3565b50828060a01b03905416835f516020612dac5f395f51905f526020604051428152a361266e565b505050565b50565b6001600160a01b03165f90815260086020526040902054801561275b57805f52600b60205260405f2060018060a01b0383165f5260205260405f205490805f52600a60205260405f20548210156127545761272c91610efc915f52600a60205260405f20611ee3565b80516001600160a01b039283169216919091149081612749575090565b606091500151151590565b5050505f90565b50505f90565b8051821015611efc5760209160051b010190565b9291612782818386611d45565b813b61278f575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906127da906084830190611abe565b03815f865af15f9181612870575b5061283d57503d15612836573d6127fe81611c6f565b9061280c6040519283611c4c565b81523d5f602083013e5b805190816128315782633250574960e11b5f5260045260245ffd5b602001fd5b6060612816565b6001600160e01b03191663757a42ff60e11b0161285e57505f808080612789565b633250574960e11b5f5260045260245ffd5b9091506020813d6020116128ad575b8161288c60209383611c4c565b8101031261029f57516001600160e01b03198116810361029f57905f6127e8565b3d915061287f565b919290916001600160a01b0381166128ce811515611f4c565b805f52600860205260405f205480155f146128f15750601254906121c58261215f565b94939150505f928082019160208184031261029f576001600160a01b0361291782611b0e565b16926020918260405161292a8282611c4c565b5f81529411612a45575b50505f868152600b825260408082206001600160a01b0386168352835280822054888352600a8452912054811080612a1e575b6129875750855f52600a81526123eb60405f20604051906123cb82611c16565b9091868096505f9794959752600a835260ff60036129a88460405f20611ee3565b50015416612a14576129f7612a0c92600a5f516020612dec5f395f51905f5295875f5281815260036129dd8460405f20611ee3565b5001600160ff19825416179055875f525260405f20611ee3565b5060014291015560405191829142908361216d565b0390a3905f90565b5050505050905f90565b50865f52600a825283612a348260405f20611ee3565b50546001600160a01b031614612967565b612a50929350611f87565b9050905f80612934565b5f818152600260205260409020546001600160a01b0316908115612a7c575090565b637e27328960e01b5f5260045260245ffd5b60ff60075416612a9a57565b63d93c066560e01b5f5260045ffd5b9081602091031261029f5751801515810361029f5790565b600e546001600160a01b031690811561275b57604051632474521560e21b81527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c07460048201526001600160a01b039091166024820181905290602081604481865afa5f9181612b97575b50612b915750602090602460405180948193636b10437f60e01b835260048301525afa5f9181612b60575b50611c1357505f90565b612b8391925060203d602011612b8a575b612b7b8183611c4c565b810190612aa9565b905f612b56565b503d612b71565b91505090565b612bb191925060203d602011612b8a57612b7b8183611c4c565b905f612b2b565b600260065414612bc9576002600655565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b0316908115611ed0575f818152600260205260409020546001600160a01b0316158015612cab575b1561029f575f818152600260205260409020546001600160a01b03168015159290919083612c8a575b805f52600360205260405f2060018154019055815f52600260205260405f208160018060a01b0319825416179055825f516020612dcc5f395f51905f525f80a450612c7757565b6339e3563760e11b5f525f60045260245ffd5b612c9382612d6e565b825f52600360205260405f205f198154019055612c30565b505f612c07565b6001600160a01b03165f908152600860205260409020548015612d6a57805f52600b60205260405f2060018060a01b0383165f5260205260405f2054815f52600a60205260405f20548110156126bb57612d1790825f52600a60205260405f20611ee3565b5080546001600160a01b039384169316831480612d5c575b612d3857505050565b60030160ff1981541690555f516020612dac5f395f51905f526020604051428152a3565b5060ff600382015416612d2f565b5050565b5f90815260046020526040902080546001600160a01b031916905556fe31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68ee0396c067d25a2fde86b8e1c13e3995b0940b5f98651052d79fada14ea7dba5ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efdce074e613075d639af3f726477d52ac48d3fbdb03f4aa8a9b1e6cede312db10a2646970667358221220ccf1375812c47a23400616448c6168badb04bc099d22b7fbdefbdbe2731df4f464736f6c634300081c0033"
1518
+ }