@wireio/stake 0.1.1 → 0.1.3

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 (69) hide show
  1. package/lib/stake.browser.js +6681 -115
  2. package/lib/stake.browser.js.map +1 -1
  3. package/lib/stake.d.ts +23 -40
  4. package/lib/stake.js +6684 -120
  5. package/lib/stake.js.map +1 -1
  6. package/lib/stake.m.js +6681 -115
  7. package/lib/stake.m.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.dbg.json +4 -0
  10. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.json +1153 -0
  11. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  12. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IAccounting.json +172 -0
  13. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  14. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
  15. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  16. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
  17. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/ILiqEthBurn.dbg.json +4 -0
  18. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/ILiqEthBurn.json +24 -0
  19. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/ILiqEthMint.dbg.json +4 -0
  20. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/ILiqEthMint.json +35 -0
  21. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  22. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20.json +213 -0
  23. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  24. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.json +138 -0
  25. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  26. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +70 -0
  27. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  28. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +64 -0
  29. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  30. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  31. package/src/assets/ethereum/ABI/liqEth/RewardsERC20.sol/RewardsERC20.dbg.json +4 -0
  32. package/src/assets/ethereum/ABI/liqEth/RewardsERC20.sol/RewardsERC20.json +749 -0
  33. package/src/assets/ethereum/ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.dbg.json +4 -0
  34. package/src/assets/ethereum/ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.json +812 -0
  35. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.dbg.json +4 -0
  36. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.json +10 -0
  37. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.dbg.json +4 -0
  38. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.json +10 -0
  39. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.dbg.json +4 -0
  40. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.json +225 -0
  41. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.dbg.json +4 -0
  42. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.json +10 -0
  43. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.dbg.json +4 -0
  44. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.json +10 -0
  45. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  46. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.json +813 -0
  47. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.dbg.json +4 -0
  48. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.json +651 -0
  49. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.dbg.json +4 -0
  50. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.json +1110 -0
  51. package/src/assets/ethereum/ABI/liqEth/liqEthBurn.sol/LiqEthBurn.dbg.json +4 -0
  52. package/src/assets/ethereum/ABI/liqEth/liqEthBurn.sol/LiqEthBurn.json +391 -0
  53. package/src/assets/ethereum/ABI/liqEth/liqEthMint.sol/LiqEthMint.dbg.json +4 -0
  54. package/src/assets/ethereum/ABI/liqEth/liqEthMint.sol/LiqEthMint.json +402 -0
  55. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.dbg.json +4 -0
  56. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.json +1225 -0
  57. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  58. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +927 -0
  59. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  60. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
  61. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  62. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.json +447 -0
  63. package/src/index.ts +1 -1
  64. package/src/networks/ethereum/contract.ts +53 -90
  65. package/src/networks/ethereum/ethereum.ts +40 -65
  66. package/src/networks/ethereum/types.ts +6 -9
  67. package/src/networks/solana/solana.ts +36 -32
  68. package/src/staker/staker.ts +6 -3
  69. package/src/staker/types.ts +14 -9
@@ -0,0 +1,1225 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "StakingModule",
4
+ "sourceName": "contracts/liqEth/stakingModule.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "bytes32",
10
+ "name": "_withdrawalCreds",
11
+ "type": "bytes32"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_treasury",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "admin",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "bdc",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "address",
30
+ "name": "_acc",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "_depMan",
36
+ "type": "address"
37
+ }
38
+ ],
39
+ "stateMutability": "nonpayable",
40
+ "type": "constructor"
41
+ },
42
+ {
43
+ "inputs": [],
44
+ "name": "AccessControlBadConfirmation",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [
49
+ {
50
+ "internalType": "address",
51
+ "name": "account",
52
+ "type": "address"
53
+ },
54
+ {
55
+ "internalType": "bytes32",
56
+ "name": "neededRole",
57
+ "type": "bytes32"
58
+ }
59
+ ],
60
+ "name": "AccessControlUnauthorizedAccount",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "EnforcedPause",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [],
70
+ "name": "ExpectedPause",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "FailedCall",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [
80
+ {
81
+ "internalType": "uint256",
82
+ "name": "balance",
83
+ "type": "uint256"
84
+ },
85
+ {
86
+ "internalType": "uint256",
87
+ "name": "needed",
88
+ "type": "uint256"
89
+ }
90
+ ],
91
+ "name": "InsufficientBalance",
92
+ "type": "error"
93
+ },
94
+ {
95
+ "inputs": [],
96
+ "name": "ReentrancyGuardReentrantCall",
97
+ "type": "error"
98
+ },
99
+ {
100
+ "anonymous": false,
101
+ "inputs": [
102
+ {
103
+ "indexed": true,
104
+ "internalType": "address",
105
+ "name": "operator",
106
+ "type": "address"
107
+ },
108
+ {
109
+ "indexed": false,
110
+ "internalType": "uint256",
111
+ "name": "amount",
112
+ "type": "uint256"
113
+ }
114
+ ],
115
+ "name": "BondLocked",
116
+ "type": "event"
117
+ },
118
+ {
119
+ "anonymous": false,
120
+ "inputs": [
121
+ {
122
+ "indexed": true,
123
+ "internalType": "address",
124
+ "name": "operator",
125
+ "type": "address"
126
+ },
127
+ {
128
+ "indexed": false,
129
+ "internalType": "uint256",
130
+ "name": "amount",
131
+ "type": "uint256"
132
+ },
133
+ {
134
+ "indexed": false,
135
+ "internalType": "uint256",
136
+ "name": "fee",
137
+ "type": "uint256"
138
+ }
139
+ ],
140
+ "name": "BondUnlocked",
141
+ "type": "event"
142
+ },
143
+ {
144
+ "anonymous": false,
145
+ "inputs": [
146
+ {
147
+ "indexed": true,
148
+ "internalType": "uint256",
149
+ "name": "id",
150
+ "type": "uint256"
151
+ }
152
+ ],
153
+ "name": "Deposited",
154
+ "type": "event"
155
+ },
156
+ {
157
+ "anonymous": false,
158
+ "inputs": [
159
+ {
160
+ "indexed": true,
161
+ "internalType": "uint256",
162
+ "name": "id",
163
+ "type": "uint256"
164
+ },
165
+ {
166
+ "indexed": true,
167
+ "internalType": "address",
168
+ "name": "operator",
169
+ "type": "address"
170
+ }
171
+ ],
172
+ "name": "KeyUploaded",
173
+ "type": "event"
174
+ },
175
+ {
176
+ "anonymous": false,
177
+ "inputs": [
178
+ {
179
+ "indexed": false,
180
+ "internalType": "address",
181
+ "name": "op",
182
+ "type": "address"
183
+ },
184
+ {
185
+ "indexed": false,
186
+ "internalType": "uint256[]",
187
+ "name": "ids",
188
+ "type": "uint256[]"
189
+ }
190
+ ],
191
+ "name": "KeysRemoved",
192
+ "type": "event"
193
+ },
194
+ {
195
+ "anonymous": false,
196
+ "inputs": [
197
+ {
198
+ "indexed": false,
199
+ "internalType": "address",
200
+ "name": "account",
201
+ "type": "address"
202
+ }
203
+ ],
204
+ "name": "Paused",
205
+ "type": "event"
206
+ },
207
+ {
208
+ "anonymous": false,
209
+ "inputs": [
210
+ {
211
+ "indexed": true,
212
+ "internalType": "bytes32",
213
+ "name": "role",
214
+ "type": "bytes32"
215
+ },
216
+ {
217
+ "indexed": true,
218
+ "internalType": "bytes32",
219
+ "name": "previousAdminRole",
220
+ "type": "bytes32"
221
+ },
222
+ {
223
+ "indexed": true,
224
+ "internalType": "bytes32",
225
+ "name": "newAdminRole",
226
+ "type": "bytes32"
227
+ }
228
+ ],
229
+ "name": "RoleAdminChanged",
230
+ "type": "event"
231
+ },
232
+ {
233
+ "anonymous": false,
234
+ "inputs": [
235
+ {
236
+ "indexed": true,
237
+ "internalType": "bytes32",
238
+ "name": "role",
239
+ "type": "bytes32"
240
+ },
241
+ {
242
+ "indexed": true,
243
+ "internalType": "address",
244
+ "name": "account",
245
+ "type": "address"
246
+ },
247
+ {
248
+ "indexed": true,
249
+ "internalType": "address",
250
+ "name": "sender",
251
+ "type": "address"
252
+ }
253
+ ],
254
+ "name": "RoleGranted",
255
+ "type": "event"
256
+ },
257
+ {
258
+ "anonymous": false,
259
+ "inputs": [
260
+ {
261
+ "indexed": true,
262
+ "internalType": "bytes32",
263
+ "name": "role",
264
+ "type": "bytes32"
265
+ },
266
+ {
267
+ "indexed": true,
268
+ "internalType": "address",
269
+ "name": "account",
270
+ "type": "address"
271
+ },
272
+ {
273
+ "indexed": true,
274
+ "internalType": "address",
275
+ "name": "sender",
276
+ "type": "address"
277
+ }
278
+ ],
279
+ "name": "RoleRevoked",
280
+ "type": "event"
281
+ },
282
+ {
283
+ "anonymous": false,
284
+ "inputs": [
285
+ {
286
+ "indexed": true,
287
+ "internalType": "address",
288
+ "name": "operator",
289
+ "type": "address"
290
+ },
291
+ {
292
+ "indexed": false,
293
+ "internalType": "uint256",
294
+ "name": "penalty",
295
+ "type": "uint256"
296
+ }
297
+ ],
298
+ "name": "Slashed",
299
+ "type": "event"
300
+ },
301
+ {
302
+ "anonymous": false,
303
+ "inputs": [
304
+ {
305
+ "indexed": true,
306
+ "internalType": "address",
307
+ "name": "to",
308
+ "type": "address"
309
+ },
310
+ {
311
+ "indexed": false,
312
+ "internalType": "uint256",
313
+ "name": "amount",
314
+ "type": "uint256"
315
+ }
316
+ ],
317
+ "name": "Swept",
318
+ "type": "event"
319
+ },
320
+ {
321
+ "anonymous": false,
322
+ "inputs": [
323
+ {
324
+ "indexed": false,
325
+ "internalType": "bytes",
326
+ "name": "pubkey",
327
+ "type": "bytes"
328
+ },
329
+ {
330
+ "indexed": false,
331
+ "internalType": "uint256",
332
+ "name": "ethAmount",
333
+ "type": "uint256"
334
+ }
335
+ ],
336
+ "name": "TopUpValidator",
337
+ "type": "event"
338
+ },
339
+ {
340
+ "anonymous": false,
341
+ "inputs": [
342
+ {
343
+ "indexed": false,
344
+ "internalType": "address",
345
+ "name": "account",
346
+ "type": "address"
347
+ }
348
+ ],
349
+ "name": "Unpaused",
350
+ "type": "event"
351
+ },
352
+ {
353
+ "anonymous": false,
354
+ "inputs": [
355
+ {
356
+ "indexed": true,
357
+ "internalType": "uint256",
358
+ "name": "id",
359
+ "type": "uint256"
360
+ }
361
+ ],
362
+ "name": "ValidatorForcedExit",
363
+ "type": "event"
364
+ },
365
+ {
366
+ "anonymous": false,
367
+ "inputs": [
368
+ {
369
+ "indexed": true,
370
+ "internalType": "uint256",
371
+ "name": "id",
372
+ "type": "uint256"
373
+ },
374
+ {
375
+ "indexed": false,
376
+ "internalType": "uint64",
377
+ "name": "oldIndex",
378
+ "type": "uint64"
379
+ },
380
+ {
381
+ "indexed": false,
382
+ "internalType": "uint64",
383
+ "name": "newIndex",
384
+ "type": "uint64"
385
+ },
386
+ {
387
+ "indexed": true,
388
+ "internalType": "address",
389
+ "name": "operator",
390
+ "type": "address"
391
+ }
392
+ ],
393
+ "name": "ValidatorIndexUpdated",
394
+ "type": "event"
395
+ },
396
+ {
397
+ "anonymous": false,
398
+ "inputs": [
399
+ {
400
+ "indexed": true,
401
+ "internalType": "uint256",
402
+ "name": "id",
403
+ "type": "uint256"
404
+ }
405
+ ],
406
+ "name": "Withdrawn",
407
+ "type": "event"
408
+ },
409
+ {
410
+ "inputs": [],
411
+ "name": "BDC",
412
+ "outputs": [
413
+ {
414
+ "internalType": "contract IDepositContract",
415
+ "name": "",
416
+ "type": "address"
417
+ }
418
+ ],
419
+ "stateMutability": "view",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [],
424
+ "name": "DEFAULT_ADMIN_ROLE",
425
+ "outputs": [
426
+ {
427
+ "internalType": "bytes32",
428
+ "name": "",
429
+ "type": "bytes32"
430
+ }
431
+ ],
432
+ "stateMutability": "view",
433
+ "type": "function"
434
+ },
435
+ {
436
+ "inputs": [],
437
+ "name": "KEY_REMOVAL_CHARGE",
438
+ "outputs": [
439
+ {
440
+ "internalType": "uint256",
441
+ "name": "",
442
+ "type": "uint256"
443
+ }
444
+ ],
445
+ "stateMutability": "view",
446
+ "type": "function"
447
+ },
448
+ {
449
+ "inputs": [],
450
+ "name": "MANAGER_ROLE",
451
+ "outputs": [
452
+ {
453
+ "internalType": "bytes32",
454
+ "name": "",
455
+ "type": "bytes32"
456
+ }
457
+ ],
458
+ "stateMutability": "view",
459
+ "type": "function"
460
+ },
461
+ {
462
+ "inputs": [],
463
+ "name": "MAX_BATCH",
464
+ "outputs": [
465
+ {
466
+ "internalType": "uint256",
467
+ "name": "",
468
+ "type": "uint256"
469
+ }
470
+ ],
471
+ "stateMutability": "view",
472
+ "type": "function"
473
+ },
474
+ {
475
+ "inputs": [],
476
+ "name": "MAX_REMOVE_BATCH",
477
+ "outputs": [
478
+ {
479
+ "internalType": "uint256",
480
+ "name": "",
481
+ "type": "uint256"
482
+ }
483
+ ],
484
+ "stateMutability": "view",
485
+ "type": "function"
486
+ },
487
+ {
488
+ "inputs": [],
489
+ "name": "accounting",
490
+ "outputs": [
491
+ {
492
+ "internalType": "contract IAccounting",
493
+ "name": "",
494
+ "type": "address"
495
+ }
496
+ ],
497
+ "stateMutability": "view",
498
+ "type": "function"
499
+ },
500
+ {
501
+ "inputs": [
502
+ {
503
+ "internalType": "uint256",
504
+ "name": "nKeys",
505
+ "type": "uint256"
506
+ }
507
+ ],
508
+ "name": "batchDeposit",
509
+ "outputs": [],
510
+ "stateMutability": "payable",
511
+ "type": "function"
512
+ },
513
+ {
514
+ "inputs": [
515
+ {
516
+ "internalType": "uint256",
517
+ "name": "",
518
+ "type": "uint256"
519
+ }
520
+ ],
521
+ "name": "bondCurve",
522
+ "outputs": [
523
+ {
524
+ "internalType": "uint256",
525
+ "name": "",
526
+ "type": "uint256"
527
+ }
528
+ ],
529
+ "stateMutability": "view",
530
+ "type": "function"
531
+ },
532
+ {
533
+ "inputs": [
534
+ {
535
+ "internalType": "bytes",
536
+ "name": "pubkey",
537
+ "type": "bytes"
538
+ },
539
+ {
540
+ "internalType": "bytes32",
541
+ "name": "withdrawalCredentials",
542
+ "type": "bytes32"
543
+ },
544
+ {
545
+ "internalType": "bytes",
546
+ "name": "signature",
547
+ "type": "bytes"
548
+ }
549
+ ],
550
+ "name": "computeRootFor",
551
+ "outputs": [
552
+ {
553
+ "internalType": "bytes32",
554
+ "name": "",
555
+ "type": "bytes32"
556
+ }
557
+ ],
558
+ "stateMutability": "pure",
559
+ "type": "function"
560
+ },
561
+ {
562
+ "inputs": [
563
+ {
564
+ "internalType": "uint64",
565
+ "name": "id",
566
+ "type": "uint64"
567
+ },
568
+ {
569
+ "internalType": "uint64",
570
+ "name": "valIndex",
571
+ "type": "uint64"
572
+ }
573
+ ],
574
+ "name": "confirmLive",
575
+ "outputs": [],
576
+ "stateMutability": "nonpayable",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [],
581
+ "name": "depositCursor",
582
+ "outputs": [
583
+ {
584
+ "internalType": "uint256",
585
+ "name": "",
586
+ "type": "uint256"
587
+ }
588
+ ],
589
+ "stateMutability": "view",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [],
594
+ "name": "depositManager",
595
+ "outputs": [
596
+ {
597
+ "internalType": "contract IDepositManager",
598
+ "name": "",
599
+ "type": "address"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ {
608
+ "internalType": "uint64",
609
+ "name": "valIndex",
610
+ "type": "uint64"
611
+ }
612
+ ],
613
+ "name": "getKeyMetaByindex",
614
+ "outputs": [
615
+ {
616
+ "internalType": "bool",
617
+ "name": "exists",
618
+ "type": "bool"
619
+ },
620
+ {
621
+ "internalType": "uint256",
622
+ "name": "id",
623
+ "type": "uint256"
624
+ },
625
+ {
626
+ "internalType": "address",
627
+ "name": "operator",
628
+ "type": "address"
629
+ },
630
+ {
631
+ "internalType": "uint8",
632
+ "name": "status",
633
+ "type": "uint8"
634
+ }
635
+ ],
636
+ "stateMutability": "view",
637
+ "type": "function"
638
+ },
639
+ {
640
+ "inputs": [
641
+ {
642
+ "internalType": "bytes32",
643
+ "name": "role",
644
+ "type": "bytes32"
645
+ }
646
+ ],
647
+ "name": "getRoleAdmin",
648
+ "outputs": [
649
+ {
650
+ "internalType": "bytes32",
651
+ "name": "",
652
+ "type": "bytes32"
653
+ }
654
+ ],
655
+ "stateMutability": "view",
656
+ "type": "function"
657
+ },
658
+ {
659
+ "inputs": [
660
+ {
661
+ "internalType": "bytes32",
662
+ "name": "role",
663
+ "type": "bytes32"
664
+ },
665
+ {
666
+ "internalType": "address",
667
+ "name": "account",
668
+ "type": "address"
669
+ }
670
+ ],
671
+ "name": "grantRole",
672
+ "outputs": [],
673
+ "stateMutability": "nonpayable",
674
+ "type": "function"
675
+ },
676
+ {
677
+ "inputs": [
678
+ {
679
+ "internalType": "bytes32",
680
+ "name": "role",
681
+ "type": "bytes32"
682
+ },
683
+ {
684
+ "internalType": "address",
685
+ "name": "account",
686
+ "type": "address"
687
+ }
688
+ ],
689
+ "name": "hasRole",
690
+ "outputs": [
691
+ {
692
+ "internalType": "bool",
693
+ "name": "",
694
+ "type": "bool"
695
+ }
696
+ ],
697
+ "stateMutability": "view",
698
+ "type": "function"
699
+ },
700
+ {
701
+ "inputs": [
702
+ {
703
+ "internalType": "uint64",
704
+ "name": "",
705
+ "type": "uint64"
706
+ }
707
+ ],
708
+ "name": "keyIdByValindex",
709
+ "outputs": [
710
+ {
711
+ "internalType": "uint256",
712
+ "name": "",
713
+ "type": "uint256"
714
+ }
715
+ ],
716
+ "stateMutability": "view",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [
721
+ {
722
+ "internalType": "uint256",
723
+ "name": "",
724
+ "type": "uint256"
725
+ }
726
+ ],
727
+ "name": "keys",
728
+ "outputs": [
729
+ {
730
+ "internalType": "bytes",
731
+ "name": "pubkey",
732
+ "type": "bytes"
733
+ },
734
+ {
735
+ "internalType": "bytes",
736
+ "name": "signature",
737
+ "type": "bytes"
738
+ },
739
+ {
740
+ "internalType": "bytes32",
741
+ "name": "depositDataRoot",
742
+ "type": "bytes32"
743
+ },
744
+ {
745
+ "internalType": "address",
746
+ "name": "operator",
747
+ "type": "address"
748
+ },
749
+ {
750
+ "internalType": "enum StakingModule.VStatus",
751
+ "name": "status",
752
+ "type": "uint8"
753
+ },
754
+ {
755
+ "internalType": "uint64",
756
+ "name": "valIndex",
757
+ "type": "uint64"
758
+ }
759
+ ],
760
+ "stateMutability": "view",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [
765
+ {
766
+ "internalType": "address",
767
+ "name": "operator",
768
+ "type": "address"
769
+ },
770
+ {
771
+ "internalType": "uint256",
772
+ "name": "tokenAmt",
773
+ "type": "uint256"
774
+ },
775
+ {
776
+ "internalType": "uint256",
777
+ "name": "deadline",
778
+ "type": "uint256"
779
+ },
780
+ {
781
+ "internalType": "uint8",
782
+ "name": "v",
783
+ "type": "uint8"
784
+ },
785
+ {
786
+ "internalType": "bytes32",
787
+ "name": "r",
788
+ "type": "bytes32"
789
+ },
790
+ {
791
+ "internalType": "bytes32",
792
+ "name": "s",
793
+ "type": "bytes32"
794
+ }
795
+ ],
796
+ "name": "lockBond",
797
+ "outputs": [],
798
+ "stateMutability": "nonpayable",
799
+ "type": "function"
800
+ },
801
+ {
802
+ "inputs": [
803
+ {
804
+ "internalType": "uint256",
805
+ "name": "id",
806
+ "type": "uint256"
807
+ }
808
+ ],
809
+ "name": "markWithdrawn",
810
+ "outputs": [],
811
+ "stateMutability": "nonpayable",
812
+ "type": "function"
813
+ },
814
+ {
815
+ "inputs": [],
816
+ "name": "nextId",
817
+ "outputs": [
818
+ {
819
+ "internalType": "uint256",
820
+ "name": "",
821
+ "type": "uint256"
822
+ }
823
+ ],
824
+ "stateMutability": "view",
825
+ "type": "function"
826
+ },
827
+ {
828
+ "inputs": [
829
+ {
830
+ "internalType": "address",
831
+ "name": "",
832
+ "type": "address"
833
+ }
834
+ ],
835
+ "name": "operators",
836
+ "outputs": [
837
+ {
838
+ "internalType": "uint32",
839
+ "name": "pendingKeys",
840
+ "type": "uint32"
841
+ },
842
+ {
843
+ "internalType": "uint32",
844
+ "name": "activeKeys",
845
+ "type": "uint32"
846
+ },
847
+ {
848
+ "internalType": "uint64",
849
+ "name": "lastDepositTs",
850
+ "type": "uint64"
851
+ }
852
+ ],
853
+ "stateMutability": "view",
854
+ "type": "function"
855
+ },
856
+ {
857
+ "inputs": [],
858
+ "name": "pause",
859
+ "outputs": [],
860
+ "stateMutability": "nonpayable",
861
+ "type": "function"
862
+ },
863
+ {
864
+ "inputs": [],
865
+ "name": "paused",
866
+ "outputs": [
867
+ {
868
+ "internalType": "bool",
869
+ "name": "",
870
+ "type": "bool"
871
+ }
872
+ ],
873
+ "stateMutability": "view",
874
+ "type": "function"
875
+ },
876
+ {
877
+ "inputs": [],
878
+ "name": "pendingCount",
879
+ "outputs": [
880
+ {
881
+ "internalType": "uint32",
882
+ "name": "",
883
+ "type": "uint32"
884
+ }
885
+ ],
886
+ "stateMutability": "view",
887
+ "type": "function"
888
+ },
889
+ {
890
+ "inputs": [
891
+ {
892
+ "internalType": "bytes32",
893
+ "name": "",
894
+ "type": "bytes32"
895
+ }
896
+ ],
897
+ "name": "pubkeyUsed",
898
+ "outputs": [
899
+ {
900
+ "internalType": "bool",
901
+ "name": "",
902
+ "type": "bool"
903
+ }
904
+ ],
905
+ "stateMutability": "view",
906
+ "type": "function"
907
+ },
908
+ {
909
+ "inputs": [
910
+ {
911
+ "internalType": "uint256[]",
912
+ "name": "ids",
913
+ "type": "uint256[]"
914
+ }
915
+ ],
916
+ "name": "removeKeys",
917
+ "outputs": [],
918
+ "stateMutability": "nonpayable",
919
+ "type": "function"
920
+ },
921
+ {
922
+ "inputs": [
923
+ {
924
+ "internalType": "bytes32",
925
+ "name": "role",
926
+ "type": "bytes32"
927
+ },
928
+ {
929
+ "internalType": "address",
930
+ "name": "callerConfirmation",
931
+ "type": "address"
932
+ }
933
+ ],
934
+ "name": "renounceRole",
935
+ "outputs": [],
936
+ "stateMutability": "nonpayable",
937
+ "type": "function"
938
+ },
939
+ {
940
+ "inputs": [
941
+ {
942
+ "internalType": "bytes32",
943
+ "name": "role",
944
+ "type": "bytes32"
945
+ },
946
+ {
947
+ "internalType": "address",
948
+ "name": "account",
949
+ "type": "address"
950
+ }
951
+ ],
952
+ "name": "revokeRole",
953
+ "outputs": [],
954
+ "stateMutability": "nonpayable",
955
+ "type": "function"
956
+ },
957
+ {
958
+ "inputs": [
959
+ {
960
+ "internalType": "uint64",
961
+ "name": "id",
962
+ "type": "uint64"
963
+ },
964
+ {
965
+ "internalType": "uint64",
966
+ "name": "newValIndex",
967
+ "type": "uint64"
968
+ }
969
+ ],
970
+ "name": "setIndex",
971
+ "outputs": [],
972
+ "stateMutability": "nonpayable",
973
+ "type": "function"
974
+ },
975
+ {
976
+ "inputs": [
977
+ {
978
+ "internalType": "address",
979
+ "name": "t",
980
+ "type": "address"
981
+ }
982
+ ],
983
+ "name": "setTreasury",
984
+ "outputs": [],
985
+ "stateMutability": "nonpayable",
986
+ "type": "function"
987
+ },
988
+ {
989
+ "inputs": [
990
+ {
991
+ "internalType": "uint64",
992
+ "name": "d",
993
+ "type": "uint64"
994
+ }
995
+ ],
996
+ "name": "setUnlockDelay",
997
+ "outputs": [],
998
+ "stateMutability": "nonpayable",
999
+ "type": "function"
1000
+ },
1001
+ {
1002
+ "inputs": [
1003
+ {
1004
+ "internalType": "bytes32",
1005
+ "name": "creds",
1006
+ "type": "bytes32"
1007
+ }
1008
+ ],
1009
+ "name": "setWithdrawalCreds",
1010
+ "outputs": [],
1011
+ "stateMutability": "nonpayable",
1012
+ "type": "function"
1013
+ },
1014
+ {
1015
+ "inputs": [
1016
+ {
1017
+ "internalType": "address",
1018
+ "name": "operator",
1019
+ "type": "address"
1020
+ },
1021
+ {
1022
+ "internalType": "uint256",
1023
+ "name": "penalty",
1024
+ "type": "uint256"
1025
+ },
1026
+ {
1027
+ "internalType": "uint256",
1028
+ "name": "id",
1029
+ "type": "uint256"
1030
+ }
1031
+ ],
1032
+ "name": "slash",
1033
+ "outputs": [],
1034
+ "stateMutability": "nonpayable",
1035
+ "type": "function"
1036
+ },
1037
+ {
1038
+ "inputs": [
1039
+ {
1040
+ "internalType": "bytes4",
1041
+ "name": "interfaceId",
1042
+ "type": "bytes4"
1043
+ }
1044
+ ],
1045
+ "name": "supportsInterface",
1046
+ "outputs": [
1047
+ {
1048
+ "internalType": "bool",
1049
+ "name": "",
1050
+ "type": "bool"
1051
+ }
1052
+ ],
1053
+ "stateMutability": "view",
1054
+ "type": "function"
1055
+ },
1056
+ {
1057
+ "inputs": [
1058
+ {
1059
+ "internalType": "address payable",
1060
+ "name": "to",
1061
+ "type": "address"
1062
+ }
1063
+ ],
1064
+ "name": "sweep",
1065
+ "outputs": [],
1066
+ "stateMutability": "nonpayable",
1067
+ "type": "function"
1068
+ },
1069
+ {
1070
+ "inputs": [
1071
+ {
1072
+ "internalType": "uint256",
1073
+ "name": "id",
1074
+ "type": "uint256"
1075
+ }
1076
+ ],
1077
+ "name": "topUpValidator",
1078
+ "outputs": [],
1079
+ "stateMutability": "payable",
1080
+ "type": "function"
1081
+ },
1082
+ {
1083
+ "inputs": [],
1084
+ "name": "treasury",
1085
+ "outputs": [
1086
+ {
1087
+ "internalType": "address",
1088
+ "name": "",
1089
+ "type": "address"
1090
+ }
1091
+ ],
1092
+ "stateMutability": "view",
1093
+ "type": "function"
1094
+ },
1095
+ {
1096
+ "inputs": [],
1097
+ "name": "unlockBond",
1098
+ "outputs": [],
1099
+ "stateMutability": "nonpayable",
1100
+ "type": "function"
1101
+ },
1102
+ {
1103
+ "inputs": [],
1104
+ "name": "unlockDelay",
1105
+ "outputs": [
1106
+ {
1107
+ "internalType": "uint64",
1108
+ "name": "",
1109
+ "type": "uint64"
1110
+ }
1111
+ ],
1112
+ "stateMutability": "view",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [],
1117
+ "name": "unpause",
1118
+ "outputs": [],
1119
+ "stateMutability": "nonpayable",
1120
+ "type": "function"
1121
+ },
1122
+ {
1123
+ "inputs": [
1124
+ {
1125
+ "internalType": "bytes",
1126
+ "name": "pubkey",
1127
+ "type": "bytes"
1128
+ },
1129
+ {
1130
+ "internalType": "bytes",
1131
+ "name": "signature",
1132
+ "type": "bytes"
1133
+ },
1134
+ {
1135
+ "internalType": "bytes32",
1136
+ "name": "depositDataRoot",
1137
+ "type": "bytes32"
1138
+ }
1139
+ ],
1140
+ "name": "uploadKey",
1141
+ "outputs": [],
1142
+ "stateMutability": "nonpayable",
1143
+ "type": "function"
1144
+ },
1145
+ {
1146
+ "inputs": [
1147
+ {
1148
+ "internalType": "address",
1149
+ "name": "",
1150
+ "type": "address"
1151
+ }
1152
+ ],
1153
+ "name": "uploaded",
1154
+ "outputs": [
1155
+ {
1156
+ "internalType": "bool",
1157
+ "name": "",
1158
+ "type": "bool"
1159
+ }
1160
+ ],
1161
+ "stateMutability": "view",
1162
+ "type": "function"
1163
+ },
1164
+ {
1165
+ "inputs": [
1166
+ {
1167
+ "internalType": "bytes",
1168
+ "name": "pubkey",
1169
+ "type": "bytes"
1170
+ },
1171
+ {
1172
+ "internalType": "bytes",
1173
+ "name": "signature",
1174
+ "type": "bytes"
1175
+ },
1176
+ {
1177
+ "internalType": "bytes32",
1178
+ "name": "depositDataRoot",
1179
+ "type": "bytes32"
1180
+ },
1181
+ {
1182
+ "internalType": "bytes32",
1183
+ "name": "withdrawalCredentials",
1184
+ "type": "bytes32"
1185
+ }
1186
+ ],
1187
+ "name": "validateDepositKey",
1188
+ "outputs": [
1189
+ {
1190
+ "internalType": "bool",
1191
+ "name": "isValid",
1192
+ "type": "bool"
1193
+ },
1194
+ {
1195
+ "internalType": "string",
1196
+ "name": "errorMessage",
1197
+ "type": "string"
1198
+ }
1199
+ ],
1200
+ "stateMutability": "pure",
1201
+ "type": "function"
1202
+ },
1203
+ {
1204
+ "inputs": [],
1205
+ "name": "withdrawalCreds",
1206
+ "outputs": [
1207
+ {
1208
+ "internalType": "bytes32",
1209
+ "name": "",
1210
+ "type": "bytes32"
1211
+ }
1212
+ ],
1213
+ "stateMutability": "view",
1214
+ "type": "function"
1215
+ },
1216
+ {
1217
+ "stateMutability": "payable",
1218
+ "type": "receive"
1219
+ }
1220
+ ],
1221
+ "bytecode": "0x60c0346102a357601f613f2738819003918201601f19168301926001600160401b039290918385118386101761028d578160c092849260409788528339810103126102a35780516020610054602084016102a8565b926100608682016102a8565b9461006d606083016102a8565b9061008660a061007f608086016102a8565b94016102a8565b936001916001805560029161010080600160481b031960025416176002558a518b81018181108482111761028d578c52673782dace9d90000081526729a2241af62c000060208201529160005b848110610279575050607f60f91b7fff00000000000000000000000000000000000000000000000000000000000000891601935061023592505050576001600160a01b03948516938415158061022a575b8061021f575b80610214575b156101e157600755600680546001600160a01b031990811690951790558416608052831660a0526005805490921690831617905581166101d85750610174336102bc565b506000600e5551613bda908161034d8239608051818181610f210152818161169d01526117df015260a05181818161039001528181610efe0152818161131e0152818161151e0152818161194401528181611ce401528181611f1001526122ef0152f35b610174906102bc565b875162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b508584161515610130565b50858316151561012a565b508582161515610124565b865162461bcd60e51b815260206004820152601f60248201527f7769746864726177616c4372656473206d7573742073746172742030783032006044820152606490fd5b8351821660038201559282019285016100d3565b634e487b7160e01b600052604160045260246000fd5b600080fd5b51906001600160a01b03821682036102a357565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff1661034857818052816020526040822081835260205260408220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b509056fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806258a4ae146102fa57806301681a62146102f557806301ffc9a7146102f05780630519da32146102eb57806306b27f24146102e657806309f1328f146102e15780630cb6aaf1146102dc578063102fb7b6146102d757806313e7c9d8146102d25780631c8553a2146102cd578063248a9ca3146102c85780632f2ff15d146102c357806336568abe146102be5780633f4ba83a146102b957806343e80faf146102b45780634dc97dce146102af57806354d23f85146102aa5780635c975abb146102a557806361b8ce8c146102a057806361d027b31461029b578063691db4e1146102965780636c7ac9d81461029157806370f81f6c1461028c578063770a9d2f146102875780637968d638146102825780638379d75b1461027d5780638456cb59146102785780639156032e1461027357806391d148541461026e578063950bff9f146102695780639624e83e14610264578063a0cc98241461025f578063a217fddf1461025a578063aa517f1814610255578063d091b90514610250578063d547741f1461024b578063d818610414610246578063e42ca72c14610241578063ea70b4af1461023c578063ec87621c14610237578063f0f4426014610232578063f4aa1dd51461022d578063f6c8c47f14610228578063f77ca8a914610223578063fc56ea3f1461021e5763fed1d0360361000e57612206565b612085565b612063565b611dfa565b611bcf565b611b39565b611afe565b611ada565b611aae565b611a4f565b611a0d565b6119ef565b6119ad565b611991565b611973565b61192e565b611912565b6118bc565b611726565b6116cc565b611687565b61163c565b611602565b61147d565b611454565b6112c9565b6112a0565b611282565b61125f565b610e77565b610e46565b610e14565b610d7e565b610d33565b610cf1565b610cc2565b610ca6565b610c45565b610bca565b610b44565b6108f0565b610843565b6107ec565b610796565b6106a8565b61030f565b600091031261030a57565b600080fd5b3461030a57600080600319360112610694576103296133cc565b3360009081526009602052604090205461035263ffffffff808316159081610686575b5061238a565b6103736001600160401b03604092831c168015159081610652575b506123fa565b80516305db4e8f60e51b8152336004820152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169060208084602481865afa938415610491578594610633575b506103d584151561244c565b336000908152600a602052604090206103f0905b5460ff1690565b1561049a5750813b15610496578051638bc3920760e01b815233600482018190526024820185905260448201529184908390606490829084905af1918215610491577f65c5c39ca61064b9545af9a922e6de8b7c97d48529bf44052f6748650b7d5d0092610478575b5051918252600060208301523391604090a25b61047560018055565b80f35b8061048561048b92610a54565b806102ff565b38610459565b612440565b8380fd5b6005549093906104ba906001600160a01b03165b6001600160a01b031690565b82516360830ebb60e01b815260048101839052908590829060249082905afa9485156104915786956105fe575b5050836104f391612482565b92823b156105fa578151638bc3920760e01b808252336004830181905260248301879052604483015293868260648183855af19182156104915787926105e7575b5060065461054a906001600160a01b03166104ae565b90803b156105e3578451958652336004870152602486018490526001600160a01b039190911660448601528490606490829084905af1918215610491577f65c5c39ca61064b9545af9a922e6de8b7c97d48529bf44052f6748650b7d5d00936105c8936105d0575b5051938452602084015233929081906040820190565b0390a261046c565b806104856105dd92610a54565b386105b2565b8280fd5b806104856105f492610a54565b38610534565b8480fd5b6104f3929550908161062492903d1061062c575b61061c8183610a87565b810190612431565b9390386104e7565b503d610612565b8161064b9295503d861161062c5761061c8183610a87565b92386103c9565b60025461067d9250610671919060081c6001600160401b0316906123da565b6001600160401b031690565b4210153861036d565b90508260201c16153861034c565b80fd5b6001600160a01b0381160361030a57565b3461030a57602036600319011261030a576004356106c581610697565b6106cd6133cc565b6106d56133ef565b4790816106e6575b61001960018055565b814710610771576001600160a01b03169060008080808085875af13d15610768573d610711816124ae565b9061071f6040519283610a87565b8152809260203d92013e5b1561076357506040519081527fc36b5179cb9c303b200074996eab2b3473eac370fdd7eba3bec636fe3510969690602090a238806106dd565b613a40565b6060915061072a565b5060405163cf47918160e01b81524760048201526024810191909152604490fd5b0390fd5b3461030a57602036600319011261030a5760043563ffffffff60e01b811680910361030a57602090637965db0b60e01b81149081156107db575b506040519015158152f35b6301ffc9a760e01b149050386107d0565b3461030a57600036600319011261030a5760206001600160401b0360025460081c16604051908152f35b9181601f8401121561030a578235916001600160401b03831161030a576020838186019501011161030a57565b3461030a57606036600319011261030a576001600160401b0360043581811161030a57610874903690600401610816565b919060443591821161030a576020926108946108a0933690600401610816565b92909160243591613584565b604051908152f35b60005b8381106108bb5750506000910152565b81810151838201526020016108ab565b906020916108e4815180928185528580860191016108a8565b601f01601f1916010190565b3461030a57608036600319011261030a576001600160401b0360043581811161030a57610921903690600401610816565b9060243592831161030a5761093d61094b933690600401610816565b90606435936044359361263e565b9061096a604051928392151583526040602084015260408301906108cb565b0390f35b90600182811c9216801561099e575b602083101461098857565b634e487b7160e01b600052602260045260246000fd5b91607f169161097d565b8054600093926109b78261096e565b91828252602093600191600181169081600014610a1f57506001146109de575b5050505050565b90939495506000929192528360002092846000945b838610610a0b575050505001019038808080806109d7565b8054858701830152940193859082016109f3565b60ff19168685015250505090151560051b0101915038808080806109d7565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610a6757604052565b610a3e565b604081019081106001600160401b03821117610a6757604052565b90601f801991011681019081106001600160401b03821117610a6757604052565b90610ac3610abc92604051938480926109a8565b0383610a87565b565b60071115610acf57565b634e487b7160e01b600052602160045260246000fd5b949296959391610b00610b0e9260c0885260c08801906108cb565b9086820360208801526108cb565b60408501969096526001600160a01b031660608401526007811015610acf5760a0916001600160401b0391608085015216910152565b3461030a57602036600319011261030a576004356000526008602052604060002060405190610b7782610abc81846109a8565b61096a604051610b9581610b8e81600187016109a8565b0382610a87565b600360028401549301546040519485946001600160401b038360a81c169360ff8460a01c169360018060a01b03169287610ae5565b3461030a57602036600319011261030a57600435610be661346b565b607f60f91b6001600160f81b0319821601610c0057600755005b60405162461bcd60e51b815260206004820152601f60248201527f7769746864726177616c4372656473206d7573742073746172742030783032006044820152606490fd5b3461030a57602036600319011261030a57600435610c6281610697565b60018060a01b0316600052600960205260606040600020546001600160401b0363ffffffff916040519280821684528160201c16602084015260401c166040820152f35b3461030a57600036600319011261030a57602060405160648152f35b3461030a57602036600319011261030a5760043560005260006020526020600160406000200154604051908152f35b3461030a57604036600319011261030a57610019602435600435610d1482610697565b806000526000602052610d2e6001604060002001546134c3565b61369d565b3461030a57604036600319011261030a57602435610d5081610697565b336001600160a01b03821603610d6c576100199060043561372e565b60405163334bd91960e11b8152600490fd5b3461030a57600036600319011261030a57610d9761346b565b60025460ff811615610dd65760ff19166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b600435906001600160401b038216820361030a57565b602435906001600160401b038216820361030a57565b3461030a57604036600319011261030a57610019610e30610de8565b610e38610dfe565b90610e4161346b565b6128b2565b3461030a57602036600319011261030a57600435600052600b602052602060ff604060002054166040519015158152f35b60208060031936011261030a5760049060043590610e936133cc565b610e9b6137b7565b610ea36133ef565b81151580611254575b610eb590612a1d565b600f90610ede83610ed7610ece600f5463ffffffff1690565b63ffffffff1690565b1015612a56565b610ef1610eea84612a97565b3414612ad1565b60009060018060a01b03807f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000166001600160401b034216925b868510610f5d5761001960018055565b600e5495600197600d54985b15610f8c575b610f7a600098612b10565b97610f878a8a1115612b1f565b610f69565b89610fb16003610fa68b6000526008602052604060002090565b015460a01c60ff1690565b610fba81610ac5565b15610fc55750610f6f565b92979096919850610fd581600e55565b610fe9816000526008602052604060002090565b60038101805460408051630308b70f60e61b81526001600160a01b03909216968201968752958b908290819060200103818b5afa9081156104915761103f9163ffffffff91600091611227575b50161515612b79565b6007546110678b6110598851938492830160209181520190565b03601f198101835282610a87565b600283015490873b1561030a578d93611099600093895196879485946304512a2360e31b865260018101928601612bda565b03816801bc16d674ec8000008a5af19182156104915761118a92611214575b50805460ff60a01b1916600160a01b17815561117d888c61115561113f61111a6111056110eb885460018060a01b031690565b6001600160a01b0316600090815260096020526040902090565b9361113561111f61111a875463ffffffff1690565b612c3d565b865463ffffffff191663ffffffff909116178655565b5463ffffffff1690565b63ffffffff1663ffffffff19600f541617600f55565b9067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b546001600160a01b031690565b92853b1561030a5751632fbdb45f60e11b81526001600160a01b03909316838b0190815260009084908190602001038183895af1928315610491576111f993611201575b507f2a89b2e3d580398d6dc2db5e0f336b52602bbaa51afa9bb5cdf59239cf0d2bea600080a2612b10565b939594610f4d565b8061048561120e92610a54565b386111ce565b8061048561122192610a54565b386110b8565b61124791508d803d1061124d575b61123f8183610a87565b810190612b5d565b38611036565b503d611235565b506014821115610eac565b3461030a57600036600319011261030a57602060ff600254166040519015158152f35b3461030a57600036600319011261030a576020600d54604051908152f35b3461030a57600036600319011261030a576006546040516001600160a01b039091168152602090f35b3461030a5760c036600319011261030a576004356112e681610697565b602435906064359060ff8216820361030a576113006137b7565b6113086133ef565b611313831515612c69565b6001600160a01b03907f00000000000000000000000000000000000000000000000000000000000000008216803b1561030a5760405163c0e5db5160e01b81526001600160a01b038316600482015260248101869052604480359082015260ff949094166064850152608480359085015260a4803590850152600090849060c490829084905af1928315610491577ff6a4fac3c715c43d37e594d3f60bb5e3782af5a2aac2783711964a70277b605893611441575b506001600160401b03806114016113f18460018060a01b03166000526009602052604060002090565b5460401c6001600160401b031690565b1615611417575b506040519384521691602090a2005b6001600160a01b038216600090815260096020526040902061143b91421690611155565b38611408565b8061048561144e92610a54565b386113c8565b3461030a57600036600319011261030a576005546040516001600160a01b039091168152602090f35b3461030a57606036600319011261030a5760043561149a81610697565b6044356024356114a86133cc565b6114b06137b7565b6114b86133ef565b60036114ce836000526008602052604060002090565b019081549161151c60018060a01b0391611509600260ff858a16976114f68988831614612c99565b60a01c1661150381610ac5565b146127c0565b805460ff60a01b1916600360a11b179055565b7f00000000000000000000000000000000000000000000000000000000000000001690813b1561030a576040516314d7c3d960e31b81526001600160a01b03959095166004860152602485018190526000949185908390604490829084905af1908115610491577f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd926115bf926115ef575b506040519081529081906020820190565b0390a27f89b4ab334d9e219338cbac42810fd34b6022a3c92fe6d54ab5ea805acaf92a868280a261047560018055565b806104856115fc92610a54565b386115ae565b3461030a57602036600319011261030a576001600160401b03611623610de8565b16600052600c6020526020604060002054604051908152f35b3461030a57602036600319011261030a57608060ff61166161165c610de8565b612cdd565b916040949394519415158552602085015260018060a01b03166040840152166060820152f35b3461030a57600036600319011261030a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461030a57600036600319011261030a576116e561346b565b6116ed6137b7565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b602036600319011261030a5761173a6133cc565b6117426137b7565b61174a6133ef565b611755341515612d4f565b6001600160401b03633b9aca0061176e81340615612d92565b6118136117d361178a6004356000526008602052604060002090565b926117b160026117a2600387015460ff9060a01c1690565b6117ab81610ac5565b14612dcb565b6117ba84610aa8565b906117c3612e08565b90600754968791340416926137d5565b61182160018060a01b037f000000000000000000000000000000000000000000000000000000000000000016946040519384916020830160209181520190565b03601f198101845283610a87565b611829612e08565b93803b1561030a5761185694600093604051968794859384936304512a2360e31b85528960048601612e32565b039134905af1908115610491577fb0a1e9d4c331fe865c51739d6cef1dd1e0a4235b9e7540657a122a05612208329261189d926118a9575b50604051918291349083612e5e565b0390a161001960018055565b806104856118b692610a54565b3861188e565b3461030a57604036600319011261030a57602060ff6119066024356118e081610697565b6004356000526000845260406000209060018060a01b0316600052602052604060002090565b54166040519015158152f35b3461030a57600036600319011261030a57602060405160148152f35b3461030a57600036600319011261030a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461030a57600036600319011261030a576020600e54604051908152f35b3461030a57600036600319011261030a57602060405160008152f35b3461030a57602036600319011261030a576004356119ca81610697565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b3461030a57600036600319011261030a576020600754604051908152f35b3461030a57604036600319011261030a57610019602435600435611a3082610697565b806000526000602052611a4a6001604060002001546134c3565b61372e565b3461030a57602036600319011261030a57611a68610de8565b611a7061346b565b68ffffffffffffffff006002549160081b169068ffffffffffffffff00191617600255600080f35b634e487b7160e01b600052603260045260246000fd5b3461030a57602036600319011261030a57600435600281101561030a5760209060030154604051908152f35b3461030a57600036600319011261030a57602063ffffffff600f5416604051908152f35b3461030a57600036600319011261030a5760206040517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b3461030a57602036600319011261030a57600435611b5681610697565b611b5e61346b565b6001600160a01b03168015611b8a576bffffffffffffffffffffffff60a01b6006541617600655600080f35b60405162461bcd60e51b815260206004820152601e60248201527f547265617375727920616464726573732063616e2774206265207a65726f00006044820152606490fd5b3461030a57602036600319011261030a576004356001600160401b0380821161030a573660238301121561030a57816004013590811161030a576024820191602436918360051b01011161030a57611c256137b7565b611c326064821115612e75565b6000805b828210611d8357336000908152600960205260409020611ca39250611c9e9061113f9063ffffffff841690611c9090611c7c83611c77835463ffffffff1690565b612c53565b63ffffffff1663ffffffff19825416179055565b600f5463ffffffff16612c53565b612ab5565b9182611ce2575b7f9946eba4018b5d38e97bb6f7e2d2b353a0160c45902a6055479df936934a59979250611cdd6040519283923384612f47565b0390a1005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561030a576040516360657e9f60e01b815233600482015260248101949094526000908490604490829084905af1928315610491577f9946eba4018b5d38e97bb6f7e2d2b353a0160c45902a6055479df936934a599793611d70575b50611caa565b80610485611d7d92610a54565b38611d6a565b611df2600191611ded6003611dad611d9c87898b612eb1565b356000526008602052604060002090565b01611dda60ff8254611dc733898060a01b03831614612ec1565b60a01c16611dd481610ac5565b15612f0d565b805460ff60a01b1916600560a01b179055565b612b10565b910190611c36565b3461030a57606036600319011261030a576001600160401b0360043581811161030a57611e2b903690600401610816565b909160243590811161030a57611e45903690600401610816565b929091604435611e536137b7565b611e6c611e66600754838888878961263e565b90612f81565b611ec7611eba611e7d368587612fad565b60208151910120611eaa611ea5611ea16103e984600052600b602052604060002090565b1590565b612fe4565b600052600b602052604060002090565b805460ff19166001179055565b33600090815260096020526040902054611eeb9063ffffffff1661301e565b61301e565b604051630308b70f60e61b815233600482015290946020826024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa96871561049157611f8d611fe096611f656120049a611f9696600091612044575b5063ffffffff808c1691161015613033565b336000908152600a60205260409020611f7d90611eba565b611f8561248f565b963691612fad565b85523691612fad565b6020830152604082015233606082015260006080820152600060a0820152611fdb611fc2600d54612b10565b611fcb81600d55565b6000526008602052604060002090565b6131a9565b3360009081526009602052604090209063ffffffff1663ffffffff19825416179055565b61201961113f611ee6600f5463ffffffff1690565b33600d547fcb2c934a3e9ec8b1063e85a3a228cad961b6af5aee38331ae08d7c76405e1262600080a3005b61205d915060203d60201161124d5761123f8183610a87565b38611f53565b3461030a57600036600319011261030a57602060405166470de4df8200008152f35b3461030a57604036600319011261030a5761209e610de8565b6120a6610dfe565b6120ae61346b565b6001600160401b03808216156121d4578261219f926121916110eb9360036120ec610019986001600160401b03166000526008602052604060002090565b019361211982865461210f600160ff8360a01c1661210981610ac5565b14613315565b60a81c1615613351565b612140612139856001600160401b0316600052600c602052604060002090565b541561338d565b845460ff60a01b1916600160a11b178555845467ffffffffffffffff60a81b191660a885901b67ffffffffffffffff60a81b1617855516916001600160401b0316600052600c602052604060002090565b55546001600160a01b031690565b80546121b39060201c63ffffffff1661301e565b67ffffffff0000000082549160201b169067ffffffff000000001916179055565b60405162461bcd60e51b815260206004820152600a602482015269696e646578207a65726f60b01b6044820152606490fd5b3461030a57602036600319011261030a576122b760043561222561346b565b600361223b826000526008602052604060002090565b0161225060026117a2835460ff9060a01c1690565b805460ff60a01b1916600160a21b178155805460a81c6001600160401b03169061229883612291846001600160401b0316600052600c602052604060002090565b5414612866565b6000809481936001600160401b0316600052600c602052604060002090565b5580546122e4906122d0906001600160a01b03166110eb565b80546121b39060201c63ffffffff16612c3d565b546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116813b156105e3576040516369e7849960e01b81526001600160a01b0391909116600482015291908290602490829084905af1801561049157612377575b507f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b568280a280f35b8061048561238492610a54565b3861234f565b1561239157565b60405162461bcd60e51b815260206004820152600b60248201526a6b6579732061637469766560a81b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b9190916001600160401b03808094169116019182116123f557565b6123c4565b1561240157565b60405162461bcd60e51b815260206004820152600860248201526731b7b7b63237bbb760c11b6044820152606490fd5b9081602091031261030a575190565b6040513d6000823e3d90fd5b1561245357565b60405162461bcd60e51b8152602060048201526007602482015266139bc8189bdb9960ca1b6044820152606490fd5b919082039182116123f557565b6040519060c082018281106001600160401b03821117610a6757604052565b6001600160401b038111610a6757601f01601f191660200190565b60405190602082018281106001600160401b03821117610a675760405260008252565b604051906124f982610a6c565b6015825274092dcecc2d8d2c840e0eac4d6caf240d8cadccee8d605b1b6020830152565b6040519061252a82610a6c565b6018825277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6020830152565b6040519061255e82610a6c565b602082527f4465706f736974206461746120726f6f742063616e6e6f74206265207a65726f6020830152565b90821015612596570190565b611a98565b604051906125a882610a6c565b60158252745075626b65792063616e6e6f74206265207a65726f60581b6020830152565b604051906125d982610a6c565b601882527f5369676e61747572652063616e6e6f74206265207a65726f00000000000000006020830152565b6040519061261282610a6c565b601a82527f4465706f736974206461746120726f6f74206d69736d617463680000000000006020830152565b91959392909495603096603087036127ad57606096606084036127995785156127855760019860005b6001600160401b038116828110156127755761269861268a6126a592868b61258a565b356001600160f81b03191690565b6001600160f81b03191690565b6126ba576001016001600160401b0316612667565b505090919293949596975060005b6127625760019760005b6001600160401b038116828110156127535761269861268a6126f592898961258a565b61270a576001016001600160401b03166126d2565b5050909192939495965060005b6127425761272494613584565b03612737576001906127346124c9565b90565b600090612734612605565b5050505050506000906127346125cc565b50505090919293949596612717565b505050505050905060009061273461259b565b50505090919293949596976126c8565b505050505050915050600090612734612551565b50505050505091505060009061273461251d565b50505050509150506000906127346124ec565b156127c757565b60405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606490fd5b1561280057565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b1561283257565b60405162461bcd60e51b815260206004820152600c60248201526b696e64657820696e2075736560a01b6044820152606490fd5b1561286d57565b60405162461bcd60e51b815260206004820152601b60248201527f434f4445204552524f523a20696e76616c6964206d617070696e6700000000006044820152606490fd5b60036128d1826001600160401b03166000526008602052604060002090565b018054926128ea600260ff8660a01c1661150381610ac5565b6001600160401b039081808216956129038715156127f9565b60a81c169485146109d7576129d5817f3b8a71097e7e93df885e070edf2c6e29adb0bb1af910cc2d0dcb9ce943d87e579461298a612a189561296261295b856001600160401b0316600052600c602052604060002090565b541561282b565b61297f8a6001600160401b0316600052600c602052604060002090565b549816809814612866565b60006129a9896001600160401b0316600052600c602052604060002090565b55805467ffffffffffffffff60a81b191660a89290921b67ffffffffffffffff60a81b16919091179055565b836129f3826001600160401b0316600052600c602052604060002090565b55604080516001600160401b0396871681529590911660208601523394918291820190565b0390a3565b15612a2457565b60405162461bcd60e51b815260206004820152600a60248201526962617463682073697a6560b01b6044820152606490fd5b15612a5d57565b60405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682070656e64696e6760701b6044820152606490fd5b906801bc16d674ec800000918281029281840414901517156123f557565b9066470de4df820000918281029281840414901517156123f557565b15612ad857565b60405162461bcd60e51b815260206004820152601060248201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b60001981146123f55760010190565b15612b2657565b60405162461bcd60e51b815260206004820152600f60248201526e637572736f72206f766572666c6f7760881b6044820152606490fd5b9081602091031261030a575163ffffffff8116810361030a5790565b15612b8057565b60405162461bcd60e51b815260206004820152602c60248201527f434f4445204552524f523a20696e73756666696369656e7420626f6e6420666f60448201526b1c881ad95e481d5c1b1bd85960a21b6064820152608490fd5b949392612c06606093612bf8612c149460808a5260808a01906109a8565b9088820360208a01526108cb565b9086820360408801526109a8565b930152565b906007811015610acf57815460ff60a01b191660a09190911b60ff60a01b16179055565b63ffffffff90811660001901919082116123f557565b63ffffffff91821690821603919082116123f557565b15612c7057565b60405162461bcd60e51b81526020600482015260016024820152600360fc1b6044820152606490fd5b15612ca057565b60405162461bcd60e51b815260206004820152601560248201527404964206973206e6f74206f776e6564206279206f7605c1b6044820152606490fd5b906001600160401b03600092168252600c6020526040822054918215612d4557828152600860205260036040822001549160ff8360a01c16916007831015612d315750600193926001600160a01b03169190565b634e487b7160e01b81526021600452602490fd5b8092509180918190565b15612d5657565b60405162461bcd60e51b8152602060048201526014602482015273416d6f756e742063616e2774206265207a65726f60601b6044820152606490fd5b15612d9957565b60405162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b6044820152606490fd5b15612dd257565b60405162461bcd60e51b815260206004820152600e60248201526d4b6579206e6f742061637469766560901b6044820152606490fd5b60405190608082018281106001600160401b03821117610a67576040526060808352366020840137565b949392612e50606093612bf8612c149460808a5260808a01906109a8565b9086820360408801526108cb565b929190612c146020916040865260408601906109a8565b15612e7c57565b60405162461bcd60e51b815260206004820152600d60248201526c18985d18da080f881b1a5b5a5d609a1b6044820152606490fd5b91908110156125965760051b0190565b15612ec857565b60405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656d6f7665206f746865722773206b6579000000000000006044820152606490fd5b15612f1457565b60405162461bcd60e51b815260206004820152600b60248201526a4e6f742070656e64696e6760a81b6044820152606490fd5b6001600160a01b03909116815260406020820181905281018390526001600160fb1b03831161030a5760609260051b809284830137010190565b15612f895750565b60405162461bcd60e51b8152602060048201529081906107929060248301906108cb565b929192612fb9826124ae565b91612fc76040519384610a87565b82948184528183011161030a578281602093846000960137010152565b15612feb57565b60405162461bcd60e51b815260206004820152600b60248201526a1c1d589ad95e481d5cd95960aa1b6044820152606490fd5b90600163ffffffff809316019182116123f557565b1561303a57565b606460405162461bcd60e51b815260206004820152602060248201527f696e73756666696369656e7420626f6e6420666f72206b65792075706c6f61646044820152fd5b90601f811161308c57505050565b6000916000526020600020906020601f850160051c830194106130ca575b601f0160051c01915b8281106130bf57505050565b8181556001016130b3565b90925082906130aa565b91909182516001600160401b038111610a67576130fb816130f5845461096e565b8461307e565b602080601f831160011461313e5750819061312f939495600092613133575b50508160011b916000199060031b1c19161790565b9055565b01519050388061311a565b90601f1983169561315485600052602060002090565b926000905b88821061319157505083600195969710613178575b505050811b019055565b015160001960f88460031b161c1916905538808061316e565b80600185968294968601518155019501930190613159565b919080519283516001600160401b038111610a67576131cc816130f5845461096e565b602080601f831160011461329a57506132729261320a8360a094600394610ac3999a6000926131335750508160011b916000199060031b1c19161790565b81555b61321e6020860151600183016130d4565b604085015160028201556060850151910180546001600160a01b0319166001600160a01b0390921691909117815592613264608082015161325e81610ac5565b85612c19565b01516001600160401b031690565b815467ffffffffffffffff60a81b191660a89190911b67ffffffffffffffff60a81b16179055565b90601f198316966132b085600052602060002090565b926000905b8982106132fd57505083600393613272969360019360a097610ac39b9c106132e5575b505050811b01815561320d565b015160001983871b60f8161c191690553880806132d8565b806001859682949686015181550195019301906132b5565b1561331c57565b60405162461bcd60e51b815260206004820152600d60248201526c139bdd0819195c1bdcda5d1959609a1b6044820152606490fd5b1561335857565b60405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481859191959609a1b6044820152606490fd5b1561339457565b60405162461bcd60e51b815260206004820152601060248201526f56616c20696e64657820696e2075736560801b6044820152606490fd5b6002600154146133dd576002600155565b604051633ee5aeb560e01b8152600490fd5b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604090207f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff905b54161561344d5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156134a457565b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b600081815260208181526040808320338452909152902060ff90613443565b156134e957565b60405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0eac4d6caf240d8cadccee8d605b1b6044820152606490fd5b1561352d57565b60405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6044820152606490fd5b90613580602092828151948592016108a8565b0190565b936135ad6135b3926135d19661359c603083146134e2565b6135a860608514613526565b613aae565b93613b1a565b60409182519485916020958684019091604092825260208201520190565b03906135e5601f1992838101875286610a87565b8383519586806135f86000998a9461356d565b039060025afa1561049157838561364661362f61363b8351958851928391878301604091634059730760d81b825260208201520190565b03878101835282610a87565b86519182809261356d565b039060025afa1561049157849261368461368e9385519361367884519586928a84019091604092825260208201520190565b03908101845283610a87565b519182809261356d565b039060025afa15610491575190565b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff1661372857808252602082815260408084206001600160a01b038616600090815292529020805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50905090565b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff161561372857808252602082815260408084206001600160a01b038616600090815292529020805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff600254166137c357565b60405163d93c066560e01b8152600490fd5b90926137e460308351146134e2565b6137f16060845114613526565b6020828101516040938401518451808401929092526fffffffffffffffffffffffffffffffff191681850152838152909485949192601f199291613836606086610a87565b85519788958661384960009b8c9361356d565b03600297885afa156104915787519167ffffffffffff00008160081b9160081c9165ff000000ff0064ff000000ff65ffffffffffff66ff000000ff0000861667ff000000ff00000085161760101c16941691161760101b16179287896138ec82840151936138e160608c830151920151956138d58d519384928884019091604092825260208201520190565b038a8101835282610a87565b8a519182809261356d565b0390895afa1561049157878961391c6138d56138e18351958c519283918783016040918152600060208201520190565b0390895afa156104915788613964899261395983519161394d8c519384928884019091604092825260208201520190565b03898101835282610a87565b89519182809261356d565b0390885afa1561049157876139ac88926139a18351956139958b519384928884019091604092825260208201520190565b03888101835282610a87565b88519182809261356d565b0390875afa156104915786613a0287926139f783519561362f8a51938267ffffffff0000000063ffffffff87958b1c16918a1b161760c01b8884019091604092825260208201520190565b87519182809261356d565b0390865afa15610491578593613684613a339386519361367884519586928b84019091604092825260208201520190565b03915afa15610491575190565b805115613a4f57602081519101fd5b60405163d6bda27560e01b8152600490fd5b9060201161030a5790602090565b9060401161030a5760200190602090565b9060601161030a5760400190602090565b359060208110613a9f575090565b6000199060200360031b1b1690565b9060201161030a576000613b07602092604051613af681611059878201946fffffffffffffffffffffffffffffffff1989820135169035869091604092825260208201520190565b6040519283928392519283916108a8565b8101039060025afa156104915760005190565b90613b4c916135b3613b32613b38613b328585613a61565b90613a91565b93613b46613b328286613a6f565b93613a80565b0390613b60601f1992838101875286610a87565b838351958680613b736000998a9461356d565b039060025afa1561049157838561364661362f61363b8351958851928391878301604091815260006020820152019056fea2646970667358221220d3a81b5d8eadfca2495b0bd1ce425a06cb9290c813f08ebdcb57a2c4956f3c0f64736f6c63430008190033",
1222
+ "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806258a4ae146102fa57806301681a62146102f557806301ffc9a7146102f05780630519da32146102eb57806306b27f24146102e657806309f1328f146102e15780630cb6aaf1146102dc578063102fb7b6146102d757806313e7c9d8146102d25780631c8553a2146102cd578063248a9ca3146102c85780632f2ff15d146102c357806336568abe146102be5780633f4ba83a146102b957806343e80faf146102b45780634dc97dce146102af57806354d23f85146102aa5780635c975abb146102a557806361b8ce8c146102a057806361d027b31461029b578063691db4e1146102965780636c7ac9d81461029157806370f81f6c1461028c578063770a9d2f146102875780637968d638146102825780638379d75b1461027d5780638456cb59146102785780639156032e1461027357806391d148541461026e578063950bff9f146102695780639624e83e14610264578063a0cc98241461025f578063a217fddf1461025a578063aa517f1814610255578063d091b90514610250578063d547741f1461024b578063d818610414610246578063e42ca72c14610241578063ea70b4af1461023c578063ec87621c14610237578063f0f4426014610232578063f4aa1dd51461022d578063f6c8c47f14610228578063f77ca8a914610223578063fc56ea3f1461021e5763fed1d0360361000e57612206565b612085565b612063565b611dfa565b611bcf565b611b39565b611afe565b611ada565b611aae565b611a4f565b611a0d565b6119ef565b6119ad565b611991565b611973565b61192e565b611912565b6118bc565b611726565b6116cc565b611687565b61163c565b611602565b61147d565b611454565b6112c9565b6112a0565b611282565b61125f565b610e77565b610e46565b610e14565b610d7e565b610d33565b610cf1565b610cc2565b610ca6565b610c45565b610bca565b610b44565b6108f0565b610843565b6107ec565b610796565b6106a8565b61030f565b600091031261030a57565b600080fd5b3461030a57600080600319360112610694576103296133cc565b3360009081526009602052604090205461035263ffffffff808316159081610686575b5061238a565b6103736001600160401b03604092831c168015159081610652575b506123fa565b80516305db4e8f60e51b8152336004820152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169060208084602481865afa938415610491578594610633575b506103d584151561244c565b336000908152600a602052604090206103f0905b5460ff1690565b1561049a5750813b15610496578051638bc3920760e01b815233600482018190526024820185905260448201529184908390606490829084905af1918215610491577f65c5c39ca61064b9545af9a922e6de8b7c97d48529bf44052f6748650b7d5d0092610478575b5051918252600060208301523391604090a25b61047560018055565b80f35b8061048561048b92610a54565b806102ff565b38610459565b612440565b8380fd5b6005549093906104ba906001600160a01b03165b6001600160a01b031690565b82516360830ebb60e01b815260048101839052908590829060249082905afa9485156104915786956105fe575b5050836104f391612482565b92823b156105fa578151638bc3920760e01b808252336004830181905260248301879052604483015293868260648183855af19182156104915787926105e7575b5060065461054a906001600160a01b03166104ae565b90803b156105e3578451958652336004870152602486018490526001600160a01b039190911660448601528490606490829084905af1918215610491577f65c5c39ca61064b9545af9a922e6de8b7c97d48529bf44052f6748650b7d5d00936105c8936105d0575b5051938452602084015233929081906040820190565b0390a261046c565b806104856105dd92610a54565b386105b2565b8280fd5b806104856105f492610a54565b38610534565b8480fd5b6104f3929550908161062492903d1061062c575b61061c8183610a87565b810190612431565b9390386104e7565b503d610612565b8161064b9295503d861161062c5761061c8183610a87565b92386103c9565b60025461067d9250610671919060081c6001600160401b0316906123da565b6001600160401b031690565b4210153861036d565b90508260201c16153861034c565b80fd5b6001600160a01b0381160361030a57565b3461030a57602036600319011261030a576004356106c581610697565b6106cd6133cc565b6106d56133ef565b4790816106e6575b61001960018055565b814710610771576001600160a01b03169060008080808085875af13d15610768573d610711816124ae565b9061071f6040519283610a87565b8152809260203d92013e5b1561076357506040519081527fc36b5179cb9c303b200074996eab2b3473eac370fdd7eba3bec636fe3510969690602090a238806106dd565b613a40565b6060915061072a565b5060405163cf47918160e01b81524760048201526024810191909152604490fd5b0390fd5b3461030a57602036600319011261030a5760043563ffffffff60e01b811680910361030a57602090637965db0b60e01b81149081156107db575b506040519015158152f35b6301ffc9a760e01b149050386107d0565b3461030a57600036600319011261030a5760206001600160401b0360025460081c16604051908152f35b9181601f8401121561030a578235916001600160401b03831161030a576020838186019501011161030a57565b3461030a57606036600319011261030a576001600160401b0360043581811161030a57610874903690600401610816565b919060443591821161030a576020926108946108a0933690600401610816565b92909160243591613584565b604051908152f35b60005b8381106108bb5750506000910152565b81810151838201526020016108ab565b906020916108e4815180928185528580860191016108a8565b601f01601f1916010190565b3461030a57608036600319011261030a576001600160401b0360043581811161030a57610921903690600401610816565b9060243592831161030a5761093d61094b933690600401610816565b90606435936044359361263e565b9061096a604051928392151583526040602084015260408301906108cb565b0390f35b90600182811c9216801561099e575b602083101461098857565b634e487b7160e01b600052602260045260246000fd5b91607f169161097d565b8054600093926109b78261096e565b91828252602093600191600181169081600014610a1f57506001146109de575b5050505050565b90939495506000929192528360002092846000945b838610610a0b575050505001019038808080806109d7565b8054858701830152940193859082016109f3565b60ff19168685015250505090151560051b0101915038808080806109d7565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610a6757604052565b610a3e565b604081019081106001600160401b03821117610a6757604052565b90601f801991011681019081106001600160401b03821117610a6757604052565b90610ac3610abc92604051938480926109a8565b0383610a87565b565b60071115610acf57565b634e487b7160e01b600052602160045260246000fd5b949296959391610b00610b0e9260c0885260c08801906108cb565b9086820360208801526108cb565b60408501969096526001600160a01b031660608401526007811015610acf5760a0916001600160401b0391608085015216910152565b3461030a57602036600319011261030a576004356000526008602052604060002060405190610b7782610abc81846109a8565b61096a604051610b9581610b8e81600187016109a8565b0382610a87565b600360028401549301546040519485946001600160401b038360a81c169360ff8460a01c169360018060a01b03169287610ae5565b3461030a57602036600319011261030a57600435610be661346b565b607f60f91b6001600160f81b0319821601610c0057600755005b60405162461bcd60e51b815260206004820152601f60248201527f7769746864726177616c4372656473206d7573742073746172742030783032006044820152606490fd5b3461030a57602036600319011261030a57600435610c6281610697565b60018060a01b0316600052600960205260606040600020546001600160401b0363ffffffff916040519280821684528160201c16602084015260401c166040820152f35b3461030a57600036600319011261030a57602060405160648152f35b3461030a57602036600319011261030a5760043560005260006020526020600160406000200154604051908152f35b3461030a57604036600319011261030a57610019602435600435610d1482610697565b806000526000602052610d2e6001604060002001546134c3565b61369d565b3461030a57604036600319011261030a57602435610d5081610697565b336001600160a01b03821603610d6c576100199060043561372e565b60405163334bd91960e11b8152600490fd5b3461030a57600036600319011261030a57610d9761346b565b60025460ff811615610dd65760ff19166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b600435906001600160401b038216820361030a57565b602435906001600160401b038216820361030a57565b3461030a57604036600319011261030a57610019610e30610de8565b610e38610dfe565b90610e4161346b565b6128b2565b3461030a57602036600319011261030a57600435600052600b602052602060ff604060002054166040519015158152f35b60208060031936011261030a5760049060043590610e936133cc565b610e9b6137b7565b610ea36133ef565b81151580611254575b610eb590612a1d565b600f90610ede83610ed7610ece600f5463ffffffff1690565b63ffffffff1690565b1015612a56565b610ef1610eea84612a97565b3414612ad1565b60009060018060a01b03807f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000166001600160401b034216925b868510610f5d5761001960018055565b600e5495600197600d54985b15610f8c575b610f7a600098612b10565b97610f878a8a1115612b1f565b610f69565b89610fb16003610fa68b6000526008602052604060002090565b015460a01c60ff1690565b610fba81610ac5565b15610fc55750610f6f565b92979096919850610fd581600e55565b610fe9816000526008602052604060002090565b60038101805460408051630308b70f60e61b81526001600160a01b03909216968201968752958b908290819060200103818b5afa9081156104915761103f9163ffffffff91600091611227575b50161515612b79565b6007546110678b6110598851938492830160209181520190565b03601f198101835282610a87565b600283015490873b1561030a578d93611099600093895196879485946304512a2360e31b865260018101928601612bda565b03816801bc16d674ec8000008a5af19182156104915761118a92611214575b50805460ff60a01b1916600160a01b17815561117d888c61115561113f61111a6111056110eb885460018060a01b031690565b6001600160a01b0316600090815260096020526040902090565b9361113561111f61111a875463ffffffff1690565b612c3d565b865463ffffffff191663ffffffff909116178655565b5463ffffffff1690565b63ffffffff1663ffffffff19600f541617600f55565b9067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b546001600160a01b031690565b92853b1561030a5751632fbdb45f60e11b81526001600160a01b03909316838b0190815260009084908190602001038183895af1928315610491576111f993611201575b507f2a89b2e3d580398d6dc2db5e0f336b52602bbaa51afa9bb5cdf59239cf0d2bea600080a2612b10565b939594610f4d565b8061048561120e92610a54565b386111ce565b8061048561122192610a54565b386110b8565b61124791508d803d1061124d575b61123f8183610a87565b810190612b5d565b38611036565b503d611235565b506014821115610eac565b3461030a57600036600319011261030a57602060ff600254166040519015158152f35b3461030a57600036600319011261030a576020600d54604051908152f35b3461030a57600036600319011261030a576006546040516001600160a01b039091168152602090f35b3461030a5760c036600319011261030a576004356112e681610697565b602435906064359060ff8216820361030a576113006137b7565b6113086133ef565b611313831515612c69565b6001600160a01b03907f00000000000000000000000000000000000000000000000000000000000000008216803b1561030a5760405163c0e5db5160e01b81526001600160a01b038316600482015260248101869052604480359082015260ff949094166064850152608480359085015260a4803590850152600090849060c490829084905af1928315610491577ff6a4fac3c715c43d37e594d3f60bb5e3782af5a2aac2783711964a70277b605893611441575b506001600160401b03806114016113f18460018060a01b03166000526009602052604060002090565b5460401c6001600160401b031690565b1615611417575b506040519384521691602090a2005b6001600160a01b038216600090815260096020526040902061143b91421690611155565b38611408565b8061048561144e92610a54565b386113c8565b3461030a57600036600319011261030a576005546040516001600160a01b039091168152602090f35b3461030a57606036600319011261030a5760043561149a81610697565b6044356024356114a86133cc565b6114b06137b7565b6114b86133ef565b60036114ce836000526008602052604060002090565b019081549161151c60018060a01b0391611509600260ff858a16976114f68988831614612c99565b60a01c1661150381610ac5565b146127c0565b805460ff60a01b1916600360a11b179055565b7f00000000000000000000000000000000000000000000000000000000000000001690813b1561030a576040516314d7c3d960e31b81526001600160a01b03959095166004860152602485018190526000949185908390604490829084905af1908115610491577f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd926115bf926115ef575b506040519081529081906020820190565b0390a27f89b4ab334d9e219338cbac42810fd34b6022a3c92fe6d54ab5ea805acaf92a868280a261047560018055565b806104856115fc92610a54565b386115ae565b3461030a57602036600319011261030a576001600160401b03611623610de8565b16600052600c6020526020604060002054604051908152f35b3461030a57602036600319011261030a57608060ff61166161165c610de8565b612cdd565b916040949394519415158552602085015260018060a01b03166040840152166060820152f35b3461030a57600036600319011261030a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461030a57600036600319011261030a576116e561346b565b6116ed6137b7565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b602036600319011261030a5761173a6133cc565b6117426137b7565b61174a6133ef565b611755341515612d4f565b6001600160401b03633b9aca0061176e81340615612d92565b6118136117d361178a6004356000526008602052604060002090565b926117b160026117a2600387015460ff9060a01c1690565b6117ab81610ac5565b14612dcb565b6117ba84610aa8565b906117c3612e08565b90600754968791340416926137d5565b61182160018060a01b037f000000000000000000000000000000000000000000000000000000000000000016946040519384916020830160209181520190565b03601f198101845283610a87565b611829612e08565b93803b1561030a5761185694600093604051968794859384936304512a2360e31b85528960048601612e32565b039134905af1908115610491577fb0a1e9d4c331fe865c51739d6cef1dd1e0a4235b9e7540657a122a05612208329261189d926118a9575b50604051918291349083612e5e565b0390a161001960018055565b806104856118b692610a54565b3861188e565b3461030a57604036600319011261030a57602060ff6119066024356118e081610697565b6004356000526000845260406000209060018060a01b0316600052602052604060002090565b54166040519015158152f35b3461030a57600036600319011261030a57602060405160148152f35b3461030a57600036600319011261030a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461030a57600036600319011261030a576020600e54604051908152f35b3461030a57600036600319011261030a57602060405160008152f35b3461030a57602036600319011261030a576004356119ca81610697565b60018060a01b0316600052600a602052602060ff604060002054166040519015158152f35b3461030a57600036600319011261030a576020600754604051908152f35b3461030a57604036600319011261030a57610019602435600435611a3082610697565b806000526000602052611a4a6001604060002001546134c3565b61372e565b3461030a57602036600319011261030a57611a68610de8565b611a7061346b565b68ffffffffffffffff006002549160081b169068ffffffffffffffff00191617600255600080f35b634e487b7160e01b600052603260045260246000fd5b3461030a57602036600319011261030a57600435600281101561030a5760209060030154604051908152f35b3461030a57600036600319011261030a57602063ffffffff600f5416604051908152f35b3461030a57600036600319011261030a5760206040517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b3461030a57602036600319011261030a57600435611b5681610697565b611b5e61346b565b6001600160a01b03168015611b8a576bffffffffffffffffffffffff60a01b6006541617600655600080f35b60405162461bcd60e51b815260206004820152601e60248201527f547265617375727920616464726573732063616e2774206265207a65726f00006044820152606490fd5b3461030a57602036600319011261030a576004356001600160401b0380821161030a573660238301121561030a57816004013590811161030a576024820191602436918360051b01011161030a57611c256137b7565b611c326064821115612e75565b6000805b828210611d8357336000908152600960205260409020611ca39250611c9e9061113f9063ffffffff841690611c9090611c7c83611c77835463ffffffff1690565b612c53565b63ffffffff1663ffffffff19825416179055565b600f5463ffffffff16612c53565b612ab5565b9182611ce2575b7f9946eba4018b5d38e97bb6f7e2d2b353a0160c45902a6055479df936934a59979250611cdd6040519283923384612f47565b0390a1005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561030a576040516360657e9f60e01b815233600482015260248101949094526000908490604490829084905af1928315610491577f9946eba4018b5d38e97bb6f7e2d2b353a0160c45902a6055479df936934a599793611d70575b50611caa565b80610485611d7d92610a54565b38611d6a565b611df2600191611ded6003611dad611d9c87898b612eb1565b356000526008602052604060002090565b01611dda60ff8254611dc733898060a01b03831614612ec1565b60a01c16611dd481610ac5565b15612f0d565b805460ff60a01b1916600560a01b179055565b612b10565b910190611c36565b3461030a57606036600319011261030a576001600160401b0360043581811161030a57611e2b903690600401610816565b909160243590811161030a57611e45903690600401610816565b929091604435611e536137b7565b611e6c611e66600754838888878961263e565b90612f81565b611ec7611eba611e7d368587612fad565b60208151910120611eaa611ea5611ea16103e984600052600b602052604060002090565b1590565b612fe4565b600052600b602052604060002090565b805460ff19166001179055565b33600090815260096020526040902054611eeb9063ffffffff1661301e565b61301e565b604051630308b70f60e61b815233600482015290946020826024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa96871561049157611f8d611fe096611f656120049a611f9696600091612044575b5063ffffffff808c1691161015613033565b336000908152600a60205260409020611f7d90611eba565b611f8561248f565b963691612fad565b85523691612fad565b6020830152604082015233606082015260006080820152600060a0820152611fdb611fc2600d54612b10565b611fcb81600d55565b6000526008602052604060002090565b6131a9565b3360009081526009602052604090209063ffffffff1663ffffffff19825416179055565b61201961113f611ee6600f5463ffffffff1690565b33600d547fcb2c934a3e9ec8b1063e85a3a228cad961b6af5aee38331ae08d7c76405e1262600080a3005b61205d915060203d60201161124d5761123f8183610a87565b38611f53565b3461030a57600036600319011261030a57602060405166470de4df8200008152f35b3461030a57604036600319011261030a5761209e610de8565b6120a6610dfe565b6120ae61346b565b6001600160401b03808216156121d4578261219f926121916110eb9360036120ec610019986001600160401b03166000526008602052604060002090565b019361211982865461210f600160ff8360a01c1661210981610ac5565b14613315565b60a81c1615613351565b612140612139856001600160401b0316600052600c602052604060002090565b541561338d565b845460ff60a01b1916600160a11b178555845467ffffffffffffffff60a81b191660a885901b67ffffffffffffffff60a81b1617855516916001600160401b0316600052600c602052604060002090565b55546001600160a01b031690565b80546121b39060201c63ffffffff1661301e565b67ffffffff0000000082549160201b169067ffffffff000000001916179055565b60405162461bcd60e51b815260206004820152600a602482015269696e646578207a65726f60b01b6044820152606490fd5b3461030a57602036600319011261030a576122b760043561222561346b565b600361223b826000526008602052604060002090565b0161225060026117a2835460ff9060a01c1690565b805460ff60a01b1916600160a21b178155805460a81c6001600160401b03169061229883612291846001600160401b0316600052600c602052604060002090565b5414612866565b6000809481936001600160401b0316600052600c602052604060002090565b5580546122e4906122d0906001600160a01b03166110eb565b80546121b39060201c63ffffffff16612c3d565b546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116813b156105e3576040516369e7849960e01b81526001600160a01b0391909116600482015291908290602490829084905af1801561049157612377575b507f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b568280a280f35b8061048561238492610a54565b3861234f565b1561239157565b60405162461bcd60e51b815260206004820152600b60248201526a6b6579732061637469766560a81b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b9190916001600160401b03808094169116019182116123f557565b6123c4565b1561240157565b60405162461bcd60e51b815260206004820152600860248201526731b7b7b63237bbb760c11b6044820152606490fd5b9081602091031261030a575190565b6040513d6000823e3d90fd5b1561245357565b60405162461bcd60e51b8152602060048201526007602482015266139bc8189bdb9960ca1b6044820152606490fd5b919082039182116123f557565b6040519060c082018281106001600160401b03821117610a6757604052565b6001600160401b038111610a6757601f01601f191660200190565b60405190602082018281106001600160401b03821117610a675760405260008252565b604051906124f982610a6c565b6015825274092dcecc2d8d2c840e0eac4d6caf240d8cadccee8d605b1b6020830152565b6040519061252a82610a6c565b6018825277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6020830152565b6040519061255e82610a6c565b602082527f4465706f736974206461746120726f6f742063616e6e6f74206265207a65726f6020830152565b90821015612596570190565b611a98565b604051906125a882610a6c565b60158252745075626b65792063616e6e6f74206265207a65726f60581b6020830152565b604051906125d982610a6c565b601882527f5369676e61747572652063616e6e6f74206265207a65726f00000000000000006020830152565b6040519061261282610a6c565b601a82527f4465706f736974206461746120726f6f74206d69736d617463680000000000006020830152565b91959392909495603096603087036127ad57606096606084036127995785156127855760019860005b6001600160401b038116828110156127755761269861268a6126a592868b61258a565b356001600160f81b03191690565b6001600160f81b03191690565b6126ba576001016001600160401b0316612667565b505090919293949596975060005b6127625760019760005b6001600160401b038116828110156127535761269861268a6126f592898961258a565b61270a576001016001600160401b03166126d2565b5050909192939495965060005b6127425761272494613584565b03612737576001906127346124c9565b90565b600090612734612605565b5050505050506000906127346125cc565b50505090919293949596612717565b505050505050905060009061273461259b565b50505090919293949596976126c8565b505050505050915050600090612734612551565b50505050505091505060009061273461251d565b50505050509150506000906127346124ec565b156127c757565b60405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606490fd5b1561280057565b606460405162461bcd60e51b81526020600482015260046024820152637a65726f60e01b6044820152fd5b1561283257565b60405162461bcd60e51b815260206004820152600c60248201526b696e64657820696e2075736560a01b6044820152606490fd5b1561286d57565b60405162461bcd60e51b815260206004820152601b60248201527f434f4445204552524f523a20696e76616c6964206d617070696e6700000000006044820152606490fd5b60036128d1826001600160401b03166000526008602052604060002090565b018054926128ea600260ff8660a01c1661150381610ac5565b6001600160401b039081808216956129038715156127f9565b60a81c169485146109d7576129d5817f3b8a71097e7e93df885e070edf2c6e29adb0bb1af910cc2d0dcb9ce943d87e579461298a612a189561296261295b856001600160401b0316600052600c602052604060002090565b541561282b565b61297f8a6001600160401b0316600052600c602052604060002090565b549816809814612866565b60006129a9896001600160401b0316600052600c602052604060002090565b55805467ffffffffffffffff60a81b191660a89290921b67ffffffffffffffff60a81b16919091179055565b836129f3826001600160401b0316600052600c602052604060002090565b55604080516001600160401b0396871681529590911660208601523394918291820190565b0390a3565b15612a2457565b60405162461bcd60e51b815260206004820152600a60248201526962617463682073697a6560b01b6044820152606490fd5b15612a5d57565b60405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682070656e64696e6760701b6044820152606490fd5b906801bc16d674ec800000918281029281840414901517156123f557565b9066470de4df820000918281029281840414901517156123f557565b15612ad857565b60405162461bcd60e51b815260206004820152601060248201526f0d2dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b60001981146123f55760010190565b15612b2657565b60405162461bcd60e51b815260206004820152600f60248201526e637572736f72206f766572666c6f7760881b6044820152606490fd5b9081602091031261030a575163ffffffff8116810361030a5790565b15612b8057565b60405162461bcd60e51b815260206004820152602c60248201527f434f4445204552524f523a20696e73756666696369656e7420626f6e6420666f60448201526b1c881ad95e481d5c1b1bd85960a21b6064820152608490fd5b949392612c06606093612bf8612c149460808a5260808a01906109a8565b9088820360208a01526108cb565b9086820360408801526109a8565b930152565b906007811015610acf57815460ff60a01b191660a09190911b60ff60a01b16179055565b63ffffffff90811660001901919082116123f557565b63ffffffff91821690821603919082116123f557565b15612c7057565b60405162461bcd60e51b81526020600482015260016024820152600360fc1b6044820152606490fd5b15612ca057565b60405162461bcd60e51b815260206004820152601560248201527404964206973206e6f74206f776e6564206279206f7605c1b6044820152606490fd5b906001600160401b03600092168252600c6020526040822054918215612d4557828152600860205260036040822001549160ff8360a01c16916007831015612d315750600193926001600160a01b03169190565b634e487b7160e01b81526021600452602490fd5b8092509180918190565b15612d5657565b60405162461bcd60e51b8152602060048201526014602482015273416d6f756e742063616e2774206265207a65726f60601b6044820152606490fd5b15612d9957565b60405162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b6044820152606490fd5b15612dd257565b60405162461bcd60e51b815260206004820152600e60248201526d4b6579206e6f742061637469766560901b6044820152606490fd5b60405190608082018281106001600160401b03821117610a67576040526060808352366020840137565b949392612e50606093612bf8612c149460808a5260808a01906109a8565b9086820360408801526108cb565b929190612c146020916040865260408601906109a8565b15612e7c57565b60405162461bcd60e51b815260206004820152600d60248201526c18985d18da080f881b1a5b5a5d609a1b6044820152606490fd5b91908110156125965760051b0190565b15612ec857565b60405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656d6f7665206f746865722773206b6579000000000000006044820152606490fd5b15612f1457565b60405162461bcd60e51b815260206004820152600b60248201526a4e6f742070656e64696e6760a81b6044820152606490fd5b6001600160a01b03909116815260406020820181905281018390526001600160fb1b03831161030a5760609260051b809284830137010190565b15612f895750565b60405162461bcd60e51b8152602060048201529081906107929060248301906108cb565b929192612fb9826124ae565b91612fc76040519384610a87565b82948184528183011161030a578281602093846000960137010152565b15612feb57565b60405162461bcd60e51b815260206004820152600b60248201526a1c1d589ad95e481d5cd95960aa1b6044820152606490fd5b90600163ffffffff809316019182116123f557565b1561303a57565b606460405162461bcd60e51b815260206004820152602060248201527f696e73756666696369656e7420626f6e6420666f72206b65792075706c6f61646044820152fd5b90601f811161308c57505050565b6000916000526020600020906020601f850160051c830194106130ca575b601f0160051c01915b8281106130bf57505050565b8181556001016130b3565b90925082906130aa565b91909182516001600160401b038111610a67576130fb816130f5845461096e565b8461307e565b602080601f831160011461313e5750819061312f939495600092613133575b50508160011b916000199060031b1c19161790565b9055565b01519050388061311a565b90601f1983169561315485600052602060002090565b926000905b88821061319157505083600195969710613178575b505050811b019055565b015160001960f88460031b161c1916905538808061316e565b80600185968294968601518155019501930190613159565b919080519283516001600160401b038111610a67576131cc816130f5845461096e565b602080601f831160011461329a57506132729261320a8360a094600394610ac3999a6000926131335750508160011b916000199060031b1c19161790565b81555b61321e6020860151600183016130d4565b604085015160028201556060850151910180546001600160a01b0319166001600160a01b0390921691909117815592613264608082015161325e81610ac5565b85612c19565b01516001600160401b031690565b815467ffffffffffffffff60a81b191660a89190911b67ffffffffffffffff60a81b16179055565b90601f198316966132b085600052602060002090565b926000905b8982106132fd57505083600393613272969360019360a097610ac39b9c106132e5575b505050811b01815561320d565b015160001983871b60f8161c191690553880806132d8565b806001859682949686015181550195019301906132b5565b1561331c57565b60405162461bcd60e51b815260206004820152600d60248201526c139bdd0819195c1bdcda5d1959609a1b6044820152606490fd5b1561335857565b60405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481859191959609a1b6044820152606490fd5b1561339457565b60405162461bcd60e51b815260206004820152601060248201526f56616c20696e64657820696e2075736560801b6044820152606490fd5b6002600154146133dd576002600155565b604051633ee5aeb560e01b8152600490fd5b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604090207f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff905b54161561344d5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156134a457565b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b600081815260208181526040808320338452909152902060ff90613443565b156134e957565b60405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0eac4d6caf240d8cadccee8d605b1b6044820152606490fd5b1561352d57565b60405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6044820152606490fd5b90613580602092828151948592016108a8565b0190565b936135ad6135b3926135d19661359c603083146134e2565b6135a860608514613526565b613aae565b93613b1a565b60409182519485916020958684019091604092825260208201520190565b03906135e5601f1992838101875286610a87565b8383519586806135f86000998a9461356d565b039060025afa1561049157838561364661362f61363b8351958851928391878301604091634059730760d81b825260208201520190565b03878101835282610a87565b86519182809261356d565b039060025afa1561049157849261368461368e9385519361367884519586928a84019091604092825260208201520190565b03908101845283610a87565b519182809261356d565b039060025afa15610491575190565b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff1661372857808252602082815260408084206001600160a01b038616600090815292529020805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50905090565b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff161561372857808252602082815260408084206001600160a01b038616600090815292529020805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff600254166137c357565b60405163d93c066560e01b8152600490fd5b90926137e460308351146134e2565b6137f16060845114613526565b6020828101516040938401518451808401929092526fffffffffffffffffffffffffffffffff191681850152838152909485949192601f199291613836606086610a87565b85519788958661384960009b8c9361356d565b03600297885afa156104915787519167ffffffffffff00008160081b9160081c9165ff000000ff0064ff000000ff65ffffffffffff66ff000000ff0000861667ff000000ff00000085161760101c16941691161760101b16179287896138ec82840151936138e160608c830151920151956138d58d519384928884019091604092825260208201520190565b038a8101835282610a87565b8a519182809261356d565b0390895afa1561049157878961391c6138d56138e18351958c519283918783016040918152600060208201520190565b0390895afa156104915788613964899261395983519161394d8c519384928884019091604092825260208201520190565b03898101835282610a87565b89519182809261356d565b0390885afa1561049157876139ac88926139a18351956139958b519384928884019091604092825260208201520190565b03888101835282610a87565b88519182809261356d565b0390875afa156104915786613a0287926139f783519561362f8a51938267ffffffff0000000063ffffffff87958b1c16918a1b161760c01b8884019091604092825260208201520190565b87519182809261356d565b0390865afa15610491578593613684613a339386519361367884519586928b84019091604092825260208201520190565b03915afa15610491575190565b805115613a4f57602081519101fd5b60405163d6bda27560e01b8152600490fd5b9060201161030a5790602090565b9060401161030a5760200190602090565b9060601161030a5760400190602090565b359060208110613a9f575090565b6000199060200360031b1b1690565b9060201161030a576000613b07602092604051613af681611059878201946fffffffffffffffffffffffffffffffff1989820135169035869091604092825260208201520190565b6040519283928392519283916108a8565b8101039060025afa156104915760005190565b90613b4c916135b3613b32613b38613b328585613a61565b90613a91565b93613b46613b328286613a6f565b93613a80565b0390613b60601f1992838101875286610a87565b838351958680613b736000998a9461356d565b039060025afa1561049157838561364661362f61363b8351958851928391878301604091815260006020820152019056fea2646970667358221220d3a81b5d8eadfca2495b0bd1ce425a06cb9290c813f08ebdcb57a2c4956f3c0f64736f6c63430008190033",
1223
+ "linkReferences": {},
1224
+ "deployedLinkReferences": {}
1225
+ }