@mainsail/evm-contracts 0.0.1-evm.17 → 0.0.1-evm.19

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.
@@ -4,85 +4,54 @@
4
4
  "type": "function",
5
5
  "name": "UPGRADE_INTERFACE_VERSION",
6
6
  "inputs": [],
7
- "outputs": [
8
- {
9
- "name": "",
10
- "type": "string",
11
- "internalType": "string"
12
- }
13
- ],
7
+ "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
14
8
  "stateMutability": "view"
15
9
  },
16
10
  {
17
11
  "type": "function",
18
12
  "name": "activeValidatorsCount",
19
13
  "inputs": [],
20
- "outputs": [
21
- {
22
- "name": "",
23
- "type": "uint256",
24
- "internalType": "uint256"
25
- }
26
- ],
14
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
27
15
  "stateMutability": "view"
28
16
  },
29
17
  {
30
18
  "type": "function",
31
19
  "name": "addValidator",
32
20
  "inputs": [
33
- {
34
- "name": "addr",
35
- "type": "address",
36
- "internalType": "address"
37
- },
38
- {
39
- "name": "blsPublicKey",
40
- "type": "bytes",
41
- "internalType": "bytes"
42
- },
43
- {
44
- "name": "isResigned",
45
- "type": "bool",
46
- "internalType": "bool"
47
- }
21
+ { "name": "addr", "type": "address", "internalType": "address" },
22
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" },
23
+ { "name": "isResigned", "type": "bool", "internalType": "bool" }
48
24
  ],
49
25
  "outputs": [],
50
26
  "stateMutability": "nonpayable"
51
27
  },
52
28
  {
53
29
  "type": "function",
54
- "name": "addVote",
30
+ "name": "addVotes",
55
31
  "inputs": [
56
- {
57
- "name": "voter",
58
- "type": "address",
59
- "internalType": "address"
60
- },
61
- {
62
- "name": "validator",
63
- "type": "address",
64
- "internalType": "address"
65
- }
32
+ { "name": "voters", "type": "address[]", "internalType": "address[]" },
33
+ { "name": "validators", "type": "address[]", "internalType": "address[]" }
66
34
  ],
67
35
  "outputs": [],
68
36
  "stateMutability": "nonpayable"
69
37
  },
70
38
  {
71
39
  "type": "function",
72
- "name": "calculateActiveValidators",
73
- "inputs": [
74
- {
75
- "name": "n",
76
- "type": "uint8",
77
- "internalType": "uint8"
78
- }
79
- ],
40
+ "name": "calculateRoundValidators",
41
+ "inputs": [{ "name": "n", "type": "uint8", "internalType": "uint8" }],
80
42
  "outputs": [],
81
43
  "stateMutability": "nonpayable"
82
44
  },
83
45
  {
84
46
  "type": "function",
85
- "name": "getActiveValidators",
47
+ "name": "fee",
48
+ "inputs": [],
49
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
50
+ "stateMutability": "view"
51
+ },
52
+ {
53
+ "type": "function",
54
+ "name": "getAllValidators",
86
55
  "inputs": [],
87
56
  "outputs": [
88
57
  {
@@ -90,36 +59,17 @@
90
59
  "type": "tuple[]",
91
60
  "internalType": "struct ConsensusV1.Validator[]",
92
61
  "components": [
93
- {
94
- "name": "addr",
95
- "type": "address",
96
- "internalType": "address"
97
- },
62
+ { "name": "addr", "type": "address", "internalType": "address" },
98
63
  {
99
64
  "name": "data",
100
65
  "type": "tuple",
101
66
  "internalType": "struct ConsensusV1.ValidatorData",
102
67
  "components": [
103
- {
104
- "name": "votersCount",
105
- "type": "uint256",
106
- "internalType": "uint256"
107
- },
108
- {
109
- "name": "voteBalance",
110
- "type": "uint256",
111
- "internalType": "uint256"
112
- },
113
- {
114
- "name": "isResigned",
115
- "type": "bool",
116
- "internalType": "bool"
117
- },
118
- {
119
- "name": "blsPublicKey",
120
- "type": "bytes",
121
- "internalType": "bytes"
122
- }
68
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
69
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
70
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
71
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
72
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
123
73
  ]
124
74
  }
125
75
  ]
@@ -129,7 +79,7 @@
129
79
  },
130
80
  {
131
81
  "type": "function",
132
- "name": "getAllValidators",
82
+ "name": "getRoundValidators",
133
83
  "inputs": [],
134
84
  "outputs": [
135
85
  {
@@ -137,36 +87,17 @@
137
87
  "type": "tuple[]",
138
88
  "internalType": "struct ConsensusV1.Validator[]",
139
89
  "components": [
140
- {
141
- "name": "addr",
142
- "type": "address",
143
- "internalType": "address"
144
- },
90
+ { "name": "addr", "type": "address", "internalType": "address" },
145
91
  {
146
92
  "name": "data",
147
93
  "type": "tuple",
148
94
  "internalType": "struct ConsensusV1.ValidatorData",
149
95
  "components": [
150
- {
151
- "name": "votersCount",
152
- "type": "uint256",
153
- "internalType": "uint256"
154
- },
155
- {
156
- "name": "voteBalance",
157
- "type": "uint256",
158
- "internalType": "uint256"
159
- },
160
- {
161
- "name": "isResigned",
162
- "type": "bool",
163
- "internalType": "bool"
164
- },
165
- {
166
- "name": "blsPublicKey",
167
- "type": "bytes",
168
- "internalType": "bytes"
169
- }
96
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
97
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
98
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
99
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
100
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
170
101
  ]
171
102
  }
172
103
  ]
@@ -178,16 +109,8 @@
178
109
  "type": "function",
179
110
  "name": "getRounds",
180
111
  "inputs": [
181
- {
182
- "name": "offset",
183
- "type": "uint256",
184
- "internalType": "uint256"
185
- },
186
- {
187
- "name": "count",
188
- "type": "uint256",
189
- "internalType": "uint256"
190
- }
112
+ { "name": "offset", "type": "uint256", "internalType": "uint256" },
113
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
191
114
  ],
192
115
  "outputs": [
193
116
  {
@@ -195,26 +118,14 @@
195
118
  "type": "tuple[]",
196
119
  "internalType": "struct ConsensusV1.Round[]",
197
120
  "components": [
198
- {
199
- "name": "round",
200
- "type": "uint256",
201
- "internalType": "uint256"
202
- },
121
+ { "name": "round", "type": "uint256", "internalType": "uint256" },
203
122
  {
204
123
  "name": "validators",
205
124
  "type": "tuple[]",
206
125
  "internalType": "struct ConsensusV1.RoundValidator[]",
207
126
  "components": [
208
- {
209
- "name": "addr",
210
- "type": "address",
211
- "internalType": "address"
212
- },
213
- {
214
- "name": "voteBalance",
215
- "type": "uint256",
216
- "internalType": "uint256"
217
- }
127
+ { "name": "addr", "type": "address", "internalType": "address" },
128
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" }
218
129
  ]
219
130
  }
220
131
  ]
@@ -226,61 +137,30 @@
226
137
  "type": "function",
227
138
  "name": "getRoundsCount",
228
139
  "inputs": [],
229
- "outputs": [
230
- {
231
- "name": "",
232
- "type": "uint256",
233
- "internalType": "uint256"
234
- }
235
- ],
140
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
236
141
  "stateMutability": "view"
237
142
  },
238
143
  {
239
144
  "type": "function",
240
145
  "name": "getValidator",
241
- "inputs": [
242
- {
243
- "name": "addr",
244
- "type": "address",
245
- "internalType": "address"
246
- }
247
- ],
146
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
248
147
  "outputs": [
249
148
  {
250
149
  "name": "",
251
150
  "type": "tuple",
252
151
  "internalType": "struct ConsensusV1.Validator",
253
152
  "components": [
254
- {
255
- "name": "addr",
256
- "type": "address",
257
- "internalType": "address"
258
- },
153
+ { "name": "addr", "type": "address", "internalType": "address" },
259
154
  {
260
155
  "name": "data",
261
156
  "type": "tuple",
262
157
  "internalType": "struct ConsensusV1.ValidatorData",
263
158
  "components": [
264
- {
265
- "name": "votersCount",
266
- "type": "uint256",
267
- "internalType": "uint256"
268
- },
269
- {
270
- "name": "voteBalance",
271
- "type": "uint256",
272
- "internalType": "uint256"
273
- },
274
- {
275
- "name": "isResigned",
276
- "type": "bool",
277
- "internalType": "bool"
278
- },
279
- {
280
- "name": "blsPublicKey",
281
- "type": "bytes",
282
- "internalType": "bytes"
283
- }
159
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
160
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
161
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
162
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
163
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
284
164
  ]
285
165
  }
286
166
  ]
@@ -292,16 +172,8 @@
292
172
  "type": "function",
293
173
  "name": "getVotes",
294
174
  "inputs": [
295
- {
296
- "name": "addr",
297
- "type": "address",
298
- "internalType": "address"
299
- },
300
- {
301
- "name": "count",
302
- "type": "uint256",
303
- "internalType": "uint256"
304
- }
175
+ { "name": "addr", "type": "address", "internalType": "address" },
176
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
305
177
  ],
306
178
  "outputs": [
307
179
  {
@@ -309,16 +181,8 @@
309
181
  "type": "tuple[]",
310
182
  "internalType": "struct ConsensusV1.VoteResult[]",
311
183
  "components": [
312
- {
313
- "name": "voter",
314
- "type": "address",
315
- "internalType": "address"
316
- },
317
- {
318
- "name": "validator",
319
- "type": "address",
320
- "internalType": "address"
321
- }
184
+ { "name": "voter", "type": "address", "internalType": "address" },
185
+ { "name": "validator", "type": "address", "internalType": "address" }
322
186
  ]
323
187
  }
324
188
  ],
@@ -328,92 +192,43 @@
328
192
  "type": "function",
329
193
  "name": "getVotesCount",
330
194
  "inputs": [],
331
- "outputs": [
332
- {
333
- "name": "",
334
- "type": "uint256",
335
- "internalType": "uint256"
336
- }
337
- ],
195
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
338
196
  "stateMutability": "view"
339
197
  },
340
198
  {
341
199
  "type": "function",
342
200
  "name": "initialize",
343
- "inputs": [],
201
+ "inputs": [{ "name": "registrationFee", "type": "uint128", "internalType": "uint128" }],
344
202
  "outputs": [],
345
203
  "stateMutability": "nonpayable"
346
204
  },
347
205
  {
348
206
  "type": "function",
349
207
  "name": "isValidatorRegistered",
350
- "inputs": [
351
- {
352
- "name": "addr",
353
- "type": "address",
354
- "internalType": "address"
355
- }
356
- ],
357
- "outputs": [
358
- {
359
- "name": "",
360
- "type": "bool",
361
- "internalType": "bool"
362
- }
363
- ],
208
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
209
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
364
210
  "stateMutability": "view"
365
211
  },
366
212
  {
367
213
  "type": "function",
368
214
  "name": "owner",
369
215
  "inputs": [],
370
- "outputs": [
371
- {
372
- "name": "",
373
- "type": "address",
374
- "internalType": "address"
375
- }
376
- ],
216
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
377
217
  "stateMutability": "view"
378
218
  },
379
219
  {
380
220
  "type": "function",
381
221
  "name": "proxiableUUID",
382
222
  "inputs": [],
383
- "outputs": [
384
- {
385
- "name": "",
386
- "type": "bytes32",
387
- "internalType": "bytes32"
388
- }
389
- ],
223
+ "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
390
224
  "stateMutability": "view"
391
225
  },
392
226
  {
393
227
  "type": "function",
394
228
  "name": "registerValidator",
395
- "inputs": [
396
- {
397
- "name": "blsPublicKey",
398
- "type": "bytes",
399
- "internalType": "bytes"
400
- }
401
- ],
229
+ "inputs": [{ "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }],
402
230
  "outputs": [],
403
- "stateMutability": "nonpayable"
404
- },
405
- {
406
- "type": "function",
407
- "name": "registeredValidatorsCount",
408
- "inputs": [],
409
- "outputs": [
410
- {
411
- "name": "",
412
- "type": "uint256",
413
- "internalType": "uint256"
414
- }
415
- ],
416
- "stateMutability": "view"
231
+ "stateMutability": "payable"
417
232
  },
418
233
  {
419
234
  "type": "function",
@@ -422,69 +237,47 @@
422
237
  "outputs": [],
423
238
  "stateMutability": "nonpayable"
424
239
  },
240
+ { "type": "function", "name": "resignValidator", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
425
241
  {
426
242
  "type": "function",
427
- "name": "resignValidator",
243
+ "name": "resignedValidatorsCount",
428
244
  "inputs": [],
429
- "outputs": [],
430
- "stateMutability": "nonpayable"
245
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
246
+ "stateMutability": "view"
431
247
  },
432
248
  {
433
249
  "type": "function",
434
- "name": "resignedValidatorsCount",
250
+ "name": "roundValidatorsCount",
435
251
  "inputs": [],
436
- "outputs": [
437
- {
438
- "name": "",
439
- "type": "uint256",
440
- "internalType": "uint256"
441
- }
442
- ],
252
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
443
253
  "stateMutability": "view"
444
254
  },
445
255
  {
446
256
  "type": "function",
447
- "name": "transferOwnership",
448
- "inputs": [
449
- {
450
- "name": "newOwner",
451
- "type": "address",
452
- "internalType": "address"
453
- }
454
- ],
257
+ "name": "setFee",
258
+ "inputs": [{ "name": "registrationFee", "type": "uint128", "internalType": "uint128" }],
455
259
  "outputs": [],
456
260
  "stateMutability": "nonpayable"
457
261
  },
458
262
  {
459
263
  "type": "function",
460
- "name": "unvote",
461
- "inputs": [],
264
+ "name": "transferOwnership",
265
+ "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }],
462
266
  "outputs": [],
463
267
  "stateMutability": "nonpayable"
464
268
  },
269
+ { "type": "function", "name": "unvote", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
465
270
  {
466
271
  "type": "function",
467
272
  "name": "updateValidator",
468
- "inputs": [
469
- {
470
- "name": "blsPublicKey",
471
- "type": "bytes",
472
- "internalType": "bytes"
473
- }
474
- ],
273
+ "inputs": [{ "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }],
475
274
  "outputs": [],
476
275
  "stateMutability": "nonpayable"
477
276
  },
478
277
  {
479
278
  "type": "function",
480
279
  "name": "updateVoters",
481
- "inputs": [
482
- {
483
- "name": "voters",
484
- "type": "address[]",
485
- "internalType": "address[]"
486
- }
487
- ],
280
+ "inputs": [{ "name": "voters", "type": "address[]", "internalType": "address[]" }],
488
281
  "outputs": [],
489
282
  "stateMutability": "nonpayable"
490
283
  },
@@ -492,75 +285,51 @@
492
285
  "type": "function",
493
286
  "name": "upgradeToAndCall",
494
287
  "inputs": [
495
- {
496
- "name": "newImplementation",
497
- "type": "address",
498
- "internalType": "address"
499
- },
500
- {
501
- "name": "data",
502
- "type": "bytes",
503
- "internalType": "bytes"
504
- }
288
+ { "name": "newImplementation", "type": "address", "internalType": "address" },
289
+ { "name": "data", "type": "bytes", "internalType": "bytes" }
505
290
  ],
506
291
  "outputs": [],
507
292
  "stateMutability": "payable"
508
293
  },
294
+ {
295
+ "type": "function",
296
+ "name": "validatorsCount",
297
+ "inputs": [],
298
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
299
+ "stateMutability": "view"
300
+ },
509
301
  {
510
302
  "type": "function",
511
303
  "name": "version",
512
304
  "inputs": [],
513
- "outputs": [
514
- {
515
- "name": "",
516
- "type": "uint256",
517
- "internalType": "uint256"
518
- }
519
- ],
305
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
520
306
  "stateMutability": "pure"
521
307
  },
522
308
  {
523
309
  "type": "function",
524
310
  "name": "vote",
525
- "inputs": [
526
- {
527
- "name": "addr",
528
- "type": "address",
529
- "internalType": "address"
530
- }
531
- ],
311
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
532
312
  "outputs": [],
533
313
  "stateMutability": "nonpayable"
534
314
  },
315
+ {
316
+ "type": "event",
317
+ "name": "FeeUpdated",
318
+ "inputs": [{ "name": "fee", "type": "uint256", "indexed": false, "internalType": "uint256" }],
319
+ "anonymous": false
320
+ },
535
321
  {
536
322
  "type": "event",
537
323
  "name": "Initialized",
538
- "inputs": [
539
- {
540
- "name": "version",
541
- "type": "uint64",
542
- "indexed": false,
543
- "internalType": "uint64"
544
- }
545
- ],
324
+ "inputs": [{ "name": "version", "type": "uint64", "indexed": false, "internalType": "uint64" }],
546
325
  "anonymous": false
547
326
  },
548
327
  {
549
328
  "type": "event",
550
329
  "name": "OwnershipTransferred",
551
330
  "inputs": [
552
- {
553
- "name": "previousOwner",
554
- "type": "address",
555
- "indexed": true,
556
- "internalType": "address"
557
- },
558
- {
559
- "name": "newOwner",
560
- "type": "address",
561
- "indexed": true,
562
- "internalType": "address"
563
- }
331
+ { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" },
332
+ { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }
564
333
  ],
565
334
  "anonymous": false
566
335
  },
@@ -568,82 +337,38 @@
568
337
  "type": "event",
569
338
  "name": "Unvoted",
570
339
  "inputs": [
571
- {
572
- "name": "voter",
573
- "type": "address",
574
- "indexed": false,
575
- "internalType": "address"
576
- },
577
- {
578
- "name": "validator",
579
- "type": "address",
580
- "indexed": false,
581
- "internalType": "address"
582
- }
340
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
341
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
583
342
  ],
584
343
  "anonymous": false
585
344
  },
586
345
  {
587
346
  "type": "event",
588
347
  "name": "Upgraded",
589
- "inputs": [
590
- {
591
- "name": "implementation",
592
- "type": "address",
593
- "indexed": true,
594
- "internalType": "address"
595
- }
596
- ],
348
+ "inputs": [{ "name": "implementation", "type": "address", "indexed": true, "internalType": "address" }],
597
349
  "anonymous": false
598
350
  },
599
351
  {
600
352
  "type": "event",
601
353
  "name": "ValidatorRegistered",
602
354
  "inputs": [
603
- {
604
- "name": "addr",
605
- "type": "address",
606
- "indexed": false,
607
- "internalType": "address"
608
- },
609
- {
610
- "name": "blsPublicKey",
611
- "type": "bytes",
612
- "indexed": false,
613
- "internalType": "bytes"
614
- }
355
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
356
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
615
357
  ],
616
358
  "anonymous": false
617
359
  },
618
360
  {
619
361
  "type": "event",
620
362
  "name": "ValidatorResigned",
621
- "inputs": [
622
- {
623
- "name": "addr",
624
- "type": "address",
625
- "indexed": false,
626
- "internalType": "address"
627
- }
628
- ],
363
+ "inputs": [{ "name": "addr", "type": "address", "indexed": false, "internalType": "address" }],
629
364
  "anonymous": false
630
365
  },
631
366
  {
632
367
  "type": "event",
633
368
  "name": "ValidatorUpdated",
634
369
  "inputs": [
635
- {
636
- "name": "addr",
637
- "type": "address",
638
- "indexed": false,
639
- "internalType": "address"
640
- },
641
- {
642
- "name": "blsPublicKey",
643
- "type": "bytes",
644
- "indexed": false,
645
- "internalType": "bytes"
646
- }
370
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
371
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
647
372
  ],
648
373
  "anonymous": false
649
374
  },
@@ -651,216 +376,81 @@
651
376
  "type": "event",
652
377
  "name": "Voted",
653
378
  "inputs": [
654
- {
655
- "name": "voter",
656
- "type": "address",
657
- "indexed": false,
658
- "internalType": "address"
659
- },
660
- {
661
- "name": "validator",
662
- "type": "address",
663
- "indexed": false,
664
- "internalType": "address"
665
- }
379
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
380
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
666
381
  ],
667
382
  "anonymous": false
668
383
  },
669
384
  {
670
385
  "type": "error",
671
386
  "name": "AddressEmptyCode",
672
- "inputs": [
673
- {
674
- "name": "target",
675
- "type": "address",
676
- "internalType": "address"
677
- }
678
- ]
679
- },
680
- {
681
- "type": "error",
682
- "name": "AlreadyVoted",
683
- "inputs": []
684
- },
685
- {
686
- "type": "error",
687
- "name": "BellowMinValidators",
688
- "inputs": []
689
- },
690
- {
691
- "type": "error",
692
- "name": "BlsKeyAlreadyRegistered",
693
- "inputs": []
694
- },
695
- {
696
- "type": "error",
697
- "name": "BlsKeyIsInvalid",
698
- "inputs": []
699
- },
700
- {
701
- "type": "error",
702
- "name": "CallerIsNotValidator",
703
- "inputs": []
387
+ "inputs": [{ "name": "target", "type": "address", "internalType": "address" }]
704
388
  },
389
+ { "type": "error", "name": "AlreadyVoted", "inputs": [] },
390
+ { "type": "error", "name": "BellowMinValidators", "inputs": [] },
391
+ { "type": "error", "name": "BlsKeyAlreadyRegistered", "inputs": [] },
392
+ { "type": "error", "name": "BlsKeyIsInvalid", "inputs": [] },
393
+ { "type": "error", "name": "CallerIsNotValidator", "inputs": [] },
705
394
  {
706
395
  "type": "error",
707
396
  "name": "ERC1967InvalidImplementation",
708
- "inputs": [
709
- {
710
- "name": "implementation",
711
- "type": "address",
712
- "internalType": "address"
713
- }
714
- ]
715
- },
716
- {
717
- "type": "error",
718
- "name": "ERC1967NonPayable",
719
- "inputs": []
720
- },
721
- {
722
- "type": "error",
723
- "name": "FailedCall",
724
- "inputs": []
725
- },
726
- {
727
- "type": "error",
728
- "name": "ImportIsNotAllowed",
729
- "inputs": []
730
- },
731
- {
732
- "type": "error",
733
- "name": "InvalidInitialization",
734
- "inputs": []
735
- },
736
- {
737
- "type": "error",
738
- "name": "InvalidParameters",
739
- "inputs": []
740
- },
397
+ "inputs": [{ "name": "implementation", "type": "address", "internalType": "address" }]
398
+ },
399
+ { "type": "error", "name": "ERC1967NonPayable", "inputs": [] },
400
+ { "type": "error", "name": "FailedCall", "inputs": [] },
401
+ { "type": "error", "name": "ImportIsNotAllowed", "inputs": [] },
402
+ { "type": "error", "name": "InvalidFee", "inputs": [] },
403
+ { "type": "error", "name": "InvalidInitialization", "inputs": [] },
404
+ { "type": "error", "name": "InvalidParameters", "inputs": [] },
741
405
  {
742
406
  "type": "error",
743
407
  "name": "InvalidRange",
744
408
  "inputs": [
745
- {
746
- "name": "min",
747
- "type": "uint256",
748
- "internalType": "uint256"
749
- },
750
- {
751
- "name": "max",
752
- "type": "uint256",
753
- "internalType": "uint256"
754
- }
409
+ { "name": "min", "type": "uint256", "internalType": "uint256" },
410
+ { "name": "max", "type": "uint256", "internalType": "uint256" }
755
411
  ]
756
412
  },
757
- {
758
- "type": "error",
759
- "name": "MissingVote",
760
- "inputs": []
761
- },
762
- {
763
- "type": "error",
764
- "name": "NoActiveValidators",
765
- "inputs": []
766
- },
767
- {
768
- "type": "error",
769
- "name": "NotInitializing",
770
- "inputs": []
771
- },
413
+ { "type": "error", "name": "MissingVote", "inputs": [] },
414
+ { "type": "error", "name": "NoActiveValidators", "inputs": [] },
415
+ { "type": "error", "name": "NotInitializing", "inputs": [] },
772
416
  {
773
417
  "type": "error",
774
418
  "name": "OwnableInvalidOwner",
775
- "inputs": [
776
- {
777
- "name": "owner",
778
- "type": "address",
779
- "internalType": "address"
780
- }
781
- ]
419
+ "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }]
782
420
  },
783
421
  {
784
422
  "type": "error",
785
423
  "name": "OwnableUnauthorizedAccount",
786
- "inputs": [
787
- {
788
- "name": "account",
789
- "type": "address",
790
- "internalType": "address"
791
- }
792
- ]
793
- },
794
- {
795
- "type": "error",
796
- "name": "UUPSUnauthorizedCallContext",
797
- "inputs": []
424
+ "inputs": [{ "name": "account", "type": "address", "internalType": "address" }]
798
425
  },
426
+ { "type": "error", "name": "RefundFailed", "inputs": [] },
427
+ { "type": "error", "name": "UUPSUnauthorizedCallContext", "inputs": [] },
799
428
  {
800
429
  "type": "error",
801
430
  "name": "UUPSUnsupportedProxiableUUID",
802
- "inputs": [
803
- {
804
- "name": "slot",
805
- "type": "bytes32",
806
- "internalType": "bytes32"
807
- }
808
- ]
809
- },
810
- {
811
- "type": "error",
812
- "name": "ValidatorAlreadyRegistered",
813
- "inputs": []
814
- },
815
- {
816
- "type": "error",
817
- "name": "ValidatorAlreadyResigned",
818
- "inputs": []
819
- },
820
- {
821
- "type": "error",
822
- "name": "ValidatorNotRegistered",
823
- "inputs": []
824
- },
825
- {
826
- "type": "error",
827
- "name": "VoteResignedValidator",
828
- "inputs": []
829
- },
830
- {
831
- "type": "error",
832
- "name": "VoteSameValidator",
833
- "inputs": []
834
- },
835
- {
836
- "type": "error",
837
- "name": "VoteValidatorWithoutBlsPublicKey",
838
- "inputs": []
839
- }
431
+ "inputs": [{ "name": "slot", "type": "bytes32", "internalType": "bytes32" }]
432
+ },
433
+ { "type": "error", "name": "ValidatorAlreadyRegistered", "inputs": [] },
434
+ { "type": "error", "name": "ValidatorAlreadyResigned", "inputs": [] },
435
+ { "type": "error", "name": "ValidatorNotRegistered", "inputs": [] },
436
+ { "type": "error", "name": "VoteResignedValidator", "inputs": [] },
437
+ { "type": "error", "name": "VoteSameValidator", "inputs": [] },
438
+ { "type": "error", "name": "VoteValidatorWithoutBlsPublicKey", "inputs": [] }
840
439
  ],
841
440
  "bytecode": {
842
- "object": "0x60a0604052306080523480156012575f5ffd5b5060805161387e6100395f395f81816122680152818161229101526123d0015261387e5ff3fe6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911610610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c2008ba912f84e414e2203da5653590d635cc8f9c4ca2e59b6840a2d5fe5fce464736f6c634300081b0033",
843
- "sourceMap": "1266:19289:37:-:0;;;1171:4:25;1128:48;;1266:19289:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
441
+ "object": "0x60a0604052306080523480156012575f5ffd5b5060805161409d6100395f395f818161242e015281816124570152612596015261409d5ff3fe6080604052600436106101d0575f3560e01c8063715018a6116100fd578063c5a7444911610092578063eb9019d411610062578063eb9019d414610512578063ed612f8c1461053e578063f2fde38b14610552578063f3513a3714610571575f5ffd5b8063c5a7444914610488578063d04a68c7146104a7578063ddca3f43146104d6578063e9257dc8146104f3575f5ffd5b8063a250eaf1116100cd578063a250eaf114610402578063ad3cb1cc14610423578063b84d356e14610460578063b85f5da214610474575f5ffd5b8063715018a6146103755780637c8a92c3146103895780638da5cb5b146103a8578063a09686c4146103ee575f5ffd5b806340f74f471161017357806356db9ef11161014357806356db9ef1146103055780635a8eed7314610324578063602a9eee146103435780636dd7d8ea14610356575f5ffd5b806340f74f471461029f5780634f1ef286146102cb57806352d1902d146102de57806354fd4d50146102f2575f5ffd5b80631b605b86116101ae5780631b605b86146102375780632bdf6d431461024b5780633174b6891461026c5780633687f24a14610280575f5ffd5b80630777cbef146101d45780630d2bd909146101f75780631904bb2e1461020b575b5f5ffd5b3480156101df575f5ffd5b506006545b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506004546101e4565b348015610216575f5ffd5b5061022a610225366004613763565b610585565b6040516101ee919061383e565b348015610242575f5ffd5b50600a546101e4565b348015610256575f5ffd5b5061026a610265366004613897565b6106c2565b005b348015610277575f5ffd5b5061026a610710565b34801561028b575f5ffd5b5061026a61029a3660046138d5565b61075f565b3480156102aa575f5ffd5b506102be6102b93660046138fb565b6107bc565b6040516101ee919061391b565b61026a6102d93660046139e8565b61094f565b3480156102e9575f5ffd5b506101e461096e565b3480156102fd575f5ffd5b5060016101e4565b348015610310575f5ffd5b5061026a61031f3660046138d5565b610989565b34801561032f575f5ffd5b5061026a61033e366004613ae6565b610aa0565b61026a610351366004613ae6565b610b55565b348015610361575f5ffd5b5061026a610370366004613763565b610d54565b348015610380575f5ffd5b5061026a610fff565b348015610394575f5ffd5b5061026a6103a3366004613b18565b611012565b3480156103b3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101ee565b3480156103f9575f5ffd5b506011546101e4565b34801561040d575f5ffd5b506104166112a5565b6040516101ee9190613b7d565b34801561042e575f5ffd5b50610453604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ee9190613bd4565b34801561046b575f5ffd5b50600e546101e4565b34801561047f575f5ffd5b5061026a611468565b348015610493575f5ffd5b5061026a6104a2366004613be6565b6115ef565b3480156104b2575f5ffd5b506104c66104c1366004613763565b611bbd565b60405190151581526020016101ee565b3480156104e1575f5ffd5b506010546001600160801b03166101e4565b3480156104fe575f5ffd5b5061026a61050d366004613c06565b611bda565b34801561051d575f5ffd5b5061053161052c366004613c70565b611c9d565b6040516101ee9190613c98565b348015610549575f5ffd5b506003546101e4565b34801561055d575f5ffd5b5061026a61056c366004613763565b611e9e565b34801561057c575f5ffd5b50610416611edb565b61058d613655565b61059682611bbd565b6105b35760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff161515606085015260028101805493949285019360808401919061063990613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461066590613cf2565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b50505091909252505050905292915050565b6106ca612098565b5f5b8181101561070b576107038383838181106106e9576106e9613d24565b90506020020160208101906106fe9190613763565b6120f3565b6001016106cc565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef3361073a6121cd565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b610767612098565b601080546001600160801b0319166001600160801b0383169081179091556040519081527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020015b60405180910390a150565b60606107c6612098565b601154829084106107d857505f6107fc565b6011546107e58486613d4c565b11156107fc576011546107f9908590613d5f565b90505b5f816001600160401b03811115610815576108156139d4565b60405190808252806020026020018201604052801561085a57816020015b604080518082019091525f8152606060208201528152602001906001900390816108335790505b5090505f5b82811015610944576040518060400160405280828861087e9190613d4c565b610889906001613d4c565b8152602001601161089a848a613d4c565b815481106108aa576108aa613d24565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610918575f848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016108d1565b5050505081525082828151811061093157610931613d24565b602090810291909101015260010161085f565b509150505b92915050565b610957612423565b610960826124c7565b61096a82826124cf565b5050565b5f61097761258b565b505f5160206140485f395f51905f5290565b5f6109926125d4565b805490915060ff600160401b82041615906001600160401b03165f811580156109b85750825b90505f826001600160401b031660011480156109d35750303b155b9050811580156109e1575080155b156109ff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a2957845460ff60401b1916600160401b1785555b610a32336125fc565b6001600f55601080546001600160801b0319166001600160801b0388161790558315610a9857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610aa933611bbd565b610ac65760405163510b8aad60e11b815260040160405180910390fd5b610ad0828261260d565b335f908152602081905260409020600201610aec828483613db6565b50610af633612681565b8015610b085750610b06336126ca565b155b15610b1657610b163361272c565b7f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b4993929190613e6f565b60405180910390a15050565b6010546001600160801b03163414610b80576040516358d620b360e01b815260040160405180910390fd5b335f9081526001602052604090205460ff1615610bb05760405163132e7efb60e31b815260040160405180910390fd5b610bba828261260d565b5f6040518060a001604052805f8152602001346001600160801b031681526020015f6001600160401b031681526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050338152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b0390951694909417949094179390931691909117909155608083015192935083929091506002820190610cc49082613eae565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191633908117909155610d14915061272c565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c338484604051610d4793929190613e6f565b60405180910390a1505050565b610d5d81611bbd565b610d7a5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526020819052604090206001810154600160c01b900460ff1615610dbe5760405163510ae2bd60e11b815260040160405180910390fd5b806002018054610dcd90613cf2565b90505f03610dee5760405163970c784d60e01b815260040160405180910390fd5b335f90815260076020526040902080546001600160a01b03848116911603610e2957604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610e4357610e416121cd565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560085416610ef55760088054336001600160a01b03199182168117909255600980549091169091179055610f4c565b600980546001600160a01b039081165f9081526007602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f610f5b83613f68565b9091555050815433319083905f90610f74908490613d4c565b909155505060018281018054601090610f9e908490600160801b90046001600160401b0316613f80565b82546001600160401b039182166101009390930a928302919092021990911617905550604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610d47565b611007612098565b6110105f61279f565b565b61101a612098565b6011541561103b576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff16156110745760405163132e7efb60e31b815260040160405180910390fd5b60025f8484604051611087929190613f9f565b604080519182900390912082526020820192909252015f205460ff16156110c157604051637e4c066f60e01b815260040160405180910390fd5b81156110d1576110d1838361260d565b5f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b03168152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506001600160a01b0388168152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b03909516949094179490941793909316919091179091556080830151929350839290915060028201906111e49082613eae565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561124c5760068054905f61124683613f68565b91905055505b61125585612681565b15611263576112638561272c565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c85858560405161129693929190613e6f565b60405180910390a15050505050565b600c546060905f906001600160401b038111156112c4576112c46139d4565b6040519080825280602002602001820160405280156112fd57816020015b6112ea613655565b8152602001906001900390816112e25790505b5090505f5b600c54811015611462575f600c828154811061132057611320613d24565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff161515606086015260028201805493965091949093840192909185916080840191906113b890613cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546113e490613cf2565b801561142f5780601f106114065761010080835404028352916020019161142f565b820191905f5260205f20905b81548152906001019060200180831161141257829003601f168201915b50505050508152505081525084848151811061144d5761144d613d24565b60209081029190910101525050600101611302565b50919050565b61147133611bbd565b61148e5760405163668191af60e11b815260040160405180910390fd5b335f9081526020819052604090206001810154600160c01b900460ff16156114c957604051632d8b5c9760e21b815260040160405180910390fd5b600f54600454116114ed57604051633b15f1f760e21b815260040160405180910390fd5b6001818101805460ff60c01b1916600160c01b179055600680545f90611514908490613d4c565b9091555061152390503361280f565b60018101546001600160801b0316156115bf576001810180546001600160801b031981169091556040516001600160801b03909116905f90339083908381818185875af1925050503d805f8114611595576040519150601f19603f3d011682016040523d82523d5f602084013e61159a565b606091505b50509050806115bc57604051633c31275160e21b815260040160405180910390fd5b50505b6040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a54117906020016107b1565b6115f7612098565b8060ff165f0361161a57604051630e52390960e41b815260040160405180910390fd5b60ff8116600f5561162961291f565b611631612abd565b600d80546001600160a01b03191690556004545f906116569060ff8416908390612b0e565b90508060ff165f0361167b576040516367c0fced60e01b815260040160405180910390fd5b5f5b600454811015611988575f6004828154811061169b5761169b613d24565b5f9182526020808320909101546001600160a01b031680835290829052604090912060018101549192509060ff600160c01b90910416806116ea57508060020180546116e690613cf2565b1590505b156116f6575050611980565b600d546001600160a01b03166117315750600d80546001600160a01b0319166001600160a01b03929092169190911790556001600e55611980565b8360ff16600e54101561174f576117488285612b60565b5050611980565b600d546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160a0810184528554815260018601546001600160801b03811682850152600160801b81046001600160401b031694820194909452600160c01b90930460ff1615156060840152600285018054919461196d949093840192909187916080840191906117e490613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461181090613cf2565b801561185b5780601f106118325761010080835404028352916020019161185b565b820191905f5260205f20905b81548152906001019060200180831161183e57829003601f168201915b505050919092525050509052604080518082018252600d546001600160a01b03168152815160a0810183528554815260018601546001600160801b038116602080840191909152600160801b82046001600160401b031694830194909452600160c01b900460ff16151560608201526002860180549293840192879160808401916118e590613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461191190613cf2565b801561195c5780601f106119335761010080835404028352916020019161195c565b820191905f5260205f20905b81548152906001019060200180831161193f57829003601f168201915b505050505081525050815250612fa5565b1561197c5761197c8386612b60565b5050505b60010161167d565b50600e545f036119ab576040516367c0fced60e01b815260040160405180910390fd5b600d54600e546001600160a01b03909116905f906001600160401b038111156119d6576119d66139d4565b6040519080825280602002602001820160405280156119ff578160200160208202803683370190505b5090505f5b600e54811015611a595782828281518110611a2157611a21613d24565b6001600160a01b039283166020918202929092018101919091529381165f908152600b90945260409093205490921691600101611a04565b50611a6381612fe1565b601180546001810182555f9182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680190611aa090600c906136b6565b600f546001600160401b03811115611aba57611aba6139d4565b604051908082528060200260200182016040528015611ae3578160200160208202803683370190505b508051611af891600c916020909101906136d1565b505f5b600f54811015610a98575f83600e5483611b159190613fae565b81518110611b2557611b25613d24565b6020026020010151905080600c8381548110611b4357611b43613d24565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832054858301908152875460018181018a558986529390942095516002909402909501805493909416921691909117825591519082015501611afb565b6001600160a01b03165f9081526001602052604090205460ff1690565b611be2612098565b828114611c2e5760405162461bcd60e51b81526020600482015260156024820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60448201526064015b60405180910390fd5b5f5b83811015611c9657611c8e858583818110611c4d57611c4d613d24565b9050602002016020810190611c629190613763565b848484818110611c7457611c74613d24565b9050602002016020810190611c899190613763565b6130f8565b600101611c30565b5050505050565b6060611ca7612098565b5f611cb5835f600a54612b0e565b6001600160401b03811115611ccc57611ccc6139d4565b604051908082528060200260200182016040528015611d1057816020015b604080518082019091525f8082526020820152815260200190600190039081611cea5790505b506008549091506001600160a01b0390811690851615611d4957506001600160a01b038085165f90815260076020526040902060030154165b5f5b6001600160a01b03821615801590611d6257508481105b15611dd7576001600160a01b038083165f818152600760209081526040918290208251808401909352928252825490931692810192909252908483611da681613f68565b945081518110611db857611db8613d24565b6020908102919091010152600301546001600160a01b03169150611d4b565b80835103611dea57829350505050610949565b5f816001600160401b03811115611e0357611e036139d4565b604051908082528060200260200182016040528015611e4757816020015b604080518082019091525f8082526020820152815260200190600190039081611e215790505b5090505f5b82811015611e9357848181518110611e6657611e66613d24565b6020026020010151828281518110611e8057611e80613d24565b6020908102919091010152600101611e4c565b509695505050505050565b611ea6612098565b6001600160a01b038116611ecf57604051631e4fbdf760e01b81525f6004820152602401611c25565b611ed88161279f565b50565b6003546060905f906001600160401b03811115611efa57611efa6139d4565b604051908082528060200260200182016040528015611f3357816020015b611f20613655565b815260200190600190039081611f185790505b5090505f5b600354811015611462575f60038281548110611f5657611f56613d24565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff16151560608601526002820180549396509194909384019290918591608084019190611fee90613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461201a90613cf2565b80156120655780601f1061203c57610100808354040283529160200191612065565b820191905f5260205f20905b81548152906001019060200180831161204857829003601f168201915b50505050508152505081525084848151811061208357612083613d24565b60209081029190910101525050600101611f38565b336120ca7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110105760405163118cdaa760e01b8152336004820152602401611c25565b6001600160a01b038082165f9081526007602052604090208054909116612118575050565b60018101546001600160a01b0383163181101561217657612143816001600160a01b03851631613d5f565b82546001600160a01b03165f908152602081905260408120805490919061216b908490613d4c565b909155506121b89050565b61218a6001600160a01b0384163182613d5f565b82546001600160a01b03165f90815260208190526040812080549091906121b2908490613d5f565b90915550505b506001600160a01b0390911631600190910155565b335f90815260076020526040812080546001600160a01b03166122035760405163498ea63d60e01b815260040160405180910390fd5b6009546008546001600160a01b0391821691160361223c57600880546001600160a01b031990811690915560098054909116905561234f565b600954336001600160a01b0390911603612295576002810180546001600160a01b039081165f90815260076020526040902060030180546001600160a01b0319908116909155915460098054909316911617905561234f565b600854336001600160a01b03909116036122f9576009546001600160a01b039081165f9081526007602052604080822060020180546001600160a01b031990811690915560088054808616855292909320600301549116921691909117905561234f565b60038181018054600280850180546001600160a01b039081165f9081526007602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001840154815491929091839190612380908490613d5f565b9091555050600181810180546010906123aa908490600160801b90046001600160401b0316613fcd565b82546001600160401b039182166101009390930a928302919092021990911617905550335f90815260076020526040812080546001600160a01b031990811682556001820183905560028201805482169055600390910180549091169055600a80549161241683613fec565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124a957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661249d5f5160206140485f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110105760405163703e46dd60e11b815260040160405180910390fd5b611ed8612098565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612529575060408051601f3d908101601f1916820190925261252691810190614001565b60015b61255157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c25565b5f5160206140485f395f51905f52811461258157604051632a87526960e21b815260048101829052602401611c25565b61070b8383613372565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110105760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610949565b6126046133c7565b611ed8816133ec565b5f828260405161261e929190613f9f565b60408051918290039091205f8181526002602052919091205490915060ff161561265b57604051637e4c066f60e01b815260040160405180910390fd5b61266583836133f4565b5f908152600260205260409020805460ff191660011790555050565b6001600160a01b0381165f9081526020819052604081206001810154600160c01b900460ff161580156126c357508060020180546126be90613cf2565b151590505b9392505050565b6001600160a01b0381165f9081526005602052604081205460045481106126f357505f92915050565b826001600160a01b03166004828154811061271057612710613d24565b5f918252602090912001546001600160a01b0316149392505050565b60048054600180820183555f8390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319166001600160a01b03851617905590546127849190613d5f565b6001600160a01b039091165f90815260056020526040902055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612818816126ca565b61281f5750565b6001600160a01b0381165f9081526005602052604081205460045490919061284990600190613d5f565b90508082146128ce575f6004828154811061286657612866613d24565b5f91825260209091200154600480546001600160a01b03909216925082918590811061289457612894613d24565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526005909152604090208290555b60048054806128df576128df614018565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600590935250506040812055565b6004545f81900361292d5750565b5f612939600183613d5f565b90505b801561096a575f61294e826001613d4c565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6129839190613fae565b90508082036129925750612aab565b5f600483815481106129a6576129a6613d24565b5f918252602082200154600480546001600160a01b03909216935090849081106129d2576129d2613d24565b5f91825260209091200154600480546001600160a01b03909216925090849081106129ff576129ff613d24565b5f91825260209091200154600480546001600160a01b039092169186908110612a2a57612a2a613d24565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508160048481548110612a6957612a69613d24565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905593821681526005909352604080842094909455168152208190555b80612ab581613fec565b91505061293c565b600d546001600160a01b03165b6001600160a01b03811615612b07576001600160a01b039081165f908152600b6020526040902080546001600160a01b0319811690915516612aca565b505f600e55565b5f81831115612b3a57604051632457cde760e01b81526004810184905260248101839052604401611c25565b82841015612b495750816126c3565b81841115612b585750806126c3565b509192915050565b6001600160a01b0382165f90815260208181526040808320815160a0810183528154815260018201546001600160801b03811694820194909452600160801b84046001600160401b031692810192909252600160c01b90920460ff1615156060820152600282018054919291608084019190612bdb90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0790613cf2565b8015612c525780601f10612c2957610100808354040283529160200191612c52565b820191905f5260205f20905b815481529060010190602001808311612c3557829003601f168201915b505050919092525050604080518082018252600d546001600160a01b03168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054969750612d9396939550918501939290916080840191612ced90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612d1990613cf2565b8015612d645780601f10612d3b57610100808354040283529160200191612d64565b820191905f5260205f20905b815481529060010190602001808311612d4757829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612fa5565b15612da657612da183613415565b612f46565b600d546001600160a01b039081165f818152600b6020526040902054909116905b6001600160a01b038216612de457612ddf8186613466565b612f43565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054612f13959385019392916080840191612e6d90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990613cf2565b8015612ee45780601f10612ebb57610100808354040283529160200191612ee4565b820191905f5260205f20905b815481529060010190602001808311612ec757829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612fa5565b15612f2257612ddf8186613466565b506001600160a01b038082165f908152600b60205260409020541690612dc7565b50505b8160ff16600e54111561070b57600d80546001600160a01b039081165f908152600b6020526040812080546001600160a01b03198082169092558454931692168217909255600e80549192612f9a83613fec565b919050555050505050565b6020808201515190830151515f919003612fd15750805182516001600160a01b03918216911610610949565b5060209081015151910151511190565b80515f819003612fef575050565b5f612ffb600183613d5f565b90505b801561070b575f613010826001613d4c565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6130459190613fae565b90505f84838151811061305a5761305a613d24565b6020026020010151905084828151811061307657613076613d24565b602002602001015185848151811061309057613090613d24565b60200260200101906001600160a01b031690816001600160a01b031681525050808583815181106130c3576130c3613d24565b60200260200101906001600160a01b031690816001600160a01b031681525050505080806130f090613fec565b915050612ffe565b60115415613119576040516349625b3b60e01b815260040160405180910390fd5b61312281611bbd565b61313f5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260076020526040902080549091161561317a57604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556008541661323757600880546001600160a01b0385166001600160a01b0319918216811790925560098054909116909117905561328f565b600980546001600160a01b039081165f9081526007602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f61329e83613f68565b90915550506001600160a01b038083165f908152602081905260408120805490928616319183916132d0908490613d4c565b9091555050600181810180546010906132fa908490600160801b90046001600160401b0316613f80565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e284846040516133649291906001600160a01b0392831681529116602082015260400190565b60405180910390a150505050565b61337b826134c4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133bf5761070b8282613527565b61096a613599565b6133cf6135b8565b61101057604051631afcd79f60e31b815260040160405180910390fd5b611ea66133c7565b6030811461096a576040516305db9dbd60e01b815260040160405180910390fd5b600d80546001600160a01b038381165f818152600b602052604081208054939094166001600160a01b031993841617909355835490911617909155600e80549161345e83613f68565b919050555050565b6001600160a01b038281165f818152600b602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600e8054916134bb83613f68565b91905055505050565b806001600160a01b03163b5f036134f957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c25565b5f5160206140485f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613543919061402c565b5f60405180830381855af49150503d805f811461357b576040519150601f19603f3d011682016040523d82523d5f602084013e613580565b606091505b50915091506135908583836135d1565b95945050505050565b34156110105760405163b398979f60e01b815260040160405180910390fd5b5f6135c16125d4565b54600160401b900460ff16919050565b6060826135e6576135e18261362d565b6126c3565b81511580156135fd57506001600160a01b0384163b155b1561362657604051639996b31560e01b81526001600160a01b0385166004820152602401611c25565b50806126c3565b80511561363c57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b031681526020016136b16040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b031681526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611ed89190613734565b828054828255905f5260205f20908101928215613724579160200282015b8281111561372457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136ef565b50613730929150613734565b5090565b5b80821115613730575f8155600101613735565b80356001600160a01b038116811461375e575f5ffd5b919050565b5f60208284031215613773575f5ffd5b6126c382613748565b5f5b8381101561379657818101518382015260200161377e565b50505f910152565b5f81518084526137b581602086016020860161377c565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526001600160801b0360208201511660608501526001600160401b0360408201511660808501526060810151151560a08501526080810151905060a060c085015261383660e085018261379e565b949350505050565b602081525f6126c360208301846137c9565b5f5f83601f840112613860575f5ffd5b5081356001600160401b03811115613876575f5ffd5b6020830191508360208260051b8501011115613890575f5ffd5b9250929050565b5f5f602083850312156138a8575f5ffd5b82356001600160401b038111156138bd575f5ffd5b6138c985828601613850565b90969095509350505050565b5f602082840312156138e5575f5ffd5b81356001600160801b03811681146126c3575f5ffd5b5f5f6040838503121561390c575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139c857868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b808310156139b057835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613979565b50965050506020938401939190910190600101613941565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156139f9575f5ffd5b613a0283613748565b915060208301356001600160401b03811115613a1c575f5ffd5b8301601f81018513613a2c575f5ffd5b80356001600160401b03811115613a4557613a456139d4565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613a7357613a736139d4565b604052818152828201602001871015613a8a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613ab9575f5ffd5b5081356001600160401b03811115613acf575f5ffd5b602083019150836020828501011115613890575f5ffd5b5f5f60208385031215613af7575f5ffd5b82356001600160401b03811115613b0c575f5ffd5b6138c985828601613aa9565b5f5f5f5f60608587031215613b2b575f5ffd5b613b3485613748565b935060208501356001600160401b03811115613b4e575f5ffd5b613b5a87828801613aa9565b90945092505060408501358015158114613b72575f5ffd5b939692955090935050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139c857603f19878603018452613bbf8583516137c9565b94506020938401939190910190600101613ba3565b602081525f6126c3602083018461379e565b5f60208284031215613bf6575f5ffd5b813560ff811681146126c3575f5ffd5b5f5f5f5f60408587031215613c19575f5ffd5b84356001600160401b03811115613c2e575f5ffd5b613c3a87828801613850565b90955093505060208501356001600160401b03811115613c58575f5ffd5b613c6487828801613850565b95989497509550505050565b5f5f60408385031215613c81575f5ffd5b613c8a83613748565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613ce757835180516001600160a01b039081168552602091820151168185015290930192604090920191600101613cb1565b509095945050505050565b600181811c90821680613d0657607f821691505b60208210810361146257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561094957610949613d38565b8181038181111561094957610949613d38565b601f82111561070b57805f5260205f20601f840160051c81016020851015613d975750805b601f840160051c820191505b81811015611c96575f8155600101613da3565b6001600160401b03831115613dcd57613dcd6139d4565b613de183613ddb8354613cf2565b83613d72565b5f601f841160018114613e12575f8515613dfb5750838201355b5f19600387901b1c1916600186901b178355611c96565b5f83815260208120601f198716915b82811015613e415786850135825560209485019460019092019101613e21565b5086821015613e5d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b03811115613ec757613ec76139d4565b613edb81613ed58454613cf2565b84613d72565b6020601f821160018114613f0d575f8315613ef65750848201515b5f19600385901b1c1916600184901b178455611c96565b5f84815260208120601f198516915b82811015613f3c5787850151825560209485019460019092019101613f1c565b5084821015613f5957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60018201613f7957613f79613d38565b5060010190565b6001600160401b03818116838216019081111561094957610949613d38565b818382375f9101908152919050565b5f82613fc857634e487b7160e01b5f52601260045260245ffd5b500690565b6001600160401b03828116828216039081111561094957610949613d38565b5f81613ffa57613ffa613d38565b505f190190565b5f60208284031215614011575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffd5b5f825161403d81846020870161377c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122054e6c6adbab0bb2d611684692d982b78b8d9ced7d298419694209aec1ae93b0464736f6c634300081b0033",
442
+ "sourceMap": "1647:23210:32:-:0;;;1171:4:21;1128:48;;1647:23210:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
844
443
  "linkReferences": {}
845
444
  },
846
445
  "deployedBytecode": {
847
- "object": "0x6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911610610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c2008ba912f84e414e2203da5653590d635cc8f9c4ca2e59b6840a2d5fe5fce464736f6c634300081b0033",
848
- "sourceMap": "1266:19289:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11522:115;;;;;;;;;;-1:-1:-1;11606:24:37;;11522:115;;;160:25:50;;;148:2;133:18;11522:115:37;;;;;;;;11643:111;;;;;;;;;;-1:-1:-1;11725:22:37;;11643:111;;11881:253;;;;;;;;;;-1:-1:-1;11881:253:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12997:93::-;;;;;;;;;;-1:-1:-1;13071:12:37;;12997:93;;8737:176;;;;;;;;;;-1:-1:-1;8737:176:37;;;;;:::i;:::-;;:::i;:::-;;8652:79;;;;;;;;;;;;;:::i;4875:1019::-;;;;;;;;;;-1:-1:-1;4875:1019:37;;;;;:::i;:::-;;:::i;14051:531::-;;;;;;;;;;-1:-1:-1;14051:531:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4161:214:25:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;11325:76:37:-;;;;;;;;;;-1:-1:-1;11393:1:37;11325:76;;6502:354;;;;;;;;;;-1:-1:-1;6502:354:37;;;;;:::i;:::-;;:::i;5900:596::-;;;;;;;;;;-1:-1:-1;5900:596:37;;;;;:::i;:::-;;:::i;7431:1215::-;;;;;;;;;;-1:-1:-1;7431:1215:37;;;;;:::i;:::-;;:::i;3155:101:23:-;;;;;;;;;;;;;:::i;3885:984:37:-;;;;;;;;;;-1:-1:-1;3885:984:37;;;;;:::i;:::-;;:::i;3634:112::-;;;;;;;;;;;;;:::i;8919:2360::-;;;;;;;;;;-1:-1:-1;8919:2360:37;;;;;:::i;:::-;;:::i;2441:144:23:-;;;;;;;;;;-1:-1:-1;1313:22:23;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:23;;;7899:51:50;;7887:2;7872:18;2441:144:23;7753:203:50;12140:433:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13949:96::-;;;;;;;;;;-1:-1:-1;14024:7:37;:14;13949:96;;1819:58:25;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:25;;;;;;;;;;;;:::i;6862:563:37:-;;;;;;;;;;;;;:::i;11760:115::-;;;;;;;;;;-1:-1:-1;11760:115:37;;;;;:::i;:::-;;:::i;:::-;;;9183:14:50;;9176:22;9158:41;;9146:2;9131:18;11760:115:37;9018:187:50;13096:847:37;;;;;;;;;;-1:-1:-1;13096:847:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11407:109::-;;;;;;;;;;-1:-1:-1;11493:16:37;;11407:109;;3405:215:23;;;;;;;;;;-1:-1:-1;3405:215:23;;;;;:::i;:::-;;:::i;12579:412:37:-;;;;;;;;;;;;;:::i;11881:253::-;11940:16;;:::i;:::-;11973:27;11995:4;11973:21;:27::i;:::-;11968:90;;12023:24;;-1:-1:-1;;;12023:24:37;;;;;;;;;;;11968:90;12075:52;;;;;;;;-1:-1:-1;;;;;12075:52:37;;;;;-1:-1:-1;12104:21:37;;;12075:52;12104:21;;;;;;;12075:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12075:52:37;;;;-1:-1:-1;;;12075:52:37;;12068:59;11881:253;-1:-1:-1;;11881:253:37:o;8737:176::-;2334:13:23;:11;:13::i;:::-;8820:9:37::1;8815:92;8835:17:::0;;::::1;8815:92;;;8873:23;8886:6;;8893:1;8886:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8873:12;:23::i;:::-;8854:3;;8815:92;;;;8737:176:::0;;:::o;8652:79::-;8694:30;8702:10;8714:9;:7;:9::i;:::-;8694:30;;;-1:-1:-1;;;;;11035:32:50;;;11017:51;;11104:32;;;;11099:2;11084:18;;11077:60;10990:18;8694:30:37;;;;;;;8652:79::o;4875:1019::-;2334:13:23;:11;:13::i;:::-;4959:7:37::1;:14:::0;:18;4955:76:::1;;5000:20;;-1:-1:-1::0;;;5000:20:37::1;;;;;;;;;;;4955:76;5046:32;5068:9;5046:21;:32::i;:::-;5041:95;;5101:24;;-1:-1:-1::0;;;5101:24:37::1;;;;;;;;;;;5041:95;-1:-1:-1::0;;;;;5171:14:37;;::::1;5146:22;5171:14:::0;;;:7:::1;:14;::::0;;;;5199:19;;5171:14;;5199:19:::1;:33:::0;5195:85:::1;;5255:14;;-1:-1:-1::0;;;5255:14:37::1;;;;;;;;;;;5195:85;5307:88;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5307:88:37;;::::1;::::0;;5344:13;;::::1;::::0;::::1;5307:88;::::0;;::::1;::::0;;;-1:-1:-1;5307:88:37;;;;;;;;;;;;5290:14;;;:7:::1;:14:::0;;;;;;;:105;;;;;;::::1;-1:-1:-1::0;;;;;;5290:105:37;;::::1;;::::0;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;5410:11:::1;::::0;::::1;5406:252;;5451:11;:19:::0;;-1:-1:-1;;;;;5451:19:37;::::1;-1:-1:-1::0;;;;;;5451:19:37;;::::1;::::0;::::1;::::0;;;5484:11:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;5406:252:::1;;;5542:11;::::0;;-1:-1:-1;;;;;5542:11:37;;::::1;5534:20;::::0;;;:7:::1;:20;::::0;;;;;:25:::1;;:33:::0;;;;::::1;-1:-1:-1::0;;;;;;5534:33:37;;::::1;::::0;::::1;::::0;;;5603:11;;5581:14;;;;;;;:19:::1;;:33:::0;;;::::1;5603:11:::0;;;::::1;5581:33:::0;;;::::1;::::0;;;5628:19;;::::1;;::::0;;5406:252:::1;5667:12;:14:::0;;;:12:::1;:14;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;5730:26:37;;::::1;5692:35;5730:26:::0;;;::::1;::::0;;;;;;5766:25:::1;::::0;::::1;:42:::0;;5730:26;;5795:13;::::1;;::::0;5766:25;;:42:::1;::::0;5795:13;;5766:42:::1;:::i;:::-;::::0;;;-1:-1:-1;;5818:30:37;;5847:1:::1;::::0;5818:13;;:25:::1;::::0;:30:::1;::::0;5847:1;;5818:30:::1;:::i;:::-;::::0;;;-1:-1:-1;;5864:23:37::1;::::0;;-1:-1:-1;;;;;11035:32:50;;;11017:51;;11104:32;;11099:2;11084:18;;11077:60;5864:23:37::1;::::0;10990:18:50;5864:23:37::1;;;;;;;4945:949;;4875:1019:::0;;:::o;14051:531::-;14134:14;2334:13:23;:11;:13::i;:::-;14205:7:37::1;:14:::0;14176:5;;14195:24;::::1;14191:163;;-1:-1:-1::0;14243:1:37::1;14191:163;;;14282:7;:14:::0;14265::::1;14274:5:::0;14265:6;:14:::1;:::i;:::-;:31;14261:93;;;14320:7;:14:::0;:23:::1;::::0;14337:6;;14320:23:::1;:::i;:::-;14312:31;;14261:93;14364:21;14400:5;-1:-1:-1::0;;;;;14388:18:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;14388:18:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;14364:42:37;-1:-1:-1;14421:9:37::1;14416:136;14440:5;14436:1;:9;14416:136;;;14478:63;;;;;;;;14501:1;14492:6;:10;;;;:::i;:::-;:14;::::0;14505:1:::1;14492:14;:::i;:::-;14478:63:::0;;::::1;;14520:7;14528:10;14537:1:::0;14528:6;:10:::1;:::i;:::-;14520:19;;;;;;;;:::i;:::-;;;;;;;;14478:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;14478:63:37::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;::::0;14466:6:::1;14473:1;14466:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:75;14447:3:::1;;14416:136;;;-1:-1:-1::0;14569:6:37;-1:-1:-1;;2357:1:23::1;14051:531:37::0;;;;:::o;4161:214:25:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:25;:::o;6502:354:37:-;6580:33;6602:10;6580:21;:33::i;:::-;6575:96;;6636:24;;-1:-1:-1;;;6636:24:37;;;;;;;;;;;6575:96;6681:44;6712:12;;6681:30;:44::i;:::-;6752:10;6736:15;:27;;;;;;;;;;:40;;:55;6779:12;;6736:40;:55;:::i;:::-;;6807:42;6824:10;6836:12;;6807:42;;;;;;;;:::i;:::-;;;;;;;;6502:354;;:::o;5900:596::-;5993:10;5979:25;;;;:13;:25;;;;;;;;5975:91;;;6027:28;;-1:-1:-1;;;6027:28:37;;;;;;;;;;;5975:91;6076:44;6107:12;;6076:30;:44::i;:::-;6131:30;6176:94;;;;;;;;6204:1;6176:94;;;;6220:1;6176:94;;;;6235:5;6176:94;;;;;;6256:12;;6176:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6176:94:37;;;;-1:-1:-1;;6281:16:37;:18;;6131:139;;-1:-1:-1;6281:16:37;-1:-1:-1;6281:18:37;;;:::i;:::-;;;;-1:-1:-1;;6323:10:37;6309:25;;;;6337:4;6309:25;;;;;;;;:32;;-1:-1:-1;;6309:32:37;;;;;;;;6351:27;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;:39;;;;;;;;:::i;:::-;-1:-1:-1;;6400:11:37;:28;;;;;;;-1:-1:-1;6400:28:37;;;;;;;;-1:-1:-1;;;;;;6400:28:37;6417:10;6400:28;;;;;;6444:45;;;;-1:-1:-1;6444:45:37;;6417:10;6476:12;;;;6444:45;:::i;:::-;;;;;;;;5965:531;5900:596;;:::o;7431:1215::-;7483:27;7505:4;7483:21;:27::i;:::-;7478:90;;7533:24;;-1:-1:-1;;;7533:24:37;;;;;;;;;;;7478:90;-1:-1:-1;;;;;7616:21:37;;7578:35;7616:21;;;;;;;;;;7651:24;;;;;;7647:85;;;7698:23;;-1:-1:-1;;;7698:23:37;;;;;;;;;;;7647:85;7746:13;:26;;:33;;;;;:::i;:::-;;;7783:1;7746:38;7742:110;;7807:34;;-1:-1:-1;;;7807:34:37;;;;;;;;;;;7742:110;7891:10;7862:18;7883:19;;;:7;:19;;;;;7916:15;;-1:-1:-1;;;;;7916:23:37;;;:15;;:23;7912:80;;7962:19;;-1:-1:-1;;;7962:19:37;;;;;;;;;;;7912:80;8006:15;;-1:-1:-1;;;;;8006:15:37;:29;8002:69;;8051:9;:7;:9::i;:::-;;8002:69;8103:88;;;;;;;;-1:-1:-1;;;;;8103:88:37;;;;;8135:10;:18;;8103:88;;;;;;;-1:-1:-1;8103:88:37;;;;;;;;;;;;8081:19;;;:7;:19;;;;;;;:110;;;;;;;-1:-1:-1;;;;;;8081:110:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:11;;;8202:277;;8247:11;:24;;8261:10;-1:-1:-1;;;;;;8247:24:37;;;;;;;;8285:11;:24;;;;;;;;;;8202:277;;;8348:11;;;-1:-1:-1;;;;;8348:11:37;;;8340:20;;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;8340:38:37;;;8368:10;8340:38;;;;;;8419:11;;8392:19;;;;;;;:24;;:38;;;;8419:11;;;;8392:38;;;;;;;8444:24;;;;;;8202:277;8488:12;:14;;;:12;:14;;;:::i;:::-;;;;;;8542:10;-1:-1:-1;;;;;8542:18:37;;8513:13;:25;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;8570:30:37;;8599:1;;8570:13;;:25;;:30;;8599:1;;8570:30;:::i;:::-;;;;-1:-1:-1;;8616:23:37;;;8622:10;11017:51:50;;-1:-1:-1;;;;;11104:32:50;;11099:2;11084:18;;11077:60;8616:23:37;;10990:18:50;8616:23:37;10843:300:50;3155:101:23;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;3885:984:37:-;2334:13:23;:11;:13::i;:::-;4000:7:37::1;:14:::0;:18;3996:76:::1;;4041:20;;-1:-1:-1::0;;;4041:20:37::1;;;;;;;;;;;3996:76;-1:-1:-1::0;;;;;4086:19:37;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;4082:85;;;4128:28;;-1:-1:-1::0;;;4128:28:37::1;;;;;;;;;;;4082:85;4181:14;:39;4206:12;;4196:23;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;4181:39;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;4181:39:37;;::::1;;4177:102;;;4243:25;;-1:-1:-1::0;;;4243:25:37::1;;;;;;;;;;;4177:102;4341:24:::0;;4337:99:::1;;4381:44;4412:12;;4381:30;:44::i;:::-;4446:30;4491:99;;;;;;;;4519:1;4491:99;;;;4535:1;4491:99;;;;4550:10;4491:99;;;;;;4576:12;;4491:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;4491:99:37;;;;-1:-1:-1;;4601:16:37::1;:18:::0;;4446:144;;-1:-1:-1;4601:16:37;-1:-1:-1;4601:18:37::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4629:19:37;::::1;;::::0;;;4651:4:::1;4629:19;::::0;;;;;;;:26;;-1:-1:-1;;4629:26:37;;::::1;::::0;::::1;::::0;;;4665:21;;;;;;;:33;;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;;::::0;;;::::1;::::0;::::1;::::0;;;:21;:33:::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;4708:11:37::1;:22:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4708:22:37;;;;;::::1;::::0;;-1:-1:-1;;;;;;4708:22:37::1;-1:-1:-1::0;;;;;4708:22:37;::::1;;::::0;;-1:-1:-1;4741:67:37;::::1;;;4771:24;:26:::0;;;:24:::1;:26;::::0;::::1;:::i;:::-;;;;;;4741:67;4823:39;4843:4;4849:12;;4823:39;;;;;;;;:::i;:::-;;;;;;;;3986:883;3885:984:::0;;;;:::o;3634:112::-;8870:21:24;4302:15;;-1:-1:-1;;;4302:15:24;;;;4301:16;;-1:-1:-1;;;;;4348:14:24;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:24;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:24;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:24;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:24;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:24;-1:-1:-1;;;5013:22:24;;;4979:67;3685:26:37::1;3700:10;3685:14;:26::i;:::-;3738:1;3721:14;:18:::0;5066:101:24;;;;5100:23;;-1:-1:-1;;;;5100:23:24;;;5142:14;;-1:-1:-1;15919:50:50;;5142:14:24;;15907:2:50;15892:18;5142:14:24;15766:209:50;5066:101:24;4092:1081;;;;;3634:112:37:o;8919:2360::-;2334:13:23;:11;:13::i;:::-;8996:1:37::1;:6;;9001:1;8996:6:::0;8992:63:::1;;9025:19;;-1:-1:-1::0;;;9025:19:37::1;;;;;;;;;;;8992:63;9065:18;::::0;::::1;:14;:18:::0;9094:21:::1;9103:11;9094:8;:21::i;:::-;9125:25;:23;:25::i;:::-;9161:21;:34:::0;;-1:-1:-1;;;;;;9161:34:37::1;::::0;;9255:24:::1;::::0;9236:16:::1;::::0;9193:1:::1;::::0;9223:57:::1;::::0;::::1;::::0;::::1;::::0;9193:1;;9236:43:::1;::::0;9255:24;9236:43:::1;:::i;:::-;9223:6;:57::i;:::-;9205:76;;9296:3;:8;;9303:1;9296:8:::0;9292:66:::1;;9327:20;;-1:-1:-1::0;;;9327:20:37::1;;;;;;;;;;;9292:66;9373:9;9368:936;9392:11;:18:::0;9388:22;::::1;9368:936;;;9431:12;9446:11;9458:1;9446:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;9446:14:37::1;9504:21:::0;;;;;;;;;;;9544:15:::1;::::0;::::1;::::0;9446:14;;-1:-1:-1;9504:21:37;9544:15:::1;;::::0;:48:::1;;;9563:4;:17;;:24;;;;;:::i;:::-;:29:::0;;-1:-1:-1;9544:48:37::1;9540:95;;;9612:8;;;;9540:95;9653:21;::::0;-1:-1:-1;;;;;9653:21:37::1;9649:172;;-1:-1:-1::0;9708:21:37::1;:28:::0;;-1:-1:-1;;;;;;9708:28:37::1;-1:-1:-1::0;;;;;9708:28:37;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;9754:22:37::1;:26:::0;9798:8:::1;;9649:172;9864:3;9839:28;;:22;;:28;9835:120;;;9887:27;9904:4;9910:3;9887:16;:27::i;:::-;9932:8;;;;9835:120;10018:21;::::0;-1:-1:-1;;;;;10018:21:37;;::::1;9969:30;10002:38:::0;;;::::1;::::0;;;;;;;;10108:35;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;10018:21;10108:35;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;;;;::::1;::::0;::::1;::::0;;10002:38;;10076:143:::1;::::0;10108:35;;;::::1;::::0;;;10137:4;;10108:35;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;10108:35:37;;;;-1:-1:-1;;;10108:35:37;;10145:56:::1;::::0;;;;::::1;::::0;;10162:21:::1;::::0;-1:-1:-1;;;;;10162:21:37::1;10145:56:::0;;;;::::1;::::0;::::1;::::0;;;;;;10162:21;10145:56;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;10191:8;;10145:56;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;::::0;10076:10:::1;:143::i;:::-;10055:239;;;10252:27;10269:4;10275:3;10252:16;:27::i;:::-;9417:887;;;9368:936;9412:3;;9368:936;;;;10318:22;;10344:1;10318:27:::0;10314:85:::1;;10368:20;;-1:-1:-1::0;;;10368:20:37::1;;;;;;;;;;;10314:85;10505:21;::::0;10583:22:::1;::::0;-1:-1:-1;;;;;10505:21:37;;::::1;::::0;10490:12:::1;::::0;-1:-1:-1;;;;;10569:37:37;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;10569:37:37::1;-1:-1:-1::0;10536:70:37;-1:-1:-1;10622:9:37::1;10617:148;10641:22;;10637:1;:26;10617:148;;;10703:4;10684:13;10698:1;10684:16;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10684:23:37;;::::1;:16;::::0;;::::1;::::0;;;;;;:23;;;;10728:26;;::::1;;::::0;;;:20:::1;:26:::0;;;;;;;;;;::::1;::::0;;10665:3:::1;10617:148;;;;10774:26;10786:13;10774:11;:26::i;:::-;10886:7;:14:::0;;::::1;::::0;::::1;::::0;;10853:30:::1;10886:14:::0;;;;::::1;::::0;10910:24:::1;::::0;10917:17:::1;::::0;10910:24:::1;:::i;:::-;10978:14;;-1:-1:-1::0;;;;;10964:29:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;10964:29:37::1;-1:-1:-1::0;10944:49:37;;::::1;::::0;:17:::1;::::0;:49:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;11009:9:37::1;11004:269;11028:14;;11024:1;:18;11004:269;;;11063:12;11078:13;11096:22;;11092:1;:26;;;;:::i;:::-;11078:41;;;;;;;;:::i;:::-;;;;;;;11063:56;;11156:4;11133:17;11151:1;11133:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:27:::0;;-1:-1:-1;;;;;11133:27:37;;::::1;-1:-1:-1::0;;;;;;11133:27:37;;::::1;;::::0;;;11185:76:::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;11226:21;;;;;;;11133:27;11226:33;;::::1;::::0;11185:76;;::::1;::::0;;;11174:88;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;;::::0;;;;;::::1;::::0;11044:3:::1;11004:269;;;;8982:2297;;;;8919:2360:::0;:::o;12140:433::-;12268:17;:24;12194:18;;12224:25;;-1:-1:-1;;;;;12252:41:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;12224:69:37;-1:-1:-1;12308:9:37;12303:240;12327:17;:24;12323:28;;12303:240;;;12372:12;12387:17;12405:1;12387:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12387:20:37;12450:21;;;;;;;;;;;12497:35;;;;;;;;;;;;;;;;;;;;;12387:20;12497:35;;;;;;;;;;;;;;;;;;;;;;;;;;;12387:20;;-1:-1:-1;12450:21:37;;12497:35;;;;;;;12450:21;;12497:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12485:6;12492:1;12485:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;12353:3:37;;12303:240;;;-1:-1:-1;12560:6:37;12140:433;-1:-1:-1;12140:433:37:o;6862:563::-;6913:33;6935:10;6913:21;:33::i;:::-;6908:94;;6969:22;;-1:-1:-1;;;6969:22:37;;;;;;;;;;;6908:94;7062:10;7012:31;7046:27;;;;;;;;;;7087:20;;;;;;7083:84;;;7130:26;;-1:-1:-1;;;7130:26:37;;;;;;;;;;;7083:84;7228:14;;7200:24;;7181:16;;:43;;;;:::i;:::-;:61;7177:120;;7265:21;;-1:-1:-1;;;7265:21:37;;;;;;;;;;;7177:120;7307:20;;;:27;;-1:-1:-1;;7307:27:37;7330:4;7307:27;;;;;;7344:24;:29;;7307:20;;7344:29;;7330:4;;7344:29;:::i;:::-;;;;-1:-1:-1;;7389:29:37;;7407:10;7899:51:50;;7389:29:37;;7887:2:50;7872:18;7389:29:37;;;;;;;6898:527;6862:563::o;11760:115::-;-1:-1:-1;;;;;11849:19:37;11826:4;11849:19;;;:13;:19;;;;;;;;;11760:115::o;13096:847::-;13176:19;2334:13:23;:11;:13::i;:::-;13207:26:37::1;13253:30;13260:5;13267:1;13270:12;;13253:6;:30::i;:::-;-1:-1:-1::0;;;;;13236:48:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;13236:48:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;13310:11:37::1;::::0;13207:77;;-1:-1:-1;;;;;;13310:11:37;;::::1;::::0;13336:18;::::1;::::0;13332:74:::1;;-1:-1:-1::0;;;;;;13377:13:37;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:18:::1;;::::0;::::1;13332:74;13416:9;13439:211;-1:-1:-1::0;;;;;13446:18:37;::::1;::::0;;::::1;::::0;:31:::1;;;13472:5;13468:1;:9;13446:31;13439:211;;;-1:-1:-1::0;;;;;13514:13:37;;::::1;13493:18;13514:13:::0;;;:7:::1;:13;::::0;;;;;;;;13555:53;;;;::::1;::::0;;;;;;13591:15;;;;::::1;13555:53:::0;;::::1;::::0;;;;13514:13;13541:6;13548:3;::::1;::::0;::::1;:::i;:::-;;;13541:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:67;13629:10:::1;;::::0;-1:-1:-1;;;;;13629:10:37::1;::::0;-1:-1:-1;13439:211:37::1;;;13681:1;13664:6;:13;:18:::0;13660:62:::1;;13705:6;13698:13;;;;;;;13660:62;13780:25;13825:1;-1:-1:-1::0;;;;;13808:19:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;13808:19:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;13780:47:37;-1:-1:-1;13842:9:37::1;13837:77;13861:1;13857;:5;13837:77;;;13894:6;13901:1;13894:9;;;;;;;;:::i;:::-;;;;;;;13883:5;13889:1;13883:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:20;13864:3:::1;;13837:77;;;-1:-1:-1::0;13931:5:37;13096:847;-1:-1:-1;;;;;;13096:847:37:o;3405:215:23:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:23;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:23;;3562:1:::1;3534:31;::::0;::::1;7899:51:50::0;7872:18;;3534:31:23::1;;;;;;;;3485:91;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;12579:412:37:-;12704:11;:18;12630;;12660:25;;-1:-1:-1;;;;;12688:35:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;12660:63:37;-1:-1:-1;12738:9:37;12733:228;12757:11;:18;12753:22;;12733:228;;;12796:12;12811:11;12823:1;12811:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12811:14:37;12868:21;;;;;;;;;;;12915:35;;;;;;;;;;;;;;;;;;;;;12811:14;12915:35;;;;;;;;;;;;;;;;;;;;;;;;;;;12811:14;;-1:-1:-1;12868:21:37;;12915:35;;;;;;;12868:21;;12915:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12903:6;12910:1;12903:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;12777:3:37;;12733:228;;2658:162:23;966:10:26;2717:7:23;1313:22;2570:8;-1:-1:-1;;;;;2570:8:23;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:23;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:23;;966:10:26;2763:40:23;;;7899:51:50;7872:18;;2763:40:23;7753:203:50;18813:506:37;-1:-1:-1;;;;;18889:13:37;;;18868:18;18889:13;;;:7;:13;;;;;18916:15;;18889:13;;18916:15;18912:66;;18961:7;18813:506;:::o;18912:66::-;19011:13;;;;-1:-1:-1;;;;;19054:12:37;;;19039:27;;19035:239;;;19130:27;19145:12;-1:-1:-1;;;;;19130:12:37;;;:27;:::i;:::-;19098:15;;-1:-1:-1;;;;;19098:15:37;19082;:32;;;;;;;;;;19098:15;19082:44;:75;;:44;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;19035:239:37;;-1:-1:-1;19035:239:37;;19236:27;-1:-1:-1;;;;;19251:12:37;;;19236;:27;:::i;:::-;19204:15;;-1:-1:-1;;;;;19204:15:37;19188;:32;;;;;;;;;;19204:15;19188:44;:75;;:44;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;;19035:239:37;-1:-1:-1;;;;;;19300:12:37;;;;19284:13;;;;:28;18813:506::o;17760:1047::-;17845:10;17797:7;17837:19;;;:7;:19;;;;;17870:15;;-1:-1:-1;;;;;17870:15:37;17866:80;;17922:13;;-1:-1:-1;;;17922:13:37;;;;;;;;;;;17866:80;17975:11;;17960;;-1:-1:-1;;;;;17975:11:37;;;17960;;:26;17956:528;;18002:11;:24;;-1:-1:-1;;;;;;18002:24:37;;;;;;18040:11;:24;;;;;;;17956:528;;;18085:11;;18100:10;-1:-1:-1;;;;;18085:11:37;;;:25;18081:403;;18134:10;;;;;-1:-1:-1;;;;;18134:10:37;;;18161:1;18126:19;;;:7;:19;;;;;:24;;:37;;-1:-1:-1;;;;;;18126:37:37;;;;;;18191:10;;18177:11;:24;;;;;18191:10;;18177:24;;;18081:403;;;18222:11;;18237:10;-1:-1:-1;;;;;18222:11:37;;;:25;18218:266;;18271:11;;-1:-1:-1;;;;;18271:11:37;;;18299:1;18263:20;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;18263:38:37;;;;;;18337:11;;;;;;18329:20;;;;;;:25;;;18315:39;;18329:25;;18315:39;;;;;;18218:266;;;18412:10;;;;;;18393;;;;;;-1:-1:-1;;;;;18393:10:37;;;18412;18385:19;;;:7;:19;;;;;;:24;;;:37;;18412:10;;;-1:-1:-1;;;;;;18385:37:37;;;;;;18463:10;;18444;;;;18436:19;;;;;:24;:37;;18463:10;;;;18436:37;;;;;18218:266;18518:15;;-1:-1:-1;;;;;18518:15:37;18494:21;18582:32;;;;;;;;;;18518:15;18654:13;;;;18625:25;;;:42;;18582:32;;18654:13;;18625:25;;18494:21;18625:42;;18654:13;;18625:42;:::i;:::-;;;;-1:-1:-1;;18677:30:37;;18706:1;;18677:13;;:25;;:30;;18706:1;;18677:30;:::i;:::-;;;;-1:-1:-1;;18733:10:37;18725:19;;;;:7;:19;;;;;18718:26;;-1:-1:-1;;;;;;18718:26:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18755:12;:14;;;;;;:::i;:::-;;;;-1:-1:-1;18787:13:37;;17760:1047;-1:-1:-1;;;;17760:1047:37:o;4603:312:25:-;4683:4;-1:-1:-1;;;;;4692:6:25;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:25;:32;-1:-1:-1;;;;;;;;;;;1519:53:30;-1:-1:-1;;;;;1519:53:30;;1441:138;4753:32:25;-1:-1:-1;;;;;4753:42:25;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:25;;;;;;;;;;;3769:84:37;2334:13:23;:11;:13::i;6057:538:25:-;6174:17;-1:-1:-1;;;;;6156:50:25;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:25;;;;;;;;-1:-1:-1;;6156:52:25;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:25;;-1:-1:-1;;;;;7917:32:50;;6518:60:25;;;7899:51:50;7872:18;;6518:60:25;7753:203:50;6152:437:25;-1:-1:-1;;;;;;;;;;;6250:40:25;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:25;;;;;160:25:50;;;133:18;;6317:34:25;14:177:50;6246:120:25;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:25;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:25;;;;;;;;;;;19325:348:37;19413:24;19450:12;;19440:23;;;;;;;:::i;:::-;;;;;;;;;;;19477:32;;;;:14;:32;;;;;;;19440:23;;-1:-1:-1;19477:32:37;;19473:95;;;19532:25;;-1:-1:-1;;;19532:25:37;;;;;;;;;;;19473:95;19578:38;19603:12;;19578:24;:38::i;:::-;19627:32;;;;:14;:32;;;;;:39;;-1:-1:-1;;19627:39:37;19662:4;19627:39;;;-1:-1:-1;;19325:348:37:o;3774:248:23:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:23;;-1:-1:-1;;;;;3941:19:23;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:24;:18;:20::i;:::-;1929:38:23::1;1954:12;1929:24;:38::i;14614:502:37:-:0;14688:12;;14676:9;14714:6;;;14710:43;;14736:7;14614:502;:::o;14710:43::-;14768:9;14780:5;14784:1;14780;:5;:::i;:::-;14768:17;;14763:347;14787:5;;14763:347;;14875:9;14947:5;:1;14951;14947:5;:::i;:::-;14905:36;;;14922:15;14905:36;;;16681:19:50;16716:12;;;16709:28;;;16753:12;;14905:36:37;;;;;;;;;;;;14895:47;;;;;;14887:56;;:66;;;;:::i;:::-;14875:78;;15014:12;15029:5;15035:1;15029:8;;;;;;;;:::i;:::-;;;;;;;;;;;15062;;-1:-1:-1;;;;;15029:8:37;;;;-1:-1:-1;15062:5:37;;15068:1;;15062:8;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15062:8:37;15051:5;15057:1;15051:8;;;;;;;;:::i;:::-;;;;;;;;;:19;;;;;-1:-1:-1;;;;;15051:19:37;;;;;-1:-1:-1;;;;;15051:19:37;;;;;;15095:4;15084:5;15090:1;15084:8;;;;;;;;:::i;:::-;;;;;;;;;:15;;;;;-1:-1:-1;;;;;15084:15:37;;;;;-1:-1:-1;;;;;15084:15:37;;;;;;14799:311;;14794:3;;;;;:::i;:::-;;;;14763:347;;15637:317;15706:21;;-1:-1:-1;;;;;15706:21:37;15738:174;-1:-1:-1;;;;;15745:18:37;;;15738:174;;-1:-1:-1;;;;;15822:29:37;;;15779:15;15822:29;;;:20;:29;;;;;;;-1:-1:-1;;;;;;15865:36:37;;;;;15822:29;15738:174;;;-1:-1:-1;15946:1:37;15921:22;:26;15637:317::o;20216:337::-;20296:7;20325:3;20319;:9;20315:69;;;20351:22;;-1:-1:-1;;;20351:22:37;;;;;16950:25:50;;;16991:18;;;16984:34;;;16923:18;;20351:22:37;16776:248:50;20315:69:37;20406:3;20398:5;:11;20394:153;;;-1:-1:-1;20432:3:37;20425:10;;20394:153;20464:3;20456:5;:11;20452:95;;;-1:-1:-1;20490:3:37;20483:10;;20452:95;-1:-1:-1;20531:5:37;20452:95;20216:337;;;;;:::o;15960:1391::-;-1:-1:-1;;;;;16058:21:37;;16030:25;16058:21;;;;;;;;;;;16030:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16030:49:37;;;;-1:-1:-1;;16135:86:37;;;;;;;;16152:21;;-1:-1:-1;;;;;16152:21:37;16135:86;;;-1:-1:-1;16181:38:37;;;16135:86;16181:38;;;;;;;16135:86;;;;;;;;;;;16152:21;16135:86;;;;;;;;;;;;;;;;;;;;;;;;;;;16030:49;;-1:-1:-1;16107:181:37;;16135:86;;-1:-1:-1;16135:86:37;;;;;16181:38;;16135:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16239:35;;;;;;;;16256:4;-1:-1:-1;;;;;16239:35:37;;;;;16268:4;16239:35;;;16107:10;:181::i;:::-;16090:984;;;16313:17;16325:4;16313:11;:17::i;:::-;16090:984;;;16400:21;;-1:-1:-1;;;;;16400:21:37;;;16361:15;16379:43;;;:20;:43;;;;;;;;;;16491:573;-1:-1:-1;;;;;16526:21:37;;16522:123;;16571:28;16584:8;16594:4;16571:12;:28::i;:::-;16621:5;;16522:123;16724:58;;;;;;;;-1:-1:-1;;;;;16724:58:37;;;;;-1:-1:-1;16756:24:37;;;16724:58;16756:24;;;;;;;16724:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16688:153;;16724:58;;;;;16756:24;16724:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16784:35;;;;;;;;16801:4;-1:-1:-1;;;;;16784:35:37;;;;;16813:4;16784:35;;;16688:10;:153::i;:::-;16663:293;;;16882:28;16895:8;16905:4;16882:12;:28::i;16663:293::-;-1:-1:-1;;;;;;17020:29:37;;;;;;;:20;:29;;;;;;;;16491:573;;;16347:727;;16090:984;17113:3;17088:28;;:22;;:28;17084:261;;;17168:21;;;-1:-1:-1;;;;;17168:21:37;;;17132:12;17147:43;;;:20;:43;;;;;;;-1:-1:-1;;;;;;17204:50:37;;;;;;17268:28;;17147:43;;17268:28;;;;;;;17310:22;:24;;17147:43;;17310:24;;;:::i;:::-;;;;;;17118:227;16020:1331;15960:1391;;:::o;19883:327::-;19984:4;20035:10;:15;;;:27;;;20004:10;:15;;;:27;;;:58;20000:129;;-1:-1:-1;20103:15:37;;20085;;-1:-1:-1;;;;;20085:33:37;;;;;;20078:40;;20000:129;-1:-1:-1;20176:15:37;;;;;:27;;;20146:15;;;;:27;;:57;;19883:327::o;15122:509::-;15203:12;;15191:9;15229:6;;;15225:43;;15251:7;15122:509;:::o;15225:43::-;15283:9;15295:5;15299:1;15295;:5;:::i;:::-;15283:17;;15278:347;15302:5;;15278:347;;15390:9;15462:5;:1;15466;15462:5;:::i;:::-;15420:36;;;15437:15;15420:36;;;16681:19:50;16716:12;;;16709:28;;;16753:12;;15420:36:37;;;;;;;;;;;;15410:47;;;;;;15402:56;;:66;;;;:::i;:::-;15390:78;;15529:12;15544:5;15550:1;15544:8;;;;;;;;:::i;:::-;;;;;;;15529:23;;15577:5;15583:1;15577:8;;;;;;;;:::i;:::-;;;;;;;15566:5;15572:1;15566:8;;;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;15566:19:37;;;-1:-1:-1;;;;;15566:19:37;;;;;15610:4;15599:5;15605:1;15599:8;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;15599:15:37;;;-1:-1:-1;;;;;15599:15:37;;;;;15314:311;;15309:3;;;;;:::i;:::-;;;;15278:347;;2264:344:30;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:30;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;19710:167:37:-;19818:2;19798:22;;19794:77;;19843:17;;-1:-1:-1;;;19843:17:37;;;;;;;;;;;7084:141:24;8870:21;8560:40;-1:-1:-1;;;8560:40:24;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:24;;;;;;;;;;;1980:235:23;6931:20:24;:18;:20::i;17357:183:37:-;17440:21;;;-1:-1:-1;;;;;17411:26:37;;;17440:21;17411:26;;;:20;:26;;;;;:50;;17440:21;;;;-1:-1:-1;;;;;;17411:50:37;;;;;;;17471:28;;;;;;;;;17509:22;:24;;;;;;:::i;:::-;;;;;;17357:183;:::o;17546:208::-;-1:-1:-1;;;;;17644:26:37;;;;;;;:20;:26;;;;;;;;17615;;;;;;;;;:55;;17644:26;;;;-1:-1:-1;;;;;;17615:55:37;;;;;;;17680:26;;;:33;;;;;;;;;;17723:22;:24;;;;;;:::i;:::-;;;;;;17546:208;;:::o;1671:281:30:-;1748:17;-1:-1:-1;;;;;1748:29:30;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:30;;-1:-1:-1;;;;;7917:32:50;;1805:47:30;;;7899:51:50;7872:18;;1805:47:30;7753:203:50;1744:119:30;-1:-1:-1;;;;;;;;;;;1872:73:30;;-1:-1:-1;;;;;;1872:73:30;-1:-1:-1;;;;;1872:73:30;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:30:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:30;;;;;;;;;;;4421:582:34;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;7917:32:50;;4917:24:34;;;7899:51:50;7872:18;;4917:24:34;7753:203:50;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:173:50;264:20;;-1:-1:-1;;;;;313:31:50;;303:42;;293:70;;359:1;356;349:12;293:70;196:173;;;:::o;374:186::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:29;544:9;525:29;:::i;565:250::-;650:1;660:113;674:6;671:1;668:13;660:113;;;750:11;;;744:18;731:11;;;724:39;696:2;689:10;660:113;;;-1:-1:-1;;807:1:50;789:16;;782:27;565:250::o;820:270::-;861:3;899:5;893:12;926:6;921:3;914:19;942:76;1011:6;1004:4;999:3;995:14;988:4;981:5;977:16;942:76;:::i;:::-;1072:2;1051:15;-1:-1:-1;;1047:29:50;1038:39;;;;1079:4;1034:50;;820:270;-1:-1:-1;;820:270:50:o;1095:566::-;1212:1;1208;1203:3;1199:11;1195:19;1187:5;1181:12;1177:38;1172:3;1165:51;1147:3;1262:4;1255:5;1251:16;1245:23;1300:4;1293;1288:3;1284:14;1277:28;1343:12;1337:19;1330:4;1325:3;1321:14;1314:43;1411:4;1397:12;1393:23;1387:30;1382:2;1377:3;1373:12;1366:52;1488:4;1474:12;1470:23;1464:30;1457:38;1450:46;1443:4;1438:3;1434:14;1427:70;1552:2;1538:12;1534:21;1528:28;1506:50;;1587:4;1581:3;1576;1572:13;1565:27;1608:47;1650:3;1645;1641:13;1625:14;1608:47;:::i;:::-;1601:54;1095:566;-1:-1:-1;;;;1095:566:50:o;1666:266::-;1851:2;1840:9;1833:21;1814:4;1871:55;1922:2;1911:9;1907:18;1899:6;1871:55;:::i;1937:610::-;2023:6;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;2140:9;2127:23;-1:-1:-1;;;;;2165:6:50;2162:30;2159:50;;;2205:1;2202;2195:12;2159:50;2228:22;;2281:4;2273:13;;2269:27;-1:-1:-1;2259:55:50;;2310:1;2307;2300:12;2259:55;2350:2;2337:16;-1:-1:-1;;;;;2368:6:50;2365:30;2362:50;;;2408:1;2405;2398:12;2362:50;2461:7;2456:2;2446:6;2443:1;2439:14;2435:2;2431:23;2427:32;2424:45;2421:65;;;2482:1;2479;2472:12;2421:65;2513:2;2505:11;;;;;2535:6;;-1:-1:-1;1937:610:50;-1:-1:-1;;;1937:610:50:o;2552:260::-;2620:6;2628;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;2720:29;2739:9;2720:29;:::i;:::-;2710:39;;2768:38;2802:2;2791:9;2787:18;2768:38;:::i;:::-;2758:48;;2552:260;;;;;:::o;2817:346::-;2885:6;2893;2946:2;2934:9;2925:7;2921:23;2917:32;2914:52;;;2962:1;2959;2952:12;2914:52;-1:-1:-1;;3007:23:50;;;3127:2;3112:18;;;3099:32;;-1:-1:-1;2817:346:50:o;3168:1554::-;3358:4;3406:2;3395:9;3391:18;3436:2;3425:9;3418:21;3459:6;3494;3488:13;3525:6;3517;3510:22;3563:2;3552:9;3548:18;3541:25;;3625:2;3615:6;3612:1;3608:14;3597:9;3593:30;3589:39;3575:53;;3663:2;3655:6;3651:15;3684:1;3694:999;3708:6;3705:1;3702:13;3694:999;;;3773:22;;;-1:-1:-1;;3769:36:50;3757:49;;3829:13;;3912:9;;3897:25;;3969:2;3961:11;;;3955:18;3881:2;3993:15;;;3986:27;;;4074:19;;3869:15;;;4106:24;;;4196:21;;;-1:-1:-1;;4164:2:50;4152:15;;;4255:330;4271:8;4266:3;4263:17;4255:330;;;4344:15;;4394:9;;-1:-1:-1;;;;;4390:35:50;4376:50;;4480:2;4472:11;;;4466:18;4450:14;;;4443:42;4554:17;;;;4422:1;4290:11;;;;;4522:2;4511:14;;;;4255:330;;;-1:-1:-1;4608:5:50;-1:-1:-1;;;4648:2:50;4671:12;;;;4636:15;;;;;3730:1;3723:9;3694:999;;;-1:-1:-1;4710:6:50;;3168:1554;-1:-1:-1;;;;;;3168:1554:50:o;4727:127::-;4788:10;4783:3;4779:20;4776:1;4769:31;4819:4;4816:1;4809:15;4843:4;4840:1;4833:15;4859:1018;4936:6;4944;4997:2;4985:9;4976:7;4972:23;4968:32;4965:52;;;5013:1;5010;5003:12;4965:52;5036:29;5055:9;5036:29;:::i;:::-;5026:39;;5116:2;5105:9;5101:18;5088:32;-1:-1:-1;;;;;5135:6:50;5132:30;5129:50;;;5175:1;5172;5165:12;5129:50;5198:22;;5251:4;5243:13;;5239:27;-1:-1:-1;5229:55:50;;5280:1;5277;5270:12;5229:55;5320:2;5307:16;-1:-1:-1;;;;;5338:6:50;5335:30;5332:56;;;5368:18;;:::i;:::-;5417:2;5411:9;5509:2;5471:17;;-1:-1:-1;;5467:31:50;;;5500:2;5463:40;5459:54;5447:67;;-1:-1:-1;;;;;5529:34:50;;5565:22;;;5526:62;5523:88;;;5591:18;;:::i;:::-;5627:2;5620:22;5651;;;5692:15;;;5709:2;5688:24;5685:37;-1:-1:-1;5682:57:50;;;5735:1;5732;5725:12;5682:57;5791:6;5786:2;5782;5778:11;5773:2;5765:6;5761:15;5748:50;5844:1;5839:2;5830:6;5822;5818:19;5814:28;5807:39;5865:6;5855:16;;;;;4859:1018;;;;;:::o;6064:347::-;6115:8;6125:6;6179:3;6172:4;6164:6;6160:17;6156:27;6146:55;;6197:1;6194;6187:12;6146:55;-1:-1:-1;6220:20:50;;-1:-1:-1;;;;;6252:30:50;;6249:50;;;6295:1;6292;6285:12;6249:50;6332:4;6324:6;6320:17;6308:29;;6384:3;6377:4;6368:6;6360;6356:19;6352:30;6349:39;6346:59;;;6401:1;6398;6391:12;6346:59;6064:347;;;;;:::o;6416:409::-;6486:6;6494;6547:2;6535:9;6526:7;6522:23;6518:32;6515:52;;;6563:1;6560;6553:12;6515:52;6603:9;6590:23;-1:-1:-1;;;;;6628:6:50;6625:30;6622:50;;;6668:1;6665;6658:12;6622:50;6707:58;6757:7;6748:6;6737:9;6733:22;6707:58;:::i;:::-;6784:8;;6681:84;;-1:-1:-1;6416:409:50;-1:-1:-1;;;;6416:409:50:o;6830:644::-;6915:6;6923;6931;6939;6992:2;6980:9;6971:7;6967:23;6963:32;6960:52;;;7008:1;7005;6998:12;6960:52;7031:29;7050:9;7031:29;:::i;:::-;7021:39;;7111:2;7100:9;7096:18;7083:32;-1:-1:-1;;;;;7130:6:50;7127:30;7124:50;;;7170:1;7167;7160:12;7124:50;7209:58;7259:7;7250:6;7239:9;7235:22;7209:58;:::i;:::-;7286:8;;-1:-1:-1;7183:84:50;-1:-1:-1;;7371:2:50;7356:18;;7343:32;7411:13;;7404:21;7394:32;;7384:60;;7440:1;7437;7430:12;7384:60;6830:644;;;;-1:-1:-1;6830:644:50;;-1:-1:-1;;6830:644:50:o;7479:269::-;7536:6;7589:2;7577:9;7568:7;7564:23;7560:32;7557:52;;;7605:1;7602;7595:12;7557:52;7644:9;7631:23;7694:4;7687:5;7683:16;7676:5;7673:27;7663:55;;7714:1;7711;7704:12;7961:828;8159:4;8207:2;8196:9;8192:18;8237:2;8226:9;8219:21;8260:6;8295;8289:13;8326:6;8318;8311:22;8364:2;8353:9;8349:18;8342:25;;8426:2;8416:6;8413:1;8409:14;8398:9;8394:30;8390:39;8376:53;;8464:2;8456:6;8452:15;8485:1;8495:265;8509:6;8506:1;8503:13;8495:265;;;8602:2;8598:7;8586:9;8578:6;8574:22;8570:36;8565:3;8558:49;8630:50;8673:6;8664;8658:13;8630:50;:::i;:::-;8620:60;-1:-1:-1;8715:2:50;8738:12;;;;8703:15;;;;;8531:1;8524:9;8495:265;;8794:219;8943:2;8932:9;8925:21;8906:4;8963:44;9003:2;8992:9;8988:18;8980:6;8963:44;:::i;9210:300::-;9278:6;9286;9339:2;9327:9;9318:7;9314:23;9310:32;9307:52;;;9355:1;9352;9345:12;9307:52;9378:29;9397:9;9378:29;:::i;:::-;9368:39;9476:2;9461:18;;;;9448:32;;-1:-1:-1;;;9210:300:50:o;9515:806::-;9763:2;9775:21;;;9845:13;;9748:18;;;9867:22;;;9715:4;;9946:15;;;9920:2;9905:18;;;9715:4;9989:306;10003:6;10000:1;9997:13;9989:306;;;10062:13;;10104:9;;-1:-1:-1;;;;;10100:35:50;;;10088:48;;10188:2;10180:11;;;10174:18;10170:44;10156:12;;;10149:66;10270:15;;;;10244:2;10235:12;;;;10132:1;10018:9;9989:306;;;-1:-1:-1;10312:3:50;;9515:806;-1:-1:-1;;;;;9515:806:50:o;10326:380::-;10405:1;10401:12;;;;10448;;;10469:61;;10523:4;10515:6;10511:17;10501:27;;10469:61;10576:2;10568:6;10565:14;10545:18;10542:38;10539:161;;10622:10;10617:3;10613:20;10610:1;10603:31;10657:4;10654:1;10647:15;10685:4;10682:1;10675:15;10711:127;10772:10;10767:3;10763:20;10760:1;10753:31;10803:4;10800:1;10793:15;10827:4;10824:1;10817:15;11148:127;11209:10;11204:3;11200:20;11197:1;11190:31;11240:4;11237:1;11230:15;11264:4;11261:1;11254:15;11280:135;11319:3;11340:17;;;11337:43;;11360:18;;:::i;:::-;-1:-1:-1;11407:1:50;11396:13;;11280:135::o;11420:125::-;11485:9;;;11506:10;;;11503:36;;;11519:18;;:::i;11550:128::-;11617:9;;;11638:11;;;11635:37;;;11652:18;;:::i;11808:517::-;11909:2;11904:3;11901:11;11898:421;;;11945:5;11942:1;11935:16;11989:4;11986:1;11976:18;12059:2;12047:10;12043:19;12040:1;12036:27;12030:4;12026:38;12095:4;12083:10;12080:20;12077:47;;;-1:-1:-1;12118:4:50;12077:47;12173:2;12168:3;12164:12;12161:1;12157:20;12151:4;12147:31;12137:41;;12228:81;12246:2;12239:5;12236:13;12228:81;;;12305:1;12291:16;;12272:1;12261:13;12228:81;;12501:1194;-1:-1:-1;;;;;12618:3:50;12615:27;12612:53;;;12645:18;;:::i;:::-;12674:93;12763:3;12723:38;12755:4;12749:11;12723:38;:::i;:::-;12717:4;12674:93;:::i;:::-;12793:1;12818:2;12813:3;12810:11;12835:1;12830:607;;;;13481:1;13498:3;13495:93;;;-1:-1:-1;13554:19:50;;;13541:33;13495:93;-1:-1:-1;;12458:1:50;12454:11;;;12450:24;12446:29;12436:40;12482:1;12478:11;;;12433:57;13601:78;;12803:886;;12830:607;11755:1;11748:14;;;11792:4;11779:18;;-1:-1:-1;;12866:17:50;;;12980:229;12994:7;12991:1;12988:14;12980:229;;;13083:19;;;13070:33;13055:49;;13190:4;13175:20;;;;13143:1;13131:14;;;;13010:12;12980:229;;;12984:3;13237;13228:7;13225:16;13222:159;;;13361:1;13357:6;13351:3;13345;13342:1;13338:11;13334:21;13330:34;13326:39;13313:9;13308:3;13304:19;13291:33;13287:79;13279:6;13272:95;13222:159;;;13424:1;13418:3;13415:1;13411:11;13407:19;13401:4;13394:33;12803:886;;12501:1194;;;:::o;13700:485::-;-1:-1:-1;;;;;13885:32:50;;13867:51;;13954:2;13949;13934:18;;13927:30;;;13973:18;;13966:34;;;13993:6;14042;14037:2;14022:18;;14009:48;14106:1;14077:22;;;14101:2;14073:31;;;14066:42;;;;14169:2;14148:15;;;-1:-1:-1;;14144:29:50;14129:45;14125:54;;13700:485;-1:-1:-1;;13700:485:50:o;14190:1295::-;14314:3;14308:10;-1:-1:-1;;;;;14333:6:50;14330:30;14327:56;;;14363:18;;:::i;:::-;14392:96;14481:6;14441:38;14473:4;14467:11;14441:38;:::i;:::-;14435:4;14392:96;:::i;:::-;14537:4;14568:2;14557:14;;14585:1;14580:648;;;;15272:1;15289:6;15286:89;;;-1:-1:-1;15341:19:50;;;15335:26;15286:89;-1:-1:-1;;12458:1:50;12454:11;;;12450:24;12446:29;12436:40;12482:1;12478:11;;;12433:57;15388:81;;14550:929;;14580:648;11755:1;11748:14;;;11792:4;11779:18;;-1:-1:-1;;14616:20:50;;;14733:222;14747:7;14744:1;14741:14;14733:222;;;14829:19;;;14823:26;14808:42;;14936:4;14921:20;;;;14889:1;14877:14;;;;14763:12;14733:222;;;14737:3;14983:6;14974:7;14971:19;14968:201;;;15044:19;;;15038:26;-1:-1:-1;;15127:1:50;15123:14;;;15139:3;15119:24;15115:37;15111:42;15096:58;15081:74;;14968:201;-1:-1:-1;;;;15215:1:50;15199:14;;;15195:22;15182:36;;-1:-1:-1;14190:1295:50:o;15490:271::-;15673:6;15665;15660:3;15647:33;15629:3;15699:16;;15724:13;;;15699:16;15490:271;-1:-1:-1;15490:271:50:o;15980:209::-;16012:1;16038;16028:132;;16082:10;16077:3;16073:20;16070:1;16063:31;16117:4;16114:1;16107:15;16145:4;16142:1;16135:15;16028:132;-1:-1:-1;16174:9:50;;15980:209::o;16194:136::-;16233:3;16261:5;16251:39;;16270:18;;:::i;:::-;-1:-1:-1;;;16306:18:50;;16194:136::o;16335:184::-;16405:6;16458:2;16446:9;16437:7;16433:23;16429:32;16426:52;;;16474:1;16471;16464:12;16426:52;-1:-1:-1;16497:16:50;;16335:184;-1:-1:-1;16335:184:50:o;17029:287::-;17158:3;17196:6;17190:13;17212:66;17271:6;17266:3;17259:4;17251:6;17247:17;17212:66;:::i;:::-;17294:16;;;;;17029:287;-1:-1:-1;;17029:287:50:o",
446
+ "object": "0x6080604052600436106101d0575f3560e01c8063715018a6116100fd578063c5a7444911610092578063eb9019d411610062578063eb9019d414610512578063ed612f8c1461053e578063f2fde38b14610552578063f3513a3714610571575f5ffd5b8063c5a7444914610488578063d04a68c7146104a7578063ddca3f43146104d6578063e9257dc8146104f3575f5ffd5b8063a250eaf1116100cd578063a250eaf114610402578063ad3cb1cc14610423578063b84d356e14610460578063b85f5da214610474575f5ffd5b8063715018a6146103755780637c8a92c3146103895780638da5cb5b146103a8578063a09686c4146103ee575f5ffd5b806340f74f471161017357806356db9ef11161014357806356db9ef1146103055780635a8eed7314610324578063602a9eee146103435780636dd7d8ea14610356575f5ffd5b806340f74f471461029f5780634f1ef286146102cb57806352d1902d146102de57806354fd4d50146102f2575f5ffd5b80631b605b86116101ae5780631b605b86146102375780632bdf6d431461024b5780633174b6891461026c5780633687f24a14610280575f5ffd5b80630777cbef146101d45780630d2bd909146101f75780631904bb2e1461020b575b5f5ffd5b3480156101df575f5ffd5b506006545b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506004546101e4565b348015610216575f5ffd5b5061022a610225366004613763565b610585565b6040516101ee919061383e565b348015610242575f5ffd5b50600a546101e4565b348015610256575f5ffd5b5061026a610265366004613897565b6106c2565b005b348015610277575f5ffd5b5061026a610710565b34801561028b575f5ffd5b5061026a61029a3660046138d5565b61075f565b3480156102aa575f5ffd5b506102be6102b93660046138fb565b6107bc565b6040516101ee919061391b565b61026a6102d93660046139e8565b61094f565b3480156102e9575f5ffd5b506101e461096e565b3480156102fd575f5ffd5b5060016101e4565b348015610310575f5ffd5b5061026a61031f3660046138d5565b610989565b34801561032f575f5ffd5b5061026a61033e366004613ae6565b610aa0565b61026a610351366004613ae6565b610b55565b348015610361575f5ffd5b5061026a610370366004613763565b610d54565b348015610380575f5ffd5b5061026a610fff565b348015610394575f5ffd5b5061026a6103a3366004613b18565b611012565b3480156103b3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101ee565b3480156103f9575f5ffd5b506011546101e4565b34801561040d575f5ffd5b506104166112a5565b6040516101ee9190613b7d565b34801561042e575f5ffd5b50610453604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ee9190613bd4565b34801561046b575f5ffd5b50600e546101e4565b34801561047f575f5ffd5b5061026a611468565b348015610493575f5ffd5b5061026a6104a2366004613be6565b6115ef565b3480156104b2575f5ffd5b506104c66104c1366004613763565b611bbd565b60405190151581526020016101ee565b3480156104e1575f5ffd5b506010546001600160801b03166101e4565b3480156104fe575f5ffd5b5061026a61050d366004613c06565b611bda565b34801561051d575f5ffd5b5061053161052c366004613c70565b611c9d565b6040516101ee9190613c98565b348015610549575f5ffd5b506003546101e4565b34801561055d575f5ffd5b5061026a61056c366004613763565b611e9e565b34801561057c575f5ffd5b50610416611edb565b61058d613655565b61059682611bbd565b6105b35760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff161515606085015260028101805493949285019360808401919061063990613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461066590613cf2565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b50505091909252505050905292915050565b6106ca612098565b5f5b8181101561070b576107038383838181106106e9576106e9613d24565b90506020020160208101906106fe9190613763565b6120f3565b6001016106cc565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef3361073a6121cd565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b610767612098565b601080546001600160801b0319166001600160801b0383169081179091556040519081527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020015b60405180910390a150565b60606107c6612098565b601154829084106107d857505f6107fc565b6011546107e58486613d4c565b11156107fc576011546107f9908590613d5f565b90505b5f816001600160401b03811115610815576108156139d4565b60405190808252806020026020018201604052801561085a57816020015b604080518082019091525f8152606060208201528152602001906001900390816108335790505b5090505f5b82811015610944576040518060400160405280828861087e9190613d4c565b610889906001613d4c565b8152602001601161089a848a613d4c565b815481106108aa576108aa613d24565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610918575f848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016108d1565b5050505081525082828151811061093157610931613d24565b602090810291909101015260010161085f565b509150505b92915050565b610957612423565b610960826124c7565b61096a82826124cf565b5050565b5f61097761258b565b505f5160206140485f395f51905f5290565b5f6109926125d4565b805490915060ff600160401b82041615906001600160401b03165f811580156109b85750825b90505f826001600160401b031660011480156109d35750303b155b9050811580156109e1575080155b156109ff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a2957845460ff60401b1916600160401b1785555b610a32336125fc565b6001600f55601080546001600160801b0319166001600160801b0388161790558315610a9857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610aa933611bbd565b610ac65760405163510b8aad60e11b815260040160405180910390fd5b610ad0828261260d565b335f908152602081905260409020600201610aec828483613db6565b50610af633612681565b8015610b085750610b06336126ca565b155b15610b1657610b163361272c565b7f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b4993929190613e6f565b60405180910390a15050565b6010546001600160801b03163414610b80576040516358d620b360e01b815260040160405180910390fd5b335f9081526001602052604090205460ff1615610bb05760405163132e7efb60e31b815260040160405180910390fd5b610bba828261260d565b5f6040518060a001604052805f8152602001346001600160801b031681526020015f6001600160401b031681526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050338152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b0390951694909417949094179390931691909117909155608083015192935083929091506002820190610cc49082613eae565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191633908117909155610d14915061272c565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c338484604051610d4793929190613e6f565b60405180910390a1505050565b610d5d81611bbd565b610d7a5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526020819052604090206001810154600160c01b900460ff1615610dbe5760405163510ae2bd60e11b815260040160405180910390fd5b806002018054610dcd90613cf2565b90505f03610dee5760405163970c784d60e01b815260040160405180910390fd5b335f90815260076020526040902080546001600160a01b03848116911603610e2957604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610e4357610e416121cd565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560085416610ef55760088054336001600160a01b03199182168117909255600980549091169091179055610f4c565b600980546001600160a01b039081165f9081526007602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f610f5b83613f68565b9091555050815433319083905f90610f74908490613d4c565b909155505060018281018054601090610f9e908490600160801b90046001600160401b0316613f80565b82546001600160401b039182166101009390930a928302919092021990911617905550604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610d47565b611007612098565b6110105f61279f565b565b61101a612098565b6011541561103b576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff16156110745760405163132e7efb60e31b815260040160405180910390fd5b60025f8484604051611087929190613f9f565b604080519182900390912082526020820192909252015f205460ff16156110c157604051637e4c066f60e01b815260040160405180910390fd5b81156110d1576110d1838361260d565b5f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b03168152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506001600160a01b0388168152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b03909516949094179490941793909316919091179091556080830151929350839290915060028201906111e49082613eae565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561124c5760068054905f61124683613f68565b91905055505b61125585612681565b15611263576112638561272c565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c85858560405161129693929190613e6f565b60405180910390a15050505050565b600c546060905f906001600160401b038111156112c4576112c46139d4565b6040519080825280602002602001820160405280156112fd57816020015b6112ea613655565b8152602001906001900390816112e25790505b5090505f5b600c54811015611462575f600c828154811061132057611320613d24565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff161515606086015260028201805493965091949093840192909185916080840191906113b890613cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546113e490613cf2565b801561142f5780601f106114065761010080835404028352916020019161142f565b820191905f5260205f20905b81548152906001019060200180831161141257829003601f168201915b50505050508152505081525084848151811061144d5761144d613d24565b60209081029190910101525050600101611302565b50919050565b61147133611bbd565b61148e5760405163668191af60e11b815260040160405180910390fd5b335f9081526020819052604090206001810154600160c01b900460ff16156114c957604051632d8b5c9760e21b815260040160405180910390fd5b600f54600454116114ed57604051633b15f1f760e21b815260040160405180910390fd5b6001818101805460ff60c01b1916600160c01b179055600680545f90611514908490613d4c565b9091555061152390503361280f565b60018101546001600160801b0316156115bf576001810180546001600160801b031981169091556040516001600160801b03909116905f90339083908381818185875af1925050503d805f8114611595576040519150601f19603f3d011682016040523d82523d5f602084013e61159a565b606091505b50509050806115bc57604051633c31275160e21b815260040160405180910390fd5b50505b6040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a54117906020016107b1565b6115f7612098565b8060ff165f0361161a57604051630e52390960e41b815260040160405180910390fd5b60ff8116600f5561162961291f565b611631612abd565b600d80546001600160a01b03191690556004545f906116569060ff8416908390612b0e565b90508060ff165f0361167b576040516367c0fced60e01b815260040160405180910390fd5b5f5b600454811015611988575f6004828154811061169b5761169b613d24565b5f9182526020808320909101546001600160a01b031680835290829052604090912060018101549192509060ff600160c01b90910416806116ea57508060020180546116e690613cf2565b1590505b156116f6575050611980565b600d546001600160a01b03166117315750600d80546001600160a01b0319166001600160a01b03929092169190911790556001600e55611980565b8360ff16600e54101561174f576117488285612b60565b5050611980565b600d546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160a0810184528554815260018601546001600160801b03811682850152600160801b81046001600160401b031694820194909452600160c01b90930460ff1615156060840152600285018054919461196d949093840192909187916080840191906117e490613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461181090613cf2565b801561185b5780601f106118325761010080835404028352916020019161185b565b820191905f5260205f20905b81548152906001019060200180831161183e57829003601f168201915b505050919092525050509052604080518082018252600d546001600160a01b03168152815160a0810183528554815260018601546001600160801b038116602080840191909152600160801b82046001600160401b031694830194909452600160c01b900460ff16151560608201526002860180549293840192879160808401916118e590613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461191190613cf2565b801561195c5780601f106119335761010080835404028352916020019161195c565b820191905f5260205f20905b81548152906001019060200180831161193f57829003601f168201915b505050505081525050815250612fa5565b1561197c5761197c8386612b60565b5050505b60010161167d565b50600e545f036119ab576040516367c0fced60e01b815260040160405180910390fd5b600d54600e546001600160a01b03909116905f906001600160401b038111156119d6576119d66139d4565b6040519080825280602002602001820160405280156119ff578160200160208202803683370190505b5090505f5b600e54811015611a595782828281518110611a2157611a21613d24565b6001600160a01b039283166020918202929092018101919091529381165f908152600b90945260409093205490921691600101611a04565b50611a6381612fe1565b601180546001810182555f9182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680190611aa090600c906136b6565b600f546001600160401b03811115611aba57611aba6139d4565b604051908082528060200260200182016040528015611ae3578160200160208202803683370190505b508051611af891600c916020909101906136d1565b505f5b600f54811015610a98575f83600e5483611b159190613fae565b81518110611b2557611b25613d24565b6020026020010151905080600c8381548110611b4357611b43613d24565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832054858301908152875460018181018a558986529390942095516002909402909501805493909416921691909117825591519082015501611afb565b6001600160a01b03165f9081526001602052604090205460ff1690565b611be2612098565b828114611c2e5760405162461bcd60e51b81526020600482015260156024820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60448201526064015b60405180910390fd5b5f5b83811015611c9657611c8e858583818110611c4d57611c4d613d24565b9050602002016020810190611c629190613763565b848484818110611c7457611c74613d24565b9050602002016020810190611c899190613763565b6130f8565b600101611c30565b5050505050565b6060611ca7612098565b5f611cb5835f600a54612b0e565b6001600160401b03811115611ccc57611ccc6139d4565b604051908082528060200260200182016040528015611d1057816020015b604080518082019091525f8082526020820152815260200190600190039081611cea5790505b506008549091506001600160a01b0390811690851615611d4957506001600160a01b038085165f90815260076020526040902060030154165b5f5b6001600160a01b03821615801590611d6257508481105b15611dd7576001600160a01b038083165f818152600760209081526040918290208251808401909352928252825490931692810192909252908483611da681613f68565b945081518110611db857611db8613d24565b6020908102919091010152600301546001600160a01b03169150611d4b565b80835103611dea57829350505050610949565b5f816001600160401b03811115611e0357611e036139d4565b604051908082528060200260200182016040528015611e4757816020015b604080518082019091525f8082526020820152815260200190600190039081611e215790505b5090505f5b82811015611e9357848181518110611e6657611e66613d24565b6020026020010151828281518110611e8057611e80613d24565b6020908102919091010152600101611e4c565b509695505050505050565b611ea6612098565b6001600160a01b038116611ecf57604051631e4fbdf760e01b81525f6004820152602401611c25565b611ed88161279f565b50565b6003546060905f906001600160401b03811115611efa57611efa6139d4565b604051908082528060200260200182016040528015611f3357816020015b611f20613655565b815260200190600190039081611f185790505b5090505f5b600354811015611462575f60038281548110611f5657611f56613d24565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff16151560608601526002820180549396509194909384019290918591608084019190611fee90613cf2565b80601f016020809104026020016040519081016040528092919081815260200182805461201a90613cf2565b80156120655780601f1061203c57610100808354040283529160200191612065565b820191905f5260205f20905b81548152906001019060200180831161204857829003601f168201915b50505050508152505081525084848151811061208357612083613d24565b60209081029190910101525050600101611f38565b336120ca7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110105760405163118cdaa760e01b8152336004820152602401611c25565b6001600160a01b038082165f9081526007602052604090208054909116612118575050565b60018101546001600160a01b0383163181101561217657612143816001600160a01b03851631613d5f565b82546001600160a01b03165f908152602081905260408120805490919061216b908490613d4c565b909155506121b89050565b61218a6001600160a01b0384163182613d5f565b82546001600160a01b03165f90815260208190526040812080549091906121b2908490613d5f565b90915550505b506001600160a01b0390911631600190910155565b335f90815260076020526040812080546001600160a01b03166122035760405163498ea63d60e01b815260040160405180910390fd5b6009546008546001600160a01b0391821691160361223c57600880546001600160a01b031990811690915560098054909116905561234f565b600954336001600160a01b0390911603612295576002810180546001600160a01b039081165f90815260076020526040902060030180546001600160a01b0319908116909155915460098054909316911617905561234f565b600854336001600160a01b03909116036122f9576009546001600160a01b039081165f9081526007602052604080822060020180546001600160a01b031990811690915560088054808616855292909320600301549116921691909117905561234f565b60038181018054600280850180546001600160a01b039081165f9081526007602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001840154815491929091839190612380908490613d5f565b9091555050600181810180546010906123aa908490600160801b90046001600160401b0316613fcd565b82546001600160401b039182166101009390930a928302919092021990911617905550335f90815260076020526040812080546001600160a01b031990811682556001820183905560028201805482169055600390910180549091169055600a80549161241683613fec565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124a957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661249d5f5160206140485f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110105760405163703e46dd60e11b815260040160405180910390fd5b611ed8612098565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612529575060408051601f3d908101601f1916820190925261252691810190614001565b60015b61255157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c25565b5f5160206140485f395f51905f52811461258157604051632a87526960e21b815260048101829052602401611c25565b61070b8383613372565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110105760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610949565b6126046133c7565b611ed8816133ec565b5f828260405161261e929190613f9f565b60408051918290039091205f8181526002602052919091205490915060ff161561265b57604051637e4c066f60e01b815260040160405180910390fd5b61266583836133f4565b5f908152600260205260409020805460ff191660011790555050565b6001600160a01b0381165f9081526020819052604081206001810154600160c01b900460ff161580156126c357508060020180546126be90613cf2565b151590505b9392505050565b6001600160a01b0381165f9081526005602052604081205460045481106126f357505f92915050565b826001600160a01b03166004828154811061271057612710613d24565b5f918252602090912001546001600160a01b0316149392505050565b60048054600180820183555f8390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319166001600160a01b03851617905590546127849190613d5f565b6001600160a01b039091165f90815260056020526040902055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612818816126ca565b61281f5750565b6001600160a01b0381165f9081526005602052604081205460045490919061284990600190613d5f565b90508082146128ce575f6004828154811061286657612866613d24565b5f91825260209091200154600480546001600160a01b03909216925082918590811061289457612894613d24565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526005909152604090208290555b60048054806128df576128df614018565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600590935250506040812055565b6004545f81900361292d5750565b5f612939600183613d5f565b90505b801561096a575f61294e826001613d4c565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6129839190613fae565b90508082036129925750612aab565b5f600483815481106129a6576129a6613d24565b5f918252602082200154600480546001600160a01b03909216935090849081106129d2576129d2613d24565b5f91825260209091200154600480546001600160a01b03909216925090849081106129ff576129ff613d24565b5f91825260209091200154600480546001600160a01b039092169186908110612a2a57612a2a613d24565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508160048481548110612a6957612a69613d24565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905593821681526005909352604080842094909455168152208190555b80612ab581613fec565b91505061293c565b600d546001600160a01b03165b6001600160a01b03811615612b07576001600160a01b039081165f908152600b6020526040902080546001600160a01b0319811690915516612aca565b505f600e55565b5f81831115612b3a57604051632457cde760e01b81526004810184905260248101839052604401611c25565b82841015612b495750816126c3565b81841115612b585750806126c3565b509192915050565b6001600160a01b0382165f90815260208181526040808320815160a0810183528154815260018201546001600160801b03811694820194909452600160801b84046001600160401b031692810192909252600160c01b90920460ff1615156060820152600282018054919291608084019190612bdb90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0790613cf2565b8015612c525780601f10612c2957610100808354040283529160200191612c52565b820191905f5260205f20905b815481529060010190602001808311612c3557829003601f168201915b505050919092525050604080518082018252600d546001600160a01b03168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054969750612d9396939550918501939290916080840191612ced90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612d1990613cf2565b8015612d645780601f10612d3b57610100808354040283529160200191612d64565b820191905f5260205f20905b815481529060010190602001808311612d4757829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612fa5565b15612da657612da183613415565b612f46565b600d546001600160a01b039081165f818152600b6020526040902054909116905b6001600160a01b038216612de457612ddf8186613466565b612f43565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054612f13959385019392916080840191612e6d90613cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990613cf2565b8015612ee45780601f10612ebb57610100808354040283529160200191612ee4565b820191905f5260205f20905b815481529060010190602001808311612ec757829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612fa5565b15612f2257612ddf8186613466565b506001600160a01b038082165f908152600b60205260409020541690612dc7565b50505b8160ff16600e54111561070b57600d80546001600160a01b039081165f908152600b6020526040812080546001600160a01b03198082169092558454931692168217909255600e80549192612f9a83613fec565b919050555050505050565b6020808201515190830151515f919003612fd15750805182516001600160a01b03918216911610610949565b5060209081015151910151511190565b80515f819003612fef575050565b5f612ffb600183613d5f565b90505b801561070b575f613010826001613d4c565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6130459190613fae565b90505f84838151811061305a5761305a613d24565b6020026020010151905084828151811061307657613076613d24565b602002602001015185848151811061309057613090613d24565b60200260200101906001600160a01b031690816001600160a01b031681525050808583815181106130c3576130c3613d24565b60200260200101906001600160a01b031690816001600160a01b031681525050505080806130f090613fec565b915050612ffe565b60115415613119576040516349625b3b60e01b815260040160405180910390fd5b61312281611bbd565b61313f5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260076020526040902080549091161561317a57604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556008541661323757600880546001600160a01b0385166001600160a01b0319918216811790925560098054909116909117905561328f565b600980546001600160a01b039081165f9081526007602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f61329e83613f68565b90915550506001600160a01b038083165f908152602081905260408120805490928616319183916132d0908490613d4c565b9091555050600181810180546010906132fa908490600160801b90046001600160401b0316613f80565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e284846040516133649291906001600160a01b0392831681529116602082015260400190565b60405180910390a150505050565b61337b826134c4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133bf5761070b8282613527565b61096a613599565b6133cf6135b8565b61101057604051631afcd79f60e31b815260040160405180910390fd5b611ea66133c7565b6030811461096a576040516305db9dbd60e01b815260040160405180910390fd5b600d80546001600160a01b038381165f818152600b602052604081208054939094166001600160a01b031993841617909355835490911617909155600e80549161345e83613f68565b919050555050565b6001600160a01b038281165f818152600b602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600e8054916134bb83613f68565b91905055505050565b806001600160a01b03163b5f036134f957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c25565b5f5160206140485f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613543919061402c565b5f60405180830381855af49150503d805f811461357b576040519150601f19603f3d011682016040523d82523d5f602084013e613580565b606091505b50915091506135908583836135d1565b95945050505050565b34156110105760405163b398979f60e01b815260040160405180910390fd5b5f6135c16125d4565b54600160401b900460ff16919050565b6060826135e6576135e18261362d565b6126c3565b81511580156135fd57506001600160a01b0384163b155b1561362657604051639996b31560e01b81526001600160a01b0385166004820152602401611c25565b50806126c3565b80511561363c57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b031681526020016136b16040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b031681526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611ed89190613734565b828054828255905f5260205f20908101928215613724579160200282015b8281111561372457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136ef565b50613730929150613734565b5090565b5b80821115613730575f8155600101613735565b80356001600160a01b038116811461375e575f5ffd5b919050565b5f60208284031215613773575f5ffd5b6126c382613748565b5f5b8381101561379657818101518382015260200161377e565b50505f910152565b5f81518084526137b581602086016020860161377c565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526001600160801b0360208201511660608501526001600160401b0360408201511660808501526060810151151560a08501526080810151905060a060c085015261383660e085018261379e565b949350505050565b602081525f6126c360208301846137c9565b5f5f83601f840112613860575f5ffd5b5081356001600160401b03811115613876575f5ffd5b6020830191508360208260051b8501011115613890575f5ffd5b9250929050565b5f5f602083850312156138a8575f5ffd5b82356001600160401b038111156138bd575f5ffd5b6138c985828601613850565b90969095509350505050565b5f602082840312156138e5575f5ffd5b81356001600160801b03811681146126c3575f5ffd5b5f5f6040838503121561390c575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139c857868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b808310156139b057835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613979565b50965050506020938401939190910190600101613941565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156139f9575f5ffd5b613a0283613748565b915060208301356001600160401b03811115613a1c575f5ffd5b8301601f81018513613a2c575f5ffd5b80356001600160401b03811115613a4557613a456139d4565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613a7357613a736139d4565b604052818152828201602001871015613a8a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613ab9575f5ffd5b5081356001600160401b03811115613acf575f5ffd5b602083019150836020828501011115613890575f5ffd5b5f5f60208385031215613af7575f5ffd5b82356001600160401b03811115613b0c575f5ffd5b6138c985828601613aa9565b5f5f5f5f60608587031215613b2b575f5ffd5b613b3485613748565b935060208501356001600160401b03811115613b4e575f5ffd5b613b5a87828801613aa9565b90945092505060408501358015158114613b72575f5ffd5b939692955090935050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139c857603f19878603018452613bbf8583516137c9565b94506020938401939190910190600101613ba3565b602081525f6126c3602083018461379e565b5f60208284031215613bf6575f5ffd5b813560ff811681146126c3575f5ffd5b5f5f5f5f60408587031215613c19575f5ffd5b84356001600160401b03811115613c2e575f5ffd5b613c3a87828801613850565b90955093505060208501356001600160401b03811115613c58575f5ffd5b613c6487828801613850565b95989497509550505050565b5f5f60408385031215613c81575f5ffd5b613c8a83613748565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613ce757835180516001600160a01b039081168552602091820151168185015290930192604090920191600101613cb1565b509095945050505050565b600181811c90821680613d0657607f821691505b60208210810361146257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561094957610949613d38565b8181038181111561094957610949613d38565b601f82111561070b57805f5260205f20601f840160051c81016020851015613d975750805b601f840160051c820191505b81811015611c96575f8155600101613da3565b6001600160401b03831115613dcd57613dcd6139d4565b613de183613ddb8354613cf2565b83613d72565b5f601f841160018114613e12575f8515613dfb5750838201355b5f19600387901b1c1916600186901b178355611c96565b5f83815260208120601f198716915b82811015613e415786850135825560209485019460019092019101613e21565b5086821015613e5d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b03811115613ec757613ec76139d4565b613edb81613ed58454613cf2565b84613d72565b6020601f821160018114613f0d575f8315613ef65750848201515b5f19600385901b1c1916600184901b178455611c96565b5f84815260208120601f198516915b82811015613f3c5787850151825560209485019460019092019101613f1c565b5084821015613f5957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60018201613f7957613f79613d38565b5060010190565b6001600160401b03818116838216019081111561094957610949613d38565b818382375f9101908152919050565b5f82613fc857634e487b7160e01b5f52601260045260245ffd5b500690565b6001600160401b03828116828216039081111561094957610949613d38565b5f81613ffa57613ffa613d38565b505f190190565b5f60208284031215614011575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffd5b5f825161403d81846020870161377c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122054e6c6adbab0bb2d611684692d982b78b8d9ced7d298419694209aec1ae93b0464736f6c634300081b0033",
447
+ "sourceMap": "1647:23210:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13635:115;;;;;;;;;;-1:-1:-1;13719:24:32;;13635:115;;;160:25:35;;;148:2;133:18;13635:115:32;;;;;;;;13516:113;;;;;;;;;;-1:-1:-1;13598:17:32;:24;13516:113;;13992:253;;;;;;;;;;-1:-1:-1;13992:253:32;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15104:93::-;;;;;;;;;;-1:-1:-1;15178:12:32;;15104:93;;10734:176;;;;;;;;;;-1:-1:-1;10734:176:32;;;;;:::i;:::-;;:::i;:::-;;10649:79;;;;;;;;;;;;;:::i;4680:141::-;;;;;;;;;;-1:-1:-1;4680:141:32;;;;;:::i;:::-;;:::i;16158:531::-;;;;;;;;;;-1:-1:-1;16158:531:32;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;13246:76:32:-;;;;;;;;;;-1:-1:-1;13314:1:32;13246:76;;4374:167;;;;;;;;;;-1:-1:-1;4374:167:32;;;;;:::i;:::-;;:::i;7992:498::-;;;;;;;;;;-1:-1:-1;7992:498:32;;;;;:::i;:::-;;:::i;7209:777::-;;;;;;:::i;:::-;;:::i;9428:1215::-;;;;;;;;;;-1:-1:-1;9428:1215:32;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;4827:1061:32:-;;;;;;;;;;-1:-1:-1;4827:1061:32;;;;;:::i;:::-;;:::i;2441:144:19:-;;;;;;;;;;-1:-1:-1;1313:22:19;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:19;;;7992:51:35;;7980:2;7965:18;2441:144:19;7846:203:35;16056:96:32;;;;;;;;;;-1:-1:-1;16131:7:32;:14;16056:96;;14251:429;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;13756:109:32:-;;;;;;;;;;-1:-1:-1;13837:21:32;;13756:109;;8496:926;;;;;;;;;;;;;:::i;10916:2284::-;;;;;;;;;;-1:-1:-1;10916:2284:32;;;;;:::i;:::-;;:::i;13871:115::-;;;;;;;;;;-1:-1:-1;13871:115:32;;;;;:::i;:::-;;:::i;:::-;;;9550:14:35;;9543:22;9525:41;;9513:2;9498:18;13871:115:32;9385:187:35;13328:75:32;;;;;;;;;;-1:-1:-1;13392:4:32;;-1:-1:-1;;;;;13392:4:32;13328:75;;5894:293;;;;;;;;;;-1:-1:-1;5894:293:32;;;;;:::i;:::-;;:::i;15203:847::-;;;;;;;;;;-1:-1:-1;15203:847:32;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13409:101::-;;;;;;;;;;-1:-1:-1;13485:11:32;:18;13409:101;;3405:215:19;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;14686:412:32:-;;;;;;;;;;;;;:::i;13992:253::-;14051:16;;:::i;:::-;14084:27;14106:4;14084:21;:27::i;:::-;14079:90;;14134:24;;-1:-1:-1;;;14134:24:32;;;;;;;;;;;14079:90;14186:52;;;;;;;;-1:-1:-1;;;;;14186:52:32;;;;;-1:-1:-1;14215:21:32;;;14186:52;14215:21;;;;;;;14186:52;;;;;;;;;;;;;;;-1:-1:-1;;;;;14186:52:32;;;;;;-1:-1:-1;;;14186:52:32;;-1:-1:-1;;;;;14186:52:32;;;;;;;;-1:-1:-1;;;14186:52:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14186:52:32;;;;-1:-1:-1;;;14186:52:32;;14179:59;13992:253;-1:-1:-1;;13992:253:32:o;10734:176::-;2334:13:19;:11;:13::i;:::-;10817:9:32::1;10812:92;10832:17:::0;;::::1;10812:92;;;10870:23;10883:6;;10890:1;10883:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10870:12;:23::i;:::-;10851:3;;10812:92;;;;10734:176:::0;;:::o;10649:79::-;10691:30;10699:10;10711:9;:7;:9::i;:::-;10691:30;;;-1:-1:-1;;;;;12175:32:35;;;12157:51;;12244:32;;;;12239:2;12224:18;;12217:60;12130:18;10691:30:32;;;;;;;10649:79::o;4680:141::-;2334:13:19;:11;:13::i;:::-;4750:4:32::1;:22:::0;;-1:-1:-1;;;;;;4750:22:32::1;-1:-1:-1::0;;;;;4750:22:32;::::1;::::0;;::::1;::::0;;;4787:27:::1;::::0;12434:66:35;;;4787:27:32::1;::::0;12422:2:35;12407:18;4787:27:32::1;;;;;;;;4680:141:::0;:::o;16158:531::-;16241:14;2334:13:19;:11;:13::i;:::-;16312:7:32::1;:14:::0;16283:5;;16302:24;::::1;16298:163;;-1:-1:-1::0;16350:1:32::1;16298:163;;;16389:7;:14:::0;16372::::1;16381:5:::0;16372:6;:14:::1;:::i;:::-;:31;16368:93;;;16427:7;:14:::0;:23:::1;::::0;16444:6;;16427:23:::1;:::i;:::-;16419:31;;16368:93;16471:21;16507:5;-1:-1:-1::0;;;;;16495:18:32::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;16495:18:32::1;;;;;;;;;;;;;;;-1:-1:-1::0;16471:42:32;-1:-1:-1;16528:9:32::1;16523:136;16547:5;16543:1;:9;16523:136;;;16585:63;;;;;;;;16608:1;16599:6;:10;;;;:::i;:::-;:14;::::0;16612:1:::1;16599:14;:::i;:::-;16585:63:::0;;::::1;;16627:7;16635:10;16644:1:::0;16635:6;:10:::1;:::i;:::-;16627:19;;;;;;;;:::i;:::-;;;;;;;;16585:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;16585:63:32::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;::::0;16573:6:::1;16580:1;16573:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:75;16554:3:::1;;16523:136;;;-1:-1:-1::0;16676:6:32;-1:-1:-1;;2357:1:19::1;16158:531:32::0;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;4374:167:32:-;4158:30:20;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:20;-1:-1:-1;;;4302:15:20;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:20;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:20;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:20;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:20;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:20;-1:-1:-1;;;5011:22:20;;;4977:67;4448:26:32::1;4463:10;4448:14;:26::i;:::-;4501:1;4484:14;:18:::0;4512:4:::1;:22:::0;;-1:-1:-1;;;;;;4512:22:32::1;-1:-1:-1::0;;;;;4512:22:32;::::1;;::::0;;5064:101:20;;;;5098:23;;-1:-1:-1;;;;5098:23:20;;;5140:14;;-1:-1:-1;13059:50:35;;5140:14:20;;13047:2:35;13032:18;5140:14:20;;;;;;;5064:101;4092:1079;;;;;4374:167:32;:::o;7992:498::-;8070:33;8092:10;8070:21;:33::i;:::-;8065:96;;8126:24;;-1:-1:-1;;;8126:24:32;;;;;;;;;;;8065:96;8171:44;8202:12;;8171:30;:44::i;:::-;8242:10;8226:15;:27;;;;;;;;;;:40;;:55;8269:12;;8226:40;:55;:::i;:::-;;8296:37;8322:10;8296:25;:37::i;:::-;:72;;;;;8338:30;8357:10;8338:18;:30::i;:::-;8337:31;8296:72;8292:134;;;8384:31;8404:10;8384:19;:31::i;:::-;8441:42;8458:10;8470:12;;8441:42;;;;;;;;:::i;:::-;;;;;;;;7992:498;;:::o;7209:777::-;7309:4;;-1:-1:-1;;;;;7309:4:32;7296:9;:17;7292:67;;7336:12;;-1:-1:-1;;;7336:12:32;;;;;;;;;;;7292:67;7387:10;7373:25;;;;:13;:25;;;;;;;;7369:91;;;7421:28;;-1:-1:-1;;;7421:28:32;;;;;;;;;;;7369:91;7470:44;7501:12;;7470:30;:44::i;:::-;7525:30;7558:189;;;;;;;;7627:1;7558:189;;;;7655:9;-1:-1:-1;;;;;7558:189:32;;;;;7599:1;-1:-1:-1;;;;;7558:189:32;;;;;7691:5;7558:189;;;;;;7724:12;;7558:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7558:189:32;;;;-1:-1:-1;;7772:10:32;7758:25;;7786:4;7758:25;;;;;;;;:32;;-1:-1:-1;;7758:32:32;;;;;7800:27;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7800:39:32;-1:-1:-1;;;;;;;;;7800:39:32;;;-1:-1:-1;;;7800:39:32;-1:-1:-1;;;;;;7800:39:32;;;-1:-1:-1;;;;;7800:39:32;;;;;;;;;;;;;;;;;;;;;;;;;;7525:222;;-1:-1:-1;7525:222:32;;7800:27;;-1:-1:-1;7800:39:32;;;;;;;;:::i;:::-;-1:-1:-1;;7849:11:32;:28;;;;;;;-1:-1:-1;7849:28:32;;;;;;;;-1:-1:-1;;;;;;7849:28:32;7866:10;7849:28;;;;;;7887:31;;-1:-1:-1;7887:19:32;:31::i;:::-;7934:45;7954:10;7966:12;;7934:45;;;;;;;;:::i;:::-;;;;;;;;7282:704;7209:777;;:::o;9428:1215::-;9480:27;9502:4;9480:21;:27::i;:::-;9475:90;;9530:24;;-1:-1:-1;;;9530:24:32;;;;;;;;;;;9475:90;-1:-1:-1;;;;;9613:21:32;;9575:35;9613:21;;;;;;;;;;9648:24;;;;-1:-1:-1;;;9648:24:32;;;;9644:85;;;9695:23;;-1:-1:-1;;;9695:23:32;;;;;;;;;;;9644:85;9743:13;:26;;:33;;;;;:::i;:::-;;;9780:1;9743:38;9739:110;;9804:34;;-1:-1:-1;;;9804:34:32;;;;;;;;;;;9739:110;9888:10;9859:18;9880:19;;;:7;:19;;;;;9913:15;;-1:-1:-1;;;;;9913:23:32;;;:15;;:23;9909:80;;9959:19;;-1:-1:-1;;;9959:19:32;;;;;;;;;;;9909:80;10003:15;;-1:-1:-1;;;;;10003:15:32;:29;9999:69;;10048:9;:7;:9::i;:::-;;9999:69;10100:88;;;;;;;;-1:-1:-1;;;;;10100:88:32;;;;;10132:10;:18;;10100:88;;;;;;;-1:-1:-1;10100:88:32;;;;;;;;;;;;10078:19;;;:7;:19;;;;;;;:110;;;;;;;-1:-1:-1;;;;;;10078:110:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10203:11;;;10199:277;;10244:11;:24;;10258:10;-1:-1:-1;;;;;;10244:24:32;;;;;;;;10282:11;:24;;;;;;;;;;10199:277;;;10345:11;;;-1:-1:-1;;;;;10345:11:32;;;10337:20;;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;10337:38:32;;;10365:10;10337:38;;;;;;10416:11;;10389:19;;;;;;;:24;;:38;;;;10416:11;;;;10389:38;;;;;;;10441:24;;;;;;10199:277;10485:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;10510:47:32;;10539:10;:18;;10510:13;;:25;;:47;;10539:18;;10510:47;:::i;:::-;;;;-1:-1:-1;;10596:1:32;10567:25;;;:30;;:25;;:30;;10596:1;;-1:-1:-1;;;10567:30:32;;-1:-1:-1;;;;;10567:30:32;;:::i;:::-;;;-1:-1:-1;;;;;10567:30:32;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10613:23:32;;;10619:10;12157:51:35;;-1:-1:-1;;;;;12244:32:35;;12239:2;12224:18;;12217:60;10613:23:32;;12130:18:35;10613:23:32;11983:300:35;3155:101:19;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;4827:1061:32:-;2334:13:19;:11;:13::i;:::-;4942:7:32::1;:14:::0;:18;4938:76:::1;;4983:20;;-1:-1:-1::0;;;4983:20:32::1;;;;;;;;;;;4938:76;-1:-1:-1::0;;;;;5028:19:32;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;5024:85;;;5070:28;;-1:-1:-1::0;;;5070:28:32::1;;;;;;;;;;;5024:85;5123:14;:39;5148:12;;5138:23;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;5123:39;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;5123:39:32;;::::1;;5119:102;;;5185:25;;-1:-1:-1::0;;;5185:25:32::1;;;;;;;;;;;5119:102;5283:24:::0;;5279:99:::1;;5323:44;5354:12;;5323:30;:44::i;:::-;5388:30;5433:107;;;;;;;;5477:1;5433:107;;;;5485:1;-1:-1:-1::0;;;;;5433:107:32::1;;;;;5461:1;-1:-1:-1::0;;;;;5433:107:32::1;;;;;5500:10;5433:107;;;;;;5526:12;;5433:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5433:107:32;;;;-1:-1:-1;;;;;;;5551:19:32;::::1;::::0;;5573:4:::1;5551:19;::::0;;;;;;;:26;;-1:-1:-1;;5551:26:32::1;::::0;::::1;::::0;;5587:21;;;;;;;:33;;;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;-1:-1:-1::0;;;5587:33:32::1;-1:-1:-1::0;;;;;;;;;5587:33:32;;::::1;-1:-1:-1::0;;;5587:33:32::1;-1:-1:-1::0;;;;;;5587:33:32;;;-1:-1:-1;;;;;5587:33:32;;::::1;::::0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;::::1;::::0;5388:152;;-1:-1:-1;5388:152:32;;5587:21;;-1:-1:-1;5587:33:32::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;5630:11:32::1;:22:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;5630:22:32;;;;;::::1;::::0;;-1:-1:-1;;;;;;5630:22:32::1;-1:-1:-1::0;;;;;5630:22:32;::::1;;::::0;;-1:-1:-1;5663:67:32;::::1;;;5693:24;:26:::0;;;:24:::1;:26;::::0;::::1;:::i;:::-;;;;;;5663:67;5744:31;5770:4;5744:25;:31::i;:::-;5740:87;;;5791:25;5811:4;5791:19;:25::i;:::-;5842:39;5862:4;5868:12;;5842:39;;;;;;;;:::i;:::-;;;;;;;;4928:960;4827:1061:::0;;;;:::o;14251:429::-;14378:16;:23;14304:18;;14334:25;;-1:-1:-1;;;;;14362:40:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;14334:68:32;-1:-1:-1;14417:9:32;14412:238;14436:16;:23;14432:27;;14412:238;;;14480:12;14495:16;14512:1;14495:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14495:19:32;14557:21;;;;;;;;;;;14604:35;;;;;;;;;;;;;;;;;;;;;14495:19;14604:35;;;-1:-1:-1;;;;;14604:35:32;;;;;;-1:-1:-1;;;14604:35:32;;-1:-1:-1;;;;;14604:35:32;;;;;;;;-1:-1:-1;;;14604:35:32;;;;;;;;;;;;;;;;14495:19;;-1:-1:-1;14557:21:32;;14604:35;;;;;;;14557:21;;14604:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14592:6;14599:1;14592:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;14461:3:32;;14412:238;;;-1:-1:-1;14667:6:32;14251:429;-1:-1:-1;14251:429:32:o;8496:926::-;8547:33;8569:10;8547:21;:33::i;:::-;8542:94;;8603:22;;-1:-1:-1;;;8603:22:32;;;;;;;;;;;8542:94;8696:10;8646:31;8680:27;;;;;;;;;;8721:20;;;;-1:-1:-1;;;8721:20:32;;;;8717:84;;;8764:26;;-1:-1:-1;;;8764:26:32;;;;;;;;;;;8717:84;8843:14;;8815:17;:24;:42;8811:101;;8880:21;;-1:-1:-1;;;8880:21:32;;;;;;;;;;;8811:101;8945:4;8922:20;;;:27;;-1:-1:-1;;;;8922:27:32;-1:-1:-1;;;8922:27:32;;;8959:24;:29;;8922:27;;8959:29;;8945:4;;8959:29;:::i;:::-;;;;-1:-1:-1;8999:34:32;;-1:-1:-1;9022:10:32;8999:22;:34::i;:::-;9104:13;;;;-1:-1:-1;;;;;9104:13:32;:17;9100:271;;9157:13;;;;;-1:-1:-1;;;;;;9184:17:32;;;;;9233:46;;-1:-1:-1;;;;;9157:13:32;;;;-1:-1:-1;;9241:10:32;;9157:13;;-1:-1:-1;9233:46:32;-1:-1:-1;9233:46:32;9157:13;9241:10;9233:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9215:64;;;9298:7;9293:68;;9332:14;;-1:-1:-1;;;9332:14:32;;;;;;;;;;;9293:68;9123:248;;9100:271;9386:29;;9404:10;7992:51:35;;9386:29:32;;7980:2:35;7965:18;9386:29:32;7846:203:35;10916:2284:32;2334:13:19;:11;:13::i;:::-;10992:1:32::1;:6;;10997:1;10992:6:::0;10988:63:::1;;11021:19;;-1:-1:-1::0;;;11021:19:32::1;;;;;;;;;;;10988:63;11061:18;::::0;::::1;:14;:18:::0;11090:10:::1;:8;:10::i;:::-;11110:24;:22;:24::i;:::-;11145:20;:33:::0;;-1:-1:-1;;;;;;11145:33:32::1;::::0;;11219:17:::1;:24:::0;11176:1:::1;::::0;11206:38:::1;::::0;::::1;::::0;::::1;::::0;11176:1;;11206:6:::1;:38::i;:::-;11188:57;;11260:3;:8;;11267:1;11260:8:::0;11256:66:::1;;11291:20;;-1:-1:-1::0;;;11291:20:32::1;;;;;;;;;;;11256:66;11337:9;11332:904;11356:17;:24:::0;11352:28;::::1;11332:904;;;11401:12;11416:17;11434:1;11416:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;11416:20:32::1;11480:21:::0;;;;;;;;;;;11416:20;11520:15;::::1;::::0;11416:20;;-1:-1:-1;11480:21:32;11520:15:::1;-1:-1:-1::0;;;11520:15:32;;::::1;;::::0;:48:::1;;;11539:4;:17;;:24;;;;;:::i;:::-;:29:::0;;-1:-1:-1;11520:48:32::1;11516:95;;;11588:8;;;;11516:95;11629:20;::::0;-1:-1:-1;;;;;11629:20:32::1;11625:169;;-1:-1:-1::0;11683:20:32::1;:27:::0;;-1:-1:-1;;;;;;11683:27:32::1;-1:-1:-1::0;;;;;11683:27:32;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;11728:21:32::1;:25:::0;11771:8:::1;;11625:169;11836:3;11812:27;;:21;;:27;11808:119;;;11859:27;11876:4;11882:3;11859:16;:27::i;:::-;11904:8;;;;11808:119;11990:20;::::0;-1:-1:-1;;;;;11990:20:32;;::::1;11941:30;11974:37:::0;;;::::1;::::0;;;;;;;;12058:35;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;11990:20;12058:35;::::1;::::0;-1:-1:-1;;;;;12058:35:32;::::1;::::0;;::::1;::::0;-1:-1:-1;;;12058:35:32;::::1;-1:-1:-1::0;;;;;12058:35:32::1;::::0;;;;;;;-1:-1:-1;;;12058:35:32;;::::1;;;;;::::0;;;;::::1;::::0;::::1;::::0;;11974:37;;12047:104:::1;::::0;12058:35;;;::::1;::::0;;;;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;12058:35:32;;;;-1:-1:-1;;;12058:35:32;;12095:55:::1;::::0;;;;::::1;::::0;;12112:20:::1;::::0;-1:-1:-1;;;;;12112:20:32::1;12095:55:::0;;;;::::1;::::0;::::1;::::0;;;;;;12112:20;12095:55;::::1;::::0;-1:-1:-1;;;;;12095:55:32;::::1;;::::0;;::::1;::::0;;;;-1:-1:-1;;;12095:55:32;::::1;-1:-1:-1::0;;;;;12095:55:32::1;::::0;;;;;;;-1:-1:-1;;;12095:55:32;::::1;;;;;::::0;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;::::0;12047:10:::1;:104::i;:::-;12026:200;;;12184:27;12201:4;12207:3;12184:16;:27::i;:::-;11387:849;;;11332:904;11382:3;;11332:904;;;;12250:21;;12275:1;12250:26:::0;12246:84:::1;;12299:20;;-1:-1:-1::0;;;12299:20:32::1;;;;;;;;;;;12246:84;12435:20;::::0;12512:21:::1;::::0;-1:-1:-1;;;;;12435:20:32;;::::1;::::0;12420:12:::1;::::0;-1:-1:-1;;;;;12498:36:32;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12498:36:32::1;-1:-1:-1::0;12465:69:32;-1:-1:-1;12550:9:32::1;12545:146;12569:21;;12565:1;:25;12545:146;;;12630:4;12611:13;12625:1;12611:16;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12611:23:32;;::::1;:16;::::0;;::::1;::::0;;;;;;:23;;;;12655:25;;::::1;;::::0;;;:19:::1;:25:::0;;;;;;;;;;::::1;::::0;;12592:3:::1;12545:146;;;;12700:26;12712:13;12700:11;:26::i;:::-;12811:7;:14:::0;;::::1;::::0;::::1;::::0;;12778:30:::1;12811:14:::0;;;;::::1;::::0;12835:23:::1;::::0;12842:16:::1;::::0;12835:23:::1;:::i;:::-;12901:14;;-1:-1:-1::0;;;;;12887:29:32::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12887:29:32::1;-1:-1:-1::0;12868:48:32;;::::1;::::0;:16:::1;::::0;:48:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12932:9:32::1;12927:267;12951:14;;12947:1;:18;12927:267;;;12986:12;13001:13;13019:21;;13015:1;:25;;;;:::i;:::-;13001:40;;;;;;;;:::i;:::-;;;;;;;12986:55;;13077:4;13055:16;13072:1;13055:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:26:::0;;-1:-1:-1;;;;;13055:26:32;;::::1;-1:-1:-1::0;;;;;;13055:26:32;;::::1;;::::0;;;13106:76:::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;13147:21;;;;;;;:33;13106:76;;::::1;::::0;;;13095:88;;13055:26;13095:88;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;12967:3:::1;12927:267;;13871:115:::0;-1:-1:-1;;;;;13960:19:32;13937:4;13960:19;;;:13;:19;;;;;;;;;13871:115::o;5894:293::-;2334:13:19;:11;:13::i;:::-;6007:34:32;;::::1;5999:68;;;::::0;-1:-1:-1;;;5999:68:32;;18165:2:35;5999:68:32::1;::::0;::::1;18147:21:35::0;18204:2;18184:18;;;18177:30;-1:-1:-1;;;18223:18:35;;;18216:51;18284:18;;5999:68:32::1;;;;;;;;;6083:9;6078:103;6098:17:::0;;::::1;6078:103;;;6136:34;6145:6;;6152:1;6145:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6156:10;;6167:1;6156:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6136:8;:34::i;:::-;6117:3;;6078:103;;;;5894:293:::0;;;;:::o;15203:847::-;15283:19;2334:13:19;:11;:13::i;:::-;15314:26:32::1;15360:30;15367:5;15374:1;15377:12;;15360:6;:30::i;:::-;-1:-1:-1::0;;;;;15343:48:32::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;15343:48:32::1;;;;;;;;;;;;;;;-1:-1:-1::0;15417:11:32::1;::::0;15314:77;;-1:-1:-1;;;;;;15417:11:32;;::::1;::::0;15443:18;::::1;::::0;15439:74:::1;;-1:-1:-1::0;;;;;;15484:13:32;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:18:::1;;::::0;::::1;15439:74;15523:9;15546:211;-1:-1:-1::0;;;;;15553:18:32;::::1;::::0;;::::1;::::0;:31:::1;;;15579:5;15575:1;:9;15553:31;15546:211;;;-1:-1:-1::0;;;;;15621:13:32;;::::1;15600:18;15621:13:::0;;;:7:::1;:13;::::0;;;;;;;;15662:53;;;;::::1;::::0;;;;;;15698:15;;;;::::1;15662:53:::0;;::::1;::::0;;;;15621:13;15648:6;15655:3;::::1;::::0;::::1;:::i;:::-;;;15648:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:67;15736:10:::1;;::::0;-1:-1:-1;;;;;15736:10:32::1;::::0;-1:-1:-1;15546:211:32::1;;;15788:1;15771:6;:13;:18:::0;15767:62:::1;;15812:6;15805:13;;;;;;;15767:62;15887:25;15932:1;-1:-1:-1::0;;;;;15915:19:32::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;15915:19:32::1;;;;;;;;;;;;;;;-1:-1:-1::0;15887:47:32;-1:-1:-1;15949:9:32::1;15944:77;15968:1;15964;:5;15944:77;;;16001:6;16008:1;16001:9;;;;;;;;:::i;:::-;;;;;;;15990:5;15996:1;15990:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:20;15971:3:::1;;15944:77;;;-1:-1:-1::0;16038:5:32;15203:847;-1:-1:-1;;;;;;15203:847:32:o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;7992:51:35::0;7965:18;;3534:31:19::1;7846:203:35::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;14686:412:32:-;14811:11;:18;14737;;14767:25;;-1:-1:-1;;;;;14795:35:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;14767:63:32;-1:-1:-1;14845:9:32;14840:228;14864:11;:18;14860:22;;14840:228;;;14903:12;14918:11;14930:1;14918:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14918:14:32;14975:21;;;;;;;;;;;15022:35;;;;;;;;;;;;;;;;;;;;;14918:14;15022:35;;;-1:-1:-1;;;;;15022:35:32;;;;;;-1:-1:-1;;;15022:35:32;;-1:-1:-1;;;;;15022:35:32;;;;;;;;-1:-1:-1;;;15022:35:32;;;;;;;;;;;;;;;;14918:14;;-1:-1:-1;14975:21:32;;15022:35;;;;;;;14975:21;;15022:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15010:6;15017:1;15010:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;14884:3:32;;14840:228;;2658:162:19;966:10:22;2717:7:19;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;966:10:22;2763:40:19;;;7992:51:35;7965:18;;2763:40:19;7846:203:35;22963:658:32;-1:-1:-1;;;;;23039:13:32;;;23018:18;23039:13;;;:7;:13;;;;;23066:15;;23039:13;;23066:15;23062:218;;23263:7;22963:658;:::o;23062:218::-;23313:13;;;;-1:-1:-1;;;;;23356:12:32;;;23341:27;;23337:239;;;23432:27;23447:12;-1:-1:-1;;;;;23432:12:32;;;:27;:::i;:::-;23400:15;;-1:-1:-1;;;;;23400:15:32;23384;:32;;;;;;;;;;:75;;:32;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;23337:239:32;;-1:-1:-1;23337:239:32;;23538:27;-1:-1:-1;;;;;23553:12:32;;;23538;:27;:::i;:::-;23506:15;;-1:-1:-1;;;;;23506:15:32;23490;:32;;;;;;;;;;:75;;:32;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;;23337:239:32;-1:-1:-1;;;;;;23602:12:32;;;;23586:13;;;;:28;22963:658::o;21910:1047::-;21995:10;21947:7;21987:19;;;:7;:19;;;;;22020:15;;-1:-1:-1;;;;;22020:15:32;22016:80;;22072:13;;-1:-1:-1;;;22072:13:32;;;;;;;;;;;22016:80;22125:11;;22110;;-1:-1:-1;;;;;22125:11:32;;;22110;;:26;22106:528;;22152:11;:24;;-1:-1:-1;;;;;;22152:24:32;;;;;;22190:11;:24;;;;;;;22106:528;;;22235:11;;22250:10;-1:-1:-1;;;;;22235:11:32;;;:25;22231:403;;22284:10;;;;;-1:-1:-1;;;;;22284:10:32;;;22311:1;22276:19;;;:7;:19;;;;;:24;;:37;;-1:-1:-1;;;;;;22276:37:32;;;;;;22341:10;;22327:11;:24;;;;;22341:10;;22327:24;;;22231:403;;;22372:11;;22387:10;-1:-1:-1;;;;;22372:11:32;;;:25;22368:266;;22421:11;;-1:-1:-1;;;;;22421:11:32;;;22449:1;22413:20;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;22413:38:32;;;;;;22487:11;;;;;;22479:20;;;;;;:25;;;22465:39;;22479:25;;22465:39;;;;;;22368:266;;;22562:10;;;;;;22543;;;;;;-1:-1:-1;;;;;22543:10:32;;;22562;22535:19;;;:7;:19;;;;;;:24;;;:37;;22562:10;;;-1:-1:-1;;;;;;22535:37:32;;;;;;22613:10;;22594;;;;22586:19;;;;;:24;:37;;22613:10;;;;22586:37;;;;;22368:266;22668:15;;-1:-1:-1;;;;;22668:15:32;22644:21;22732:32;;;;;;;;;;22668:15;22804:13;;;22775:42;;22732:32;;22804:13;;22732:32;;22644:21;22775:42;;22804:13;;22775:42;:::i;:::-;;;;-1:-1:-1;;22856:1:32;22827:25;;;:30;;:25;;:30;;22856:1;;-1:-1:-1;;;22827:30:32;;-1:-1:-1;;;;;22827:30:32;;:::i;:::-;;;-1:-1:-1;;;;;22827:30:32;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22883:10:32;-1:-1:-1;22875:19:32;;;:7;:19;;;;;22868:26;;-1:-1:-1;;;;;;22868:26:32;;;;;-1:-1:-1;22868:26:32;;;;;;;;;;;;;;;;;;;;;;;;;22905:12;:14;;;;;;:::i;:::-;;;;-1:-1:-1;22937:13:32;;21910:1047;-1:-1:-1;;;;21910:1047:32:o;4578:312:21:-;4658:4;-1:-1:-1;;;;;4667:6:21;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:26;-1:-1:-1;;;;;1519:53:26;;1441:138;4728:32:21;-1:-1:-1;;;;;4728:42:21;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:21;;;;;;;;;;;4564:84:32;2334:13:19;:11;:13::i;6032:538:21:-;6149:17;-1:-1:-1;;;;;6131:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:21;;;;;;;;-1:-1:-1;;6131:52:21;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:21;;-1:-1:-1;;;;;8010:32:35;;6493:60:21;;;7992:51:35;7965:18;;6493:60:21;7846:203:35;6127:437:21;-1:-1:-1;;;;;;;;;;;6225:40:21;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:21;;;;;160:25:35;;;133:18;;6292:34:21;14:177:35;6221:120:21;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:21;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:21;;;;;;;;;;;9071:205:20;9129:30;;3147:66;9186:27;8819:122;1847:127:19;6929:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;23627:348:32:-:0;23715:24;23752:12;;23742:23;;;;;;;:::i;:::-;;;;;;;;;;;23779:32;;;;:14;:32;;;;;;;23742:23;;-1:-1:-1;23779:32:32;;23775:95;;;23834:25;;-1:-1:-1;;;23834:25:32;;;;;;;;;;;23775:95;23880:38;23905:12;;23880:24;:38::i;:::-;23929:32;;;;:14;:32;;;;;:39;;-1:-1:-1;;23929:39:32;23964:4;23929:39;;;-1:-1:-1;;23627:348:32:o;21281:211::-;-1:-1:-1;;;;;21398:21:32;;21353:4;21398:21;;;;;;;;;;21437:15;;;;-1:-1:-1;;;21437:15:32;;;;21436:16;:49;;;;;21456:4;:17;;:24;;;;;:::i;:::-;:29;;;-1:-1:-1;21436:49:32;21429:56;21281:211;-1:-1:-1;;;21281:211:32:o;21498:406::-;-1:-1:-1;;;;;21595:27:32;;21563:4;21595:27;;;:21;:27;;;;;;21680:17;:24;21671:33;;21667:76;;-1:-1:-1;21727:5:32;;21498:406;-1:-1:-1;;21498:406:32:o;21667:76::-;21893:4;-1:-1:-1;;;;;21865:32:32;:17;21883:5;21865:24;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21865:24:32;:32;;21498:406;-1:-1:-1;;;21498:406:32:o;20399:165::-;20461:17;:28;;;;;;;;-1:-1:-1;20461:28:32;;;;;;;;;-1:-1:-1;;;;;;20461:28:32;-1:-1:-1;;;;;20461:28:32;;;;;20529:24;;:28;;20461;20529;:::i;:::-;-1:-1:-1;;;;;20499:27:32;;;;;;;:21;:27;;;;;:58;20399:165::o;3774:248:19:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;20570:705:32:-;20640:24;20659:4;20640:18;:24::i;:::-;20635:62;;20570:705;:::o;20635:62::-;-1:-1:-1;;;;;20723:27:32;;20707:13;20723:27;;;:21;:27;;;;;;20780:17;:24;20723:27;;20707:13;20780:28;;20807:1;;20780:28;:::i;:::-;20760:48;;20960:9;20951:5;:18;20947:213;;20985:21;21009:17;21027:9;21009:28;;;;;;;;:::i;:::-;;;;;;;;;;;21051:17;:24;;-1:-1:-1;;;;;21009:28:32;;;;-1:-1:-1;21009:28:32;;21069:5;;21051:24;;;;;;:::i;:::-;;;;;;;;;;;;;:40;;-1:-1:-1;;;;;;21051:40:32;-1:-1:-1;;;;;21051:40:32;;;;;;21105:36;;;;;;:21;:36;;;;;;:44;;;20947:213;21201:17;:23;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;21201:23:32;;;;;-1:-1:-1;;;;;;21201:23:32;;;;;;;;;-1:-1:-1;;;;;21241:27:32;;;;;;:21;:27;;;-1:-1:-1;;21241:27:32;;;21234:34;20570:705::o;16721:1060::-;16772:17;:24;16760:9;16810:6;;;16806:43;;16832:7;16721:1060::o;16806:43::-;16864:9;16876:5;16880:1;16876;:5;:::i;:::-;16864:17;;16859:916;16883:5;;16859:916;;16971:9;17043:5;:1;17047;17043:5;:::i;:::-;17001:36;;;17018:15;17001:36;;;19131:19:35;19166:12;;;19159:28;;;19203:12;;17001:36:32;;;;;;;;;;;;16991:47;;;;;;16983:56;;:66;;;;:::i;:::-;16971:78;;17073:1;17068;:6;17064:96;;17094:8;;;17064:96;17485:13;17501:17;17519:1;17501:20;;;;;;;;:::i;:::-;;;;;;;;;;17551:17;:20;;-1:-1:-1;;;;;17501:20:32;;;;-1:-1:-1;17551:17:32;17569:1;;17551:20;;;;;;:::i;:::-;;;;;;;;;;;17609:17;:20;;-1:-1:-1;;;;;17551:20:32;;;;-1:-1:-1;17609:17:32;17627:1;;17609:20;;;;;;:::i;:::-;;;;;;;;;;;17586:17;:20;;-1:-1:-1;;;;;17609:20:32;;;;17604:1;;17586:20;;;;;;:::i;:::-;;;;;;;;;:43;;;;;-1:-1:-1;;;;;17586:43:32;;;;;-1:-1:-1;;;;;17586:43:32;;;;;;17666:5;17643:17;17661:1;17643:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;17643:28:32;-1:-1:-1;;;;;17643:28:32;;;;;;17686;;;;;:21;:28;;;;;;;:32;;;;17732:28;;;;:32;;;16859:916;16890:3;;;;:::i;:::-;;;;16859:916;;18302:312;18370:20;;-1:-1:-1;;;;;18370:20:32;18401:172;-1:-1:-1;;;;;18408:18:32;;;18401:172;;-1:-1:-1;;;;;18485:28:32;;;18442:15;18485:28;;;:19;:28;;;;;;;-1:-1:-1;;;;;;18527:35:32;;;;;18485:28;18401:172;;;-1:-1:-1;18606:1:32;18582:21;:25;18302:312::o;24518:337::-;24598:7;24627:3;24621;:9;24617:69;;;24653:22;;-1:-1:-1;;;24653:22:32;;;;;19400:25:35;;;19441:18;;;19434:34;;;19373:18;;24653:22:32;19226:248:35;24617:69:32;24708:3;24700:5;:11;24696:153;;;-1:-1:-1;24734:3:32;24727:10;;24696:153;24766:3;24758:5;:11;24754:95;;;-1:-1:-1;24792:3:32;24785:10;;24754:95;-1:-1:-1;24833:5:32;;24518:337;-1:-1:-1;;24518:337:32:o;18620:1378::-;-1:-1:-1;;;;;18718:21:32;;18690:25;18718:21;;;;;;;;;;;18690:49;;;;;;;;;;;;;;;-1:-1:-1;;;;;18690:49:32;;;;;;;;;-1:-1:-1;;;18690:49:32;;-1:-1:-1;;;;;18690:49:32;;;;;;;;-1:-1:-1;;;18690:49:32;;;;;;;;;;;;;;;;;;18718:21;18690:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18690:49:32;;;;-1:-1:-1;;18795:84:32;;;;;;;;18812:20;;-1:-1:-1;;;;;18812:20:32;18795:84;;;-1:-1:-1;18840:37:32;;;18795:84;18840:37;;;;;;;18795:84;;;;;;;;;;;18812:20;18795:84;;;-1:-1:-1;;;;;18795:84:32;;;;;;-1:-1:-1;;;18795:84:32;;-1:-1:-1;;;;;18795:84:32;;;;;;;;-1:-1:-1;;;18795:84:32;;;;;;;;;;;;;;;;18690:49;;-1:-1:-1;18767:179:32;;18795:84;;-1:-1:-1;18795:84:32;;;;;18840:37;;18795:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18897:35;;;;;;;;18914:4;-1:-1:-1;;;;;18897:35:32;;;;;18926:4;18897:35;;;18767:10;:179::i;:::-;18750:978;;;18971:17;18983:4;18971:11;:17::i;:::-;18750:978;;;19057:20;;-1:-1:-1;;;;;19057:20:32;;;19019:15;19037:41;;;:19;:41;;;;;;;;;;19146:572;-1:-1:-1;;;;;19181:21:32;;19177:123;;19226:28;19239:8;19249:4;19226:12;:28::i;:::-;19276:5;;19177:123;19379:58;;;;;;;;-1:-1:-1;;;;;19379:58:32;;;;;-1:-1:-1;19411:24:32;;;19379:58;19411:24;;;;;;;19379:58;;;;;;;;;;;;;;;-1:-1:-1;;;;;19379:58:32;;;;;;-1:-1:-1;;;19379:58:32;;-1:-1:-1;;;;;19379:58:32;;;;;;;;-1:-1:-1;;;19379:58:32;;;;;;;;;;;;;;;;19343:153;;19379:58;;;;;19411:24;19379:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19439:35;;;;;;;;19456:4;-1:-1:-1;;;;;19439:35:32;;;;;19468:4;19439:35;;;19343:10;:153::i;:::-;19318:293;;;19537:28;19550:8;19560:4;19537:12;:28::i;19318:293::-;-1:-1:-1;;;;;;19675:28:32;;;;;;;:19;:28;;;;;;;;19146:572;;;19005:723;;18750:978;19766:3;19742:27;;:21;;:27;19738:254;;;19820:20;;;-1:-1:-1;;;;;19820:20:32;;;19785:12;19800:41;;;:19;:41;;;;;;;-1:-1:-1;;;;;;19855:48:32;;;;;;19917:27;;19800:41;;19917:27;;;;;;;19958:21;:23;;19800:41;;19958:23;;;:::i;:::-;;;;;;19771:221;18680:1318;18620:1378;;:::o;24185:327::-;24337:15;;;;;:27;24306:15;;;;:27;24286:4;;24306:58;;24302:129;;-1:-1:-1;24405:15:32;;24387;;-1:-1:-1;;;;;24387:33:32;;;;;;24380:40;;24302:129;-1:-1:-1;24478:15:32;;;;;:27;24448:15;;;:27;:57;;24185:327::o;17787:509::-;17868:12;;17856:9;17894:6;;;17890:43;;17916:7;17787:509;:::o;17890:43::-;17948:9;17960:5;17964:1;17960;:5;:::i;:::-;17948:17;;17943:347;17967:5;;17943:347;;18055:9;18127:5;:1;18131;18127:5;:::i;:::-;18085:36;;;18102:15;18085:36;;;19131:19:35;19166:12;;;19159:28;;;19203:12;;18085:36:32;;;;;;;;;;;;18075:47;;;;;;18067:56;;:66;;;;:::i;:::-;18055:78;;18194:12;18209:5;18215:1;18209:8;;;;;;;;:::i;:::-;;;;;;;18194:23;;18242:5;18248:1;18242:8;;;;;;;;:::i;:::-;;;;;;;18231:5;18237:1;18231:8;;;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;18231:19:32;;;-1:-1:-1;;;;;18231:19:32;;;;;18275:4;18264:5;18270:1;18264:8;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;18264:15:32;;;-1:-1:-1;;;;;18264:15:32;;;;;17979:311;;17974:3;;;;;:::i;:::-;;;;17943:347;;6193:1010;6268:7;:14;:18;6264:76;;6309:20;;-1:-1:-1;;;6309:20:32;;;;;;;;;;;6264:76;6355:32;6377:9;6355:21;:32::i;:::-;6350:95;;6410:24;;-1:-1:-1;;;6410:24:32;;;;;;;;;;;6350:95;-1:-1:-1;;;;;6480:14:32;;;6455:22;6480:14;;;:7;:14;;;;;6508:19;;6480:14;;6508:19;:33;6504:85;;6564:14;;-1:-1:-1;;;6564:14:32;;;;;;;;;;;6504:85;6616:88;;;;;;;;-1:-1:-1;;;;;6616:88:32;;;;;6653:13;;;;;6616:88;;;;;;;-1:-1:-1;6616:88:32;;;;;;;;;;;;6599:14;;;:7;:14;;;;;;;:105;;;;;;;-1:-1:-1;;;;;;6599:105:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:11;;;6715:252;;6760:11;:19;;-1:-1:-1;;;;;6760:19:32;;-1:-1:-1;;;;;;6760:19:32;;;;;;;;6793:11;:19;;;;;;;;;;6715:252;;;6851:11;;;-1:-1:-1;;;;;6851:11:32;;;6843:20;;;;:7;:20;;;;;;:25;;:33;;;;;-1:-1:-1;;;;;;6843:33:32;;;;;;;;6912:11;;6890:14;;;;;;;:19;;:33;;;;6912:11;;;;6890:33;;;;;;;6937:19;;;;;;6715:252;6976:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7039:26:32;;;7001:35;7039:26;;;;;;;;;;7075:42;;7039:26;;7104:13;;;;7039:26;;7075:42;;7104:13;;7075:42;:::i;:::-;;;;-1:-1:-1;;7156:1:32;7127:25;;;:30;;:25;;:30;;7156:1;;-1:-1:-1;;;7127:30:32;;-1:-1:-1;;;;;7127:30:32;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7127:30:32;;;;;-1:-1:-1;;;;;7127:30:32;;;;;;7173:23;7179:5;7186:9;7173:23;;;;;;-1:-1:-1;;;;;12175:32:35;;;12157:51;;12244:32;;12239:2;12224:18;;12217:60;12145:2;12130:18;;11983:300;7173:23:32;;;;;;;;6254:949;;6193:1010;;:::o;2264:344:26:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:26;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7082:141:20:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:20;;;;;;;;;;;1980:235:19;6929:20:20;:18;:20::i;24012:167:32:-;24120:2;24100:22;;24096:77;;24145:17;;-1:-1:-1;;;24145:17:32;;;;;;;;;;;20004:179;20086:20;;;-1:-1:-1;;;;;20058:25:32;;;20086:20;20058:25;;;:19;:25;;;;;:48;;20086:20;;;;-1:-1:-1;;;;;;20058:48:32;;;;;;;20116:27;;;;;;;;;20153:21;:23;;;;;;:::i;:::-;;;;;;20004:179;:::o;20189:204::-;-1:-1:-1;;;;;20286:25:32;;;;;;;:19;:25;;;;;;;;20258;;;;;;;;;:53;;20286:25;;;;-1:-1:-1;;;;;;20258:53:32;;;;;;;20321:25;;;:32;;;;;;;;;;20363:21;:23;;;;;;:::i;:::-;;;;;;20189:204;;:::o;1671:281:26:-;1748:17;-1:-1:-1;;;;;1748:29:26;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:26;;-1:-1:-1;;;;;8010:32:35;;1805:47:26;;;7992:51:35;7965:18;;1805:47:26;7846:203:35;1744:119:26;-1:-1:-1;;;;;;;;;;;1872:73:26;;-1:-1:-1;;;;;;1872:73:26;-1:-1:-1;;;;;1872:73:26;;;;;;;;;;1671:281::o;3916:253:29:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:29;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:29:o;6113:122:26:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:26;;;;;;;;;;;8485:120:20;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:20;;;;;;-1:-1:-1;8485:120:20:o;4437:582:29:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:29;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:29;;-1:-1:-1;;;;;8010:32:35;;4933:24:29;;;7992:51:35;7965:18;;4933:24:29;7846:203:35;4853:119:29;-1:-1:-1;4992:10:29;4985:17;;5559:434;5690:17;;:21;5686:301;;5894:10;5888:17;5881:4;5869:10;5865:21;5858:48;5686:301;5957:19;;-1:-1:-1;;;5957:19:29;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:173:35;264:20;;-1:-1:-1;;;;;313:31:35;;303:42;;293:70;;359:1;356;349:12;293:70;196:173;;;:::o;374:186::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:29;544:9;525:29;:::i;565:250::-;650:1;660:113;674:6;671:1;668:13;660:113;;;750:11;;;744:18;731:11;;;724:39;696:2;689:10;660:113;;;-1:-1:-1;;807:1:35;789:16;;782:27;565:250::o;820:270::-;861:3;899:5;893:12;926:6;921:3;914:19;942:76;1011:6;1004:4;999:3;995:14;988:4;981:5;977:16;942:76;:::i;:::-;1072:2;1051:15;-1:-1:-1;;1047:29:35;1038:39;;;;1079:4;1034:50;;820:270;-1:-1:-1;;820:270:35:o;1095:693::-;1212:1;1208;1203:3;1199:11;1195:19;1187:5;1181:12;1177:38;1172:3;1165:51;1147:3;1262:4;1255:5;1251:16;1245:23;1300:4;1293;1288:3;1284:14;1277:28;1343:12;1337:19;1330:4;1325:3;1321:14;1314:43;-1:-1:-1;;;;;1415:4:35;1401:12;1397:23;1391:30;1387:71;1382:2;1377:3;1373:12;1366:93;-1:-1:-1;;;;;1518:4:35;1504:12;1500:23;1494:30;1490:55;1484:3;1479;1475:13;1468:78;1616:2;1602:12;1598:21;1592:28;1585:36;1578:44;1571:4;1566:3;1562:14;1555:68;1678:3;1664:12;1660:22;1654:29;1632:51;;1714:4;1708:3;1703;1699:13;1692:27;1735:47;1777:3;1772;1768:13;1752:14;1735:47;:::i;:::-;1728:54;1095:693;-1:-1:-1;;;;1095:693:35:o;1793:266::-;1978:2;1967:9;1960:21;1941:4;1998:55;2049:2;2038:9;2034:18;2026:6;1998:55;:::i;2064:367::-;2127:8;2137:6;2191:3;2184:4;2176:6;2172:17;2168:27;2158:55;;2209:1;2206;2199:12;2158:55;-1:-1:-1;2232:20:35;;-1:-1:-1;;;;;2264:30:35;;2261:50;;;2307:1;2304;2297:12;2261:50;2344:4;2336:6;2332:17;2320:29;;2404:3;2397:4;2387:6;2384:1;2380:14;2372:6;2368:27;2364:38;2361:47;2358:67;;;2421:1;2418;2411:12;2358:67;2064:367;;;;;:::o;2436:437::-;2522:6;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;-1:-1:-1;;;;;2664:6:35;2661:30;2658:50;;;2704:1;2701;2694:12;2658:50;2743:70;2805:7;2796:6;2785:9;2781:22;2743:70;:::i;:::-;2832:8;;2717:96;;-1:-1:-1;2436:437:35;-1:-1:-1;;;;2436:437:35:o;2878:301::-;2937:6;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;3045:9;3032:23;-1:-1:-1;;;;;3088:5:35;3084:46;3077:5;3074:57;3064:85;;3145:1;3142;3135:12;3184:346;3252:6;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;-1:-1:-1;;3374:23:35;;;3494:2;3479:18;;;3466:32;;-1:-1:-1;3184:346:35:o;3535:1554::-;3725:4;3773:2;3762:9;3758:18;3803:2;3792:9;3785:21;3826:6;3861;3855:13;3892:6;3884;3877:22;3930:2;3919:9;3915:18;3908:25;;3992:2;3982:6;3979:1;3975:14;3964:9;3960:30;3956:39;3942:53;;4030:2;4022:6;4018:15;4051:1;4061:999;4075:6;4072:1;4069:13;4061:999;;;4140:22;;;-1:-1:-1;;4136:36:35;4124:49;;4196:13;;4279:9;;4264:25;;4336:2;4328:11;;;4322:18;4248:2;4360:15;;;4353:27;;;4441:19;;4236:15;;;4473:24;;;4563:21;;;-1:-1:-1;;4531:2:35;4519:15;;;4622:330;4638:8;4633:3;4630:17;4622:330;;;4711:15;;4761:9;;-1:-1:-1;;;;;4757:35:35;4743:50;;4847:2;4839:11;;;4833:18;4817:14;;;4810:42;4921:17;;;;4789:1;4657:11;;;;;4889:2;4878:14;;;;4622:330;;;-1:-1:-1;4975:5:35;-1:-1:-1;;;5015:2:35;5038:12;;;;5003:15;;;;;4097:1;4090:9;4061:999;;;-1:-1:-1;5077:6:35;;3535:1554;-1:-1:-1;;;;;;3535:1554:35:o;5094:127::-;5155:10;5150:3;5146:20;5143:1;5136:31;5186:4;5183:1;5176:15;5210:4;5207:1;5200:15;5226:1018;5303:6;5311;5364:2;5352:9;5343:7;5339:23;5335:32;5332:52;;;5380:1;5377;5370:12;5332:52;5403:29;5422:9;5403:29;:::i;:::-;5393:39;;5483:2;5472:9;5468:18;5455:32;-1:-1:-1;;;;;5502:6:35;5499:30;5496:50;;;5542:1;5539;5532:12;5496:50;5565:22;;5618:4;5610:13;;5606:27;-1:-1:-1;5596:55:35;;5647:1;5644;5637:12;5596:55;5687:2;5674:16;-1:-1:-1;;;;;5705:6:35;5702:30;5699:56;;;5735:18;;:::i;:::-;5784:2;5778:9;5876:2;5838:17;;-1:-1:-1;;5834:31:35;;;5867:2;5830:40;5826:54;5814:67;;-1:-1:-1;;;;;5896:34:35;;5932:22;;;5893:62;5890:88;;;5958:18;;:::i;:::-;5994:2;5987:22;6018;;;6059:15;;;6076:2;6055:24;6052:37;-1:-1:-1;6049:57:35;;;6102:1;6099;6092:12;6049:57;6158:6;6153:2;6149;6145:11;6140:2;6132:6;6128:15;6115:50;6211:1;6206:2;6197:6;6189;6185:19;6181:28;6174:39;6232:6;6222:16;;;;;5226:1018;;;;;:::o;6431:347::-;6482:8;6492:6;6546:3;6539:4;6531:6;6527:17;6523:27;6513:55;;6564:1;6561;6554:12;6513:55;-1:-1:-1;6587:20:35;;-1:-1:-1;;;;;6619:30:35;;6616:50;;;6662:1;6659;6652:12;6616:50;6699:4;6691:6;6687:17;6675:29;;6751:3;6744:4;6735:6;6727;6723:19;6719:30;6716:39;6713:59;;;6768:1;6765;6758:12;6783:409;6853:6;6861;6914:2;6902:9;6893:7;6889:23;6885:32;6882:52;;;6930:1;6927;6920:12;6882:52;6970:9;6957:23;-1:-1:-1;;;;;6995:6:35;6992:30;6989:50;;;7035:1;7032;7025:12;6989:50;7074:58;7124:7;7115:6;7104:9;7100:22;7074:58;:::i;7197:644::-;7282:6;7290;7298;7306;7359:2;7347:9;7338:7;7334:23;7330:32;7327:52;;;7375:1;7372;7365:12;7327:52;7398:29;7417:9;7398:29;:::i;:::-;7388:39;;7478:2;7467:9;7463:18;7450:32;-1:-1:-1;;;;;7497:6:35;7494:30;7491:50;;;7537:1;7534;7527:12;7491:50;7576:58;7626:7;7617:6;7606:9;7602:22;7576:58;:::i;:::-;7653:8;;-1:-1:-1;7550:84:35;-1:-1:-1;;7738:2:35;7723:18;;7710:32;7778:13;;7771:21;7761:32;;7751:60;;7807:1;7804;7797:12;7751:60;7197:644;;;;-1:-1:-1;7197:644:35;;-1:-1:-1;;7197:644:35:o;8054:828::-;8252:4;8300:2;8289:9;8285:18;8330:2;8319:9;8312:21;8353:6;8388;8382:13;8419:6;8411;8404:22;8457:2;8446:9;8442:18;8435:25;;8519:2;8509:6;8506:1;8502:14;8491:9;8487:30;8483:39;8469:53;;8557:2;8549:6;8545:15;8578:1;8588:265;8602:6;8599:1;8596:13;8588:265;;;8695:2;8691:7;8679:9;8671:6;8667:22;8663:36;8658:3;8651:49;8723:50;8766:6;8757;8751:13;8723:50;:::i;:::-;8713:60;-1:-1:-1;8808:2:35;8831:12;;;;8796:15;;;;;8624:1;8617:9;8588:265;;8887:219;9036:2;9025:9;9018:21;8999:4;9056:44;9096:2;9085:9;9081:18;9073:6;9056:44;:::i;9111:269::-;9168:6;9221:2;9209:9;9200:7;9196:23;9192:32;9189:52;;;9237:1;9234;9227:12;9189:52;9276:9;9263:23;9326:4;9319:5;9315:16;9308:5;9305:27;9295:55;;9346:1;9343;9336:12;9577:768;9699:6;9707;9715;9723;9776:2;9764:9;9755:7;9751:23;9747:32;9744:52;;;9792:1;9789;9782:12;9744:52;9832:9;9819:23;-1:-1:-1;;;;;9857:6:35;9854:30;9851:50;;;9897:1;9894;9887:12;9851:50;9936:70;9998:7;9989:6;9978:9;9974:22;9936:70;:::i;:::-;10025:8;;-1:-1:-1;9910:96:35;-1:-1:-1;;10113:2:35;10098:18;;10085:32;-1:-1:-1;;;;;10129:32:35;;10126:52;;;10174:1;10171;10164:12;10126:52;10213:72;10277:7;10266:8;10255:9;10251:24;10213:72;:::i;:::-;9577:768;;;;-1:-1:-1;10304:8:35;-1:-1:-1;;;;9577:768:35:o;10350:300::-;10418:6;10426;10479:2;10467:9;10458:7;10454:23;10450:32;10447:52;;;10495:1;10492;10485:12;10447:52;10518:29;10537:9;10518:29;:::i;:::-;10508:39;10616:2;10601:18;;;;10588:32;;-1:-1:-1;;;10350:300:35:o;10655:806::-;10903:2;10915:21;;;10985:13;;10888:18;;;11007:22;;;10855:4;;11086:15;;;11060:2;11045:18;;;10855:4;11129:306;11143:6;11140:1;11137:13;11129:306;;;11202:13;;11244:9;;-1:-1:-1;;;;;11240:35:35;;;11228:48;;11328:2;11320:11;;;11314:18;11310:44;11296:12;;;11289:66;11410:15;;;;11384:2;11375:12;;;;11272:1;11158:9;11129:306;;;-1:-1:-1;11452:3:35;;10655:806;-1:-1:-1;;;;;10655:806:35:o;11466:380::-;11545:1;11541:12;;;;11588;;;11609:61;;11663:4;11655:6;11651:17;11641:27;;11609:61;11716:2;11708:6;11705:14;11685:18;11682:38;11679:161;;11762:10;11757:3;11753:20;11750:1;11743:31;11797:4;11794:1;11787:15;11825:4;11822:1;11815:15;11851:127;11912:10;11907:3;11903:20;11900:1;11893:31;11943:4;11940:1;11933:15;11967:4;11964:1;11957:15;12511:127;12572:10;12567:3;12563:20;12560:1;12553:31;12603:4;12600:1;12593:15;12627:4;12624:1;12617:15;12643:125;12708:9;;;12729:10;;;12726:36;;;12742:18;;:::i;12773:128::-;12840:9;;;12861:11;;;12858:37;;;12875:18;;:::i;13245:517::-;13346:2;13341:3;13338:11;13335:421;;;13382:5;13379:1;13372:16;13426:4;13423:1;13413:18;13496:2;13484:10;13480:19;13477:1;13473:27;13467:4;13463:38;13532:4;13520:10;13517:20;13514:47;;;-1:-1:-1;13555:4:35;13514:47;13610:2;13605:3;13601:12;13598:1;13594:20;13588:4;13584:31;13574:41;;13665:81;13683:2;13676:5;13673:13;13665:81;;;13742:1;13728:16;;13709:1;13698:13;13665:81;;13938:1194;-1:-1:-1;;;;;14055:3:35;14052:27;14049:53;;;14082:18;;:::i;:::-;14111:93;14200:3;14160:38;14192:4;14186:11;14160:38;:::i;:::-;14154:4;14111:93;:::i;:::-;14230:1;14255:2;14250:3;14247:11;14272:1;14267:607;;;;14918:1;14935:3;14932:93;;;-1:-1:-1;14991:19:35;;;14978:33;14932:93;-1:-1:-1;;13895:1:35;13891:11;;;13887:24;13883:29;13873:40;13919:1;13915:11;;;13870:57;15038:78;;14240:886;;14267:607;13192:1;13185:14;;;13229:4;13216:18;;-1:-1:-1;;14303:17:35;;;14417:229;14431:7;14428:1;14425:14;14417:229;;;14520:19;;;14507:33;14492:49;;14627:4;14612:20;;;;14580:1;14568:14;;;;14447:12;14417:229;;;14421:3;14674;14665:7;14662:16;14659:159;;;14798:1;14794:6;14788:3;14782;14779:1;14775:11;14771:21;14767:34;14763:39;14750:9;14745:3;14741:19;14728:33;14724:79;14716:6;14709:95;14659:159;;;14861:1;14855:3;14852:1;14848:11;14844:19;14838:4;14831:33;14240:886;;13938:1194;;;:::o;15137:485::-;-1:-1:-1;;;;;15322:32:35;;15304:51;;15391:2;15386;15371:18;;15364:30;;;15410:18;;15403:34;;;15430:6;15479;15474:2;15459:18;;15446:48;15543:1;15514:22;;;15538:2;15510:31;;;15503:42;;;;15606:2;15585:15;;;-1:-1:-1;;15581:29:35;15566:45;15562:54;;15137:485;-1:-1:-1;;15137:485:35:o;15627:1295::-;15751:3;15745:10;-1:-1:-1;;;;;15770:6:35;15767:30;15764:56;;;15800:18;;:::i;:::-;15829:96;15918:6;15878:38;15910:4;15904:11;15878:38;:::i;:::-;15872:4;15829:96;:::i;:::-;15974:4;16005:2;15994:14;;16022:1;16017:648;;;;16709:1;16726:6;16723:89;;;-1:-1:-1;16778:19:35;;;16772:26;16723:89;-1:-1:-1;;13895:1:35;13891:11;;;13887:24;13883:29;13873:40;13919:1;13915:11;;;13870:57;16825:81;;15987:929;;16017:648;13192:1;13185:14;;;13229:4;13216:18;;-1:-1:-1;;16053:20:35;;;16170:222;16184:7;16181:1;16178:14;16170:222;;;16266:19;;;16260:26;16245:42;;16373:4;16358:20;;;;16326:1;16314:14;;;;16200:12;16170:222;;;16174:3;16420:6;16411:7;16408:19;16405:201;;;16481:19;;;16475:26;-1:-1:-1;;16564:1:35;16560:14;;;16576:3;16556:24;16552:37;16548:42;16533:58;16518:74;;16405:201;-1:-1:-1;;;;16652:1:35;16636:14;;;16632:22;16619:36;;-1:-1:-1;15627:1295:35:o;16927:135::-;16966:3;16987:17;;;16984:43;;17007:18;;:::i;:::-;-1:-1:-1;17054:1:35;17043:13;;16927:135::o;17067:191::-;-1:-1:-1;;;;;17135:26:35;;;17163;;;17131:59;;17202:27;;17199:53;;;17232:18;;:::i;17263:271::-;17446:6;17438;17433:3;17420:33;17402:3;17472:16;;17497:13;;;17472:16;17263:271;-1:-1:-1;17263:271:35:o;17749:209::-;17781:1;17807;17797:132;;17851:10;17846:3;17842:20;17839:1;17832:31;17886:4;17883:1;17876:15;17914:4;17911:1;17904:15;17797:132;-1:-1:-1;17943:9:35;;17749:209::o;18313:194::-;-1:-1:-1;;;;;18411:26:35;;;18383;;;18379:59;;18450:28;;18447:54;;;18481:18;;:::i;18512:136::-;18551:3;18579:5;18569:39;;18588:18;;:::i;:::-;-1:-1:-1;;;18624:18:35;;18512:136::o;18653:184::-;18723:6;18776:2;18764:9;18755:7;18751:23;18747:32;18744:52;;;18792:1;18789;18782:12;18744:52;-1:-1:-1;18815:16:35;;18653:184;-1:-1:-1;18653:184:35:o;18842:127::-;18903:10;18898:3;18894:20;18891:1;18884:31;18934:4;18931:1;18924:15;18958:4;18955:1;18948:15;19479:287;19608:3;19646:6;19640:13;19662:66;19721:6;19716:3;19709:4;19701:6;19697:17;19662:66;:::i;:::-;19744:16;;;;;19479:287;-1:-1:-1;;19479:287:35:o",
849
448
  "linkReferences": {},
850
449
  "immutableReferences": {
851
- "40567": [
852
- {
853
- "start": 8808,
854
- "length": 32
855
- },
856
- {
857
- "start": 8849,
858
- "length": 32
859
- },
860
- {
861
- "start": 9168,
862
- "length": 32
863
- }
450
+ "39840": [
451
+ { "start": 9262, "length": 32 },
452
+ { "start": 9303, "length": 32 },
453
+ { "start": 9622, "length": 32 }
864
454
  ]
865
455
  }
866
456
  },
@@ -868,238 +458,112 @@
868
458
  "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
869
459
  "activeValidatorsCount()": "0d2bd909",
870
460
  "addValidator(address,bytes,bool)": "7c8a92c3",
871
- "addVote(address,address)": "3d09c2a8",
872
- "calculateActiveValidators(uint8)": "857861db",
873
- "getActiveValidators()": "9de70258",
461
+ "addVotes(address[],address[])": "e9257dc8",
462
+ "calculateRoundValidators(uint8)": "c5a74449",
463
+ "fee()": "ddca3f43",
874
464
  "getAllValidators()": "f3513a37",
465
+ "getRoundValidators()": "a250eaf1",
875
466
  "getRounds(uint256,uint256)": "40f74f47",
876
467
  "getRoundsCount()": "a09686c4",
877
468
  "getValidator(address)": "1904bb2e",
878
469
  "getVotes(address,uint256)": "eb9019d4",
879
470
  "getVotesCount()": "1b605b86",
880
- "initialize()": "8129fc1c",
471
+ "initialize(uint128)": "56db9ef1",
881
472
  "isValidatorRegistered(address)": "d04a68c7",
882
473
  "owner()": "8da5cb5b",
883
474
  "proxiableUUID()": "52d1902d",
884
475
  "registerValidator(bytes)": "602a9eee",
885
- "registeredValidatorsCount()": "f1bd0b37",
886
476
  "renounceOwnership()": "715018a6",
887
477
  "resignValidator()": "b85f5da2",
888
478
  "resignedValidatorsCount()": "0777cbef",
479
+ "roundValidatorsCount()": "b84d356e",
480
+ "setFee(uint128)": "3687f24a",
889
481
  "transferOwnership(address)": "f2fde38b",
890
482
  "unvote()": "3174b689",
891
483
  "updateValidator(bytes)": "5a8eed73",
892
484
  "updateVoters(address[])": "2bdf6d43",
893
- "upgradeToAndCall(address,bytes)": "4f1ef286",
894
- "version()": "54fd4d50",
895
- "vote(address)": "6dd7d8ea"
896
- },
897
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BellowMinValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyIsInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImportIsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyResigned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteResignedValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteSameValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteValidatorWithoutBlsPublicKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Unvoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"ValidatorResigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"}],\"name\":\"addValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"addVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"calculateActiveValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getRounds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"}],\"internalType\":\"struct ConsensusV1.RoundValidator[]\",\"name\":\"validators\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ConsensusV1.Round[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"internalType\":\"struct ConsensusV1.VoteResult[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isValidatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registeredValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignedValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unvote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"updateValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"}],\"name\":\"updateVoters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/ConsensusV1.sol\":\"ConsensusV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@contracts/=src/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/consensus/ConsensusV1.sol\":{\"keccak256\":\"0xa096c8912b4481be903784c9d369eec66c9d28c8327641db9a579ecab3c993d2\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://1c2add4e8446b0ab5be825caa4a181c4303197d63411e8b915463b2396c40fdf\",\"dweb:/ipfs/QmQdpzN3WJdfqkNf6JZQXFWUr9YZ4D1yjZFMimNoxxmKeZ\"]}},\"version\":1}",
898
- "metadata": {
899
- "compiler": {
900
- "version": "0.8.27+commit.40a35a09"
901
- },
902
- "language": "Solidity",
903
- "output": {
904
- "abi": [
905
- {
906
- "inputs": [
907
- {
908
- "internalType": "address",
909
- "name": "target",
910
- "type": "address"
911
- }
912
- ],
913
- "type": "error",
914
- "name": "AddressEmptyCode"
915
- },
916
- {
917
- "inputs": [],
918
- "type": "error",
919
- "name": "AlreadyVoted"
920
- },
921
- {
922
- "inputs": [],
923
- "type": "error",
924
- "name": "BellowMinValidators"
925
- },
926
- {
927
- "inputs": [],
928
- "type": "error",
929
- "name": "BlsKeyAlreadyRegistered"
930
- },
931
- {
932
- "inputs": [],
933
- "type": "error",
934
- "name": "BlsKeyIsInvalid"
935
- },
485
+ "upgradeToAndCall(address,bytes)": "4f1ef286",
486
+ "validatorsCount()": "ed612f8c",
487
+ "version()": "54fd4d50",
488
+ "vote(address)": "6dd7d8ea"
489
+ },
490
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BellowMinValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyIsInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImportIsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyResigned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteResignedValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteSameValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteValidatorWithoutBlsPublicKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Unvoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"ValidatorResigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"}],\"name\":\"addValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"addVotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"calculateRoundValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getRounds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"}],\"internalType\":\"struct ConsensusV1.RoundValidator[]\",\"name\":\"validators\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ConsensusV1.Round[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"internalType\":\"struct ConsensusV1.VoteResult[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isValidatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignedValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unvote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"updateValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"}],\"name\":\"updateVoters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/ConsensusV1.sol\":\"ConsensusV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@contracts/=src/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x06871a0948d0fed9316ae59ee4368527e144911f5e284755312b5bfcde8b27ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c30e46d061d8a450c561935a1236b1885aa76ffab93a19b26dcb8868c839843\",\"dweb:/ipfs/QmZbWbeDyixTyYkVtJvuiQYfkQz12pS7zxWZF3Ju9PYwGH\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/consensus/ConsensusV1.sol\":{\"keccak256\":\"0x9bfdccbe2090ac30c946637a0f5578e4c1aafdc90d2b7675374d68016de7b3f5\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://89017295b325b8556d6d185bcbdab578055e3ba4a23f4253be65ee17e061704b\",\"dweb:/ipfs/QmZ19h9eVS8hWWiXWgZktEwx6Gsn3ADZa4QAMdKFBkrXSm\"]}},\"version\":1}",
491
+ "metadata": {
492
+ "compiler": { "version": "0.8.27+commit.40a35a09" },
493
+ "language": "Solidity",
494
+ "output": {
495
+ "abi": [
936
496
  {
937
- "inputs": [],
497
+ "inputs": [{ "internalType": "address", "name": "target", "type": "address" }],
938
498
  "type": "error",
939
- "name": "CallerIsNotValidator"
499
+ "name": "AddressEmptyCode"
940
500
  },
501
+ { "inputs": [], "type": "error", "name": "AlreadyVoted" },
502
+ { "inputs": [], "type": "error", "name": "BellowMinValidators" },
503
+ { "inputs": [], "type": "error", "name": "BlsKeyAlreadyRegistered" },
504
+ { "inputs": [], "type": "error", "name": "BlsKeyIsInvalid" },
505
+ { "inputs": [], "type": "error", "name": "CallerIsNotValidator" },
941
506
  {
942
- "inputs": [
943
- {
944
- "internalType": "address",
945
- "name": "implementation",
946
- "type": "address"
947
- }
948
- ],
507
+ "inputs": [{ "internalType": "address", "name": "implementation", "type": "address" }],
949
508
  "type": "error",
950
509
  "name": "ERC1967InvalidImplementation"
951
510
  },
952
- {
953
- "inputs": [],
954
- "type": "error",
955
- "name": "ERC1967NonPayable"
956
- },
957
- {
958
- "inputs": [],
959
- "type": "error",
960
- "name": "FailedCall"
961
- },
962
- {
963
- "inputs": [],
964
- "type": "error",
965
- "name": "ImportIsNotAllowed"
966
- },
967
- {
968
- "inputs": [],
969
- "type": "error",
970
- "name": "InvalidInitialization"
971
- },
972
- {
973
- "inputs": [],
974
- "type": "error",
975
- "name": "InvalidParameters"
976
- },
511
+ { "inputs": [], "type": "error", "name": "ERC1967NonPayable" },
512
+ { "inputs": [], "type": "error", "name": "FailedCall" },
513
+ { "inputs": [], "type": "error", "name": "ImportIsNotAllowed" },
514
+ { "inputs": [], "type": "error", "name": "InvalidFee" },
515
+ { "inputs": [], "type": "error", "name": "InvalidInitialization" },
516
+ { "inputs": [], "type": "error", "name": "InvalidParameters" },
977
517
  {
978
518
  "inputs": [
979
- {
980
- "internalType": "uint256",
981
- "name": "min",
982
- "type": "uint256"
983
- },
984
- {
985
- "internalType": "uint256",
986
- "name": "max",
987
- "type": "uint256"
988
- }
519
+ { "internalType": "uint256", "name": "min", "type": "uint256" },
520
+ { "internalType": "uint256", "name": "max", "type": "uint256" }
989
521
  ],
990
522
  "type": "error",
991
523
  "name": "InvalidRange"
992
524
  },
525
+ { "inputs": [], "type": "error", "name": "MissingVote" },
526
+ { "inputs": [], "type": "error", "name": "NoActiveValidators" },
527
+ { "inputs": [], "type": "error", "name": "NotInitializing" },
993
528
  {
994
- "inputs": [],
995
- "type": "error",
996
- "name": "MissingVote"
997
- },
998
- {
999
- "inputs": [],
1000
- "type": "error",
1001
- "name": "NoActiveValidators"
1002
- },
1003
- {
1004
- "inputs": [],
1005
- "type": "error",
1006
- "name": "NotInitializing"
1007
- },
1008
- {
1009
- "inputs": [
1010
- {
1011
- "internalType": "address",
1012
- "name": "owner",
1013
- "type": "address"
1014
- }
1015
- ],
529
+ "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
1016
530
  "type": "error",
1017
531
  "name": "OwnableInvalidOwner"
1018
532
  },
1019
533
  {
1020
- "inputs": [
1021
- {
1022
- "internalType": "address",
1023
- "name": "account",
1024
- "type": "address"
1025
- }
1026
- ],
534
+ "inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
1027
535
  "type": "error",
1028
536
  "name": "OwnableUnauthorizedAccount"
1029
537
  },
538
+ { "inputs": [], "type": "error", "name": "RefundFailed" },
539
+ { "inputs": [], "type": "error", "name": "UUPSUnauthorizedCallContext" },
1030
540
  {
1031
- "inputs": [],
1032
- "type": "error",
1033
- "name": "UUPSUnauthorizedCallContext"
1034
- },
1035
- {
1036
- "inputs": [
1037
- {
1038
- "internalType": "bytes32",
1039
- "name": "slot",
1040
- "type": "bytes32"
1041
- }
1042
- ],
541
+ "inputs": [{ "internalType": "bytes32", "name": "slot", "type": "bytes32" }],
1043
542
  "type": "error",
1044
543
  "name": "UUPSUnsupportedProxiableUUID"
1045
544
  },
545
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyRegistered" },
546
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyResigned" },
547
+ { "inputs": [], "type": "error", "name": "ValidatorNotRegistered" },
548
+ { "inputs": [], "type": "error", "name": "VoteResignedValidator" },
549
+ { "inputs": [], "type": "error", "name": "VoteSameValidator" },
550
+ { "inputs": [], "type": "error", "name": "VoteValidatorWithoutBlsPublicKey" },
1046
551
  {
1047
- "inputs": [],
1048
- "type": "error",
1049
- "name": "ValidatorAlreadyRegistered"
1050
- },
1051
- {
1052
- "inputs": [],
1053
- "type": "error",
1054
- "name": "ValidatorAlreadyResigned"
1055
- },
1056
- {
1057
- "inputs": [],
1058
- "type": "error",
1059
- "name": "ValidatorNotRegistered"
1060
- },
1061
- {
1062
- "inputs": [],
1063
- "type": "error",
1064
- "name": "VoteResignedValidator"
1065
- },
1066
- {
1067
- "inputs": [],
1068
- "type": "error",
1069
- "name": "VoteSameValidator"
1070
- },
1071
- {
1072
- "inputs": [],
1073
- "type": "error",
1074
- "name": "VoteValidatorWithoutBlsPublicKey"
552
+ "inputs": [{ "internalType": "uint256", "name": "fee", "type": "uint256", "indexed": false }],
553
+ "type": "event",
554
+ "name": "FeeUpdated",
555
+ "anonymous": false
1075
556
  },
1076
557
  {
1077
- "inputs": [
1078
- {
1079
- "internalType": "uint64",
1080
- "name": "version",
1081
- "type": "uint64",
1082
- "indexed": false
1083
- }
1084
- ],
558
+ "inputs": [{ "internalType": "uint64", "name": "version", "type": "uint64", "indexed": false }],
1085
559
  "type": "event",
1086
560
  "name": "Initialized",
1087
561
  "anonymous": false
1088
562
  },
1089
563
  {
1090
564
  "inputs": [
1091
- {
1092
- "internalType": "address",
1093
- "name": "previousOwner",
1094
- "type": "address",
1095
- "indexed": true
1096
- },
1097
- {
1098
- "internalType": "address",
1099
- "name": "newOwner",
1100
- "type": "address",
1101
- "indexed": true
1102
- }
565
+ { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true },
566
+ { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }
1103
567
  ],
1104
568
  "type": "event",
1105
569
  "name": "OwnershipTransferred",
@@ -1107,18 +571,8 @@
1107
571
  },
1108
572
  {
1109
573
  "inputs": [
1110
- {
1111
- "internalType": "address",
1112
- "name": "voter",
1113
- "type": "address",
1114
- "indexed": false
1115
- },
1116
- {
1117
- "internalType": "address",
1118
- "name": "validator",
1119
- "type": "address",
1120
- "indexed": false
1121
- }
574
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
575
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
1122
576
  ],
1123
577
  "type": "event",
1124
578
  "name": "Unvoted",
@@ -1126,12 +580,7 @@
1126
580
  },
1127
581
  {
1128
582
  "inputs": [
1129
- {
1130
- "internalType": "address",
1131
- "name": "implementation",
1132
- "type": "address",
1133
- "indexed": true
1134
- }
583
+ { "internalType": "address", "name": "implementation", "type": "address", "indexed": true }
1135
584
  ],
1136
585
  "type": "event",
1137
586
  "name": "Upgraded",
@@ -1139,50 +588,23 @@
1139
588
  },
1140
589
  {
1141
590
  "inputs": [
1142
- {
1143
- "internalType": "address",
1144
- "name": "addr",
1145
- "type": "address",
1146
- "indexed": false
1147
- },
1148
- {
1149
- "internalType": "bytes",
1150
- "name": "blsPublicKey",
1151
- "type": "bytes",
1152
- "indexed": false
1153
- }
591
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
592
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
1154
593
  ],
1155
594
  "type": "event",
1156
595
  "name": "ValidatorRegistered",
1157
596
  "anonymous": false
1158
597
  },
1159
598
  {
1160
- "inputs": [
1161
- {
1162
- "internalType": "address",
1163
- "name": "addr",
1164
- "type": "address",
1165
- "indexed": false
1166
- }
1167
- ],
599
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address", "indexed": false }],
1168
600
  "type": "event",
1169
601
  "name": "ValidatorResigned",
1170
602
  "anonymous": false
1171
603
  },
1172
604
  {
1173
605
  "inputs": [
1174
- {
1175
- "internalType": "address",
1176
- "name": "addr",
1177
- "type": "address",
1178
- "indexed": false
1179
- },
1180
- {
1181
- "internalType": "bytes",
1182
- "name": "blsPublicKey",
1183
- "type": "bytes",
1184
- "indexed": false
1185
- }
606
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
607
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
1186
608
  ],
1187
609
  "type": "event",
1188
610
  "name": "ValidatorUpdated",
@@ -1190,18 +612,8 @@
1190
612
  },
1191
613
  {
1192
614
  "inputs": [
1193
- {
1194
- "internalType": "address",
1195
- "name": "voter",
1196
- "type": "address",
1197
- "indexed": false
1198
- },
1199
- {
1200
- "internalType": "address",
1201
- "name": "validator",
1202
- "type": "address",
1203
- "indexed": false
1204
- }
615
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
616
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
1205
617
  ],
1206
618
  "type": "event",
1207
619
  "name": "Voted",
@@ -1212,44 +624,20 @@
1212
624
  "stateMutability": "view",
1213
625
  "type": "function",
1214
626
  "name": "UPGRADE_INTERFACE_VERSION",
1215
- "outputs": [
1216
- {
1217
- "internalType": "string",
1218
- "name": "",
1219
- "type": "string"
1220
- }
1221
- ]
627
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }]
1222
628
  },
1223
629
  {
1224
630
  "inputs": [],
1225
631
  "stateMutability": "view",
1226
632
  "type": "function",
1227
633
  "name": "activeValidatorsCount",
1228
- "outputs": [
1229
- {
1230
- "internalType": "uint256",
1231
- "name": "",
1232
- "type": "uint256"
1233
- }
1234
- ]
634
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1235
635
  },
1236
636
  {
1237
637
  "inputs": [
1238
- {
1239
- "internalType": "address",
1240
- "name": "addr",
1241
- "type": "address"
1242
- },
1243
- {
1244
- "internalType": "bytes",
1245
- "name": "blsPublicKey",
1246
- "type": "bytes"
1247
- },
1248
- {
1249
- "internalType": "bool",
1250
- "name": "isResigned",
1251
- "type": "bool"
1252
- }
638
+ { "internalType": "address", "name": "addr", "type": "address" },
639
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" },
640
+ { "internalType": "bool", "name": "isResigned", "type": "bool" }
1253
641
  ],
1254
642
  "stateMutability": "nonpayable",
1255
643
  "type": "function",
@@ -1257,74 +645,48 @@
1257
645
  },
1258
646
  {
1259
647
  "inputs": [
1260
- {
1261
- "internalType": "address",
1262
- "name": "voter",
1263
- "type": "address"
1264
- },
1265
- {
1266
- "internalType": "address",
1267
- "name": "validator",
1268
- "type": "address"
1269
- }
648
+ { "internalType": "address[]", "name": "voters", "type": "address[]" },
649
+ { "internalType": "address[]", "name": "validators", "type": "address[]" }
1270
650
  ],
1271
651
  "stateMutability": "nonpayable",
1272
652
  "type": "function",
1273
- "name": "addVote"
653
+ "name": "addVotes"
1274
654
  },
1275
655
  {
1276
- "inputs": [
1277
- {
1278
- "internalType": "uint8",
1279
- "name": "n",
1280
- "type": "uint8"
1281
- }
1282
- ],
656
+ "inputs": [{ "internalType": "uint8", "name": "n", "type": "uint8" }],
1283
657
  "stateMutability": "nonpayable",
1284
658
  "type": "function",
1285
- "name": "calculateActiveValidators"
659
+ "name": "calculateRoundValidators"
660
+ },
661
+ {
662
+ "inputs": [],
663
+ "stateMutability": "view",
664
+ "type": "function",
665
+ "name": "fee",
666
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1286
667
  },
1287
668
  {
1288
669
  "inputs": [],
1289
670
  "stateMutability": "view",
1290
671
  "type": "function",
1291
- "name": "getActiveValidators",
672
+ "name": "getAllValidators",
1292
673
  "outputs": [
1293
674
  {
1294
675
  "internalType": "struct ConsensusV1.Validator[]",
1295
676
  "name": "",
1296
677
  "type": "tuple[]",
1297
678
  "components": [
1298
- {
1299
- "internalType": "address",
1300
- "name": "addr",
1301
- "type": "address"
1302
- },
679
+ { "internalType": "address", "name": "addr", "type": "address" },
1303
680
  {
1304
681
  "internalType": "struct ConsensusV1.ValidatorData",
1305
682
  "name": "data",
1306
683
  "type": "tuple",
1307
684
  "components": [
1308
- {
1309
- "internalType": "uint256",
1310
- "name": "votersCount",
1311
- "type": "uint256"
1312
- },
1313
- {
1314
- "internalType": "uint256",
1315
- "name": "voteBalance",
1316
- "type": "uint256"
1317
- },
1318
- {
1319
- "internalType": "bool",
1320
- "name": "isResigned",
1321
- "type": "bool"
1322
- },
1323
- {
1324
- "internalType": "bytes",
1325
- "name": "blsPublicKey",
1326
- "type": "bytes"
1327
- }
685
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
686
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
687
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
688
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
689
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1328
690
  ]
1329
691
  }
1330
692
  ]
@@ -1335,43 +697,24 @@
1335
697
  "inputs": [],
1336
698
  "stateMutability": "view",
1337
699
  "type": "function",
1338
- "name": "getAllValidators",
700
+ "name": "getRoundValidators",
1339
701
  "outputs": [
1340
702
  {
1341
703
  "internalType": "struct ConsensusV1.Validator[]",
1342
704
  "name": "",
1343
705
  "type": "tuple[]",
1344
706
  "components": [
1345
- {
1346
- "internalType": "address",
1347
- "name": "addr",
1348
- "type": "address"
1349
- },
707
+ { "internalType": "address", "name": "addr", "type": "address" },
1350
708
  {
1351
709
  "internalType": "struct ConsensusV1.ValidatorData",
1352
710
  "name": "data",
1353
711
  "type": "tuple",
1354
712
  "components": [
1355
- {
1356
- "internalType": "uint256",
1357
- "name": "votersCount",
1358
- "type": "uint256"
1359
- },
1360
- {
1361
- "internalType": "uint256",
1362
- "name": "voteBalance",
1363
- "type": "uint256"
1364
- },
1365
- {
1366
- "internalType": "bool",
1367
- "name": "isResigned",
1368
- "type": "bool"
1369
- },
1370
- {
1371
- "internalType": "bytes",
1372
- "name": "blsPublicKey",
1373
- "type": "bytes"
1374
- }
713
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
714
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
715
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
716
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
717
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1375
718
  ]
1376
719
  }
1377
720
  ]
@@ -1380,16 +723,8 @@
1380
723
  },
1381
724
  {
1382
725
  "inputs": [
1383
- {
1384
- "internalType": "uint256",
1385
- "name": "offset",
1386
- "type": "uint256"
1387
- },
1388
- {
1389
- "internalType": "uint256",
1390
- "name": "count",
1391
- "type": "uint256"
1392
- }
726
+ { "internalType": "uint256", "name": "offset", "type": "uint256" },
727
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
1393
728
  ],
1394
729
  "stateMutability": "view",
1395
730
  "type": "function",
@@ -1400,26 +735,14 @@
1400
735
  "name": "",
1401
736
  "type": "tuple[]",
1402
737
  "components": [
1403
- {
1404
- "internalType": "uint256",
1405
- "name": "round",
1406
- "type": "uint256"
1407
- },
738
+ { "internalType": "uint256", "name": "round", "type": "uint256" },
1408
739
  {
1409
740
  "internalType": "struct ConsensusV1.RoundValidator[]",
1410
741
  "name": "validators",
1411
742
  "type": "tuple[]",
1412
743
  "components": [
1413
- {
1414
- "internalType": "address",
1415
- "name": "addr",
1416
- "type": "address"
1417
- },
1418
- {
1419
- "internalType": "uint256",
1420
- "name": "voteBalance",
1421
- "type": "uint256"
1422
- }
744
+ { "internalType": "address", "name": "addr", "type": "address" },
745
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" }
1423
746
  ]
1424
747
  }
1425
748
  ]
@@ -1431,22 +754,10 @@
1431
754
  "stateMutability": "view",
1432
755
  "type": "function",
1433
756
  "name": "getRoundsCount",
1434
- "outputs": [
1435
- {
1436
- "internalType": "uint256",
1437
- "name": "",
1438
- "type": "uint256"
1439
- }
1440
- ]
757
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1441
758
  },
1442
759
  {
1443
- "inputs": [
1444
- {
1445
- "internalType": "address",
1446
- "name": "addr",
1447
- "type": "address"
1448
- }
1449
- ],
760
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1450
761
  "stateMutability": "view",
1451
762
  "type": "function",
1452
763
  "name": "getValidator",
@@ -1456,36 +767,17 @@
1456
767
  "name": "",
1457
768
  "type": "tuple",
1458
769
  "components": [
1459
- {
1460
- "internalType": "address",
1461
- "name": "addr",
1462
- "type": "address"
1463
- },
770
+ { "internalType": "address", "name": "addr", "type": "address" },
1464
771
  {
1465
772
  "internalType": "struct ConsensusV1.ValidatorData",
1466
773
  "name": "data",
1467
774
  "type": "tuple",
1468
775
  "components": [
1469
- {
1470
- "internalType": "uint256",
1471
- "name": "votersCount",
1472
- "type": "uint256"
1473
- },
1474
- {
1475
- "internalType": "uint256",
1476
- "name": "voteBalance",
1477
- "type": "uint256"
1478
- },
1479
- {
1480
- "internalType": "bool",
1481
- "name": "isResigned",
1482
- "type": "bool"
1483
- },
1484
- {
1485
- "internalType": "bytes",
1486
- "name": "blsPublicKey",
1487
- "type": "bytes"
1488
- }
776
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
777
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
778
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
779
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
780
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1489
781
  ]
1490
782
  }
1491
783
  ]
@@ -1494,16 +786,8 @@
1494
786
  },
1495
787
  {
1496
788
  "inputs": [
1497
- {
1498
- "internalType": "address",
1499
- "name": "addr",
1500
- "type": "address"
1501
- },
1502
- {
1503
- "internalType": "uint256",
1504
- "name": "count",
1505
- "type": "uint256"
1506
- }
789
+ { "internalType": "address", "name": "addr", "type": "address" },
790
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
1507
791
  ],
1508
792
  "stateMutability": "view",
1509
793
  "type": "function",
@@ -1514,16 +798,8 @@
1514
798
  "name": "",
1515
799
  "type": "tuple[]",
1516
800
  "components": [
1517
- {
1518
- "internalType": "address",
1519
- "name": "voter",
1520
- "type": "address"
1521
- },
1522
- {
1523
- "internalType": "address",
1524
- "name": "validator",
1525
- "type": "address"
1526
- }
801
+ { "internalType": "address", "name": "voter", "type": "address" },
802
+ { "internalType": "address", "name": "validator", "type": "address" }
1527
803
  ]
1528
804
  }
1529
805
  ]
@@ -1533,195 +809,107 @@
1533
809
  "stateMutability": "view",
1534
810
  "type": "function",
1535
811
  "name": "getVotesCount",
1536
- "outputs": [
1537
- {
1538
- "internalType": "uint256",
1539
- "name": "",
1540
- "type": "uint256"
1541
- }
1542
- ]
812
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1543
813
  },
1544
814
  {
1545
- "inputs": [],
815
+ "inputs": [{ "internalType": "uint128", "name": "registrationFee", "type": "uint128" }],
1546
816
  "stateMutability": "nonpayable",
1547
817
  "type": "function",
1548
818
  "name": "initialize"
1549
819
  },
1550
820
  {
1551
- "inputs": [
1552
- {
1553
- "internalType": "address",
1554
- "name": "addr",
1555
- "type": "address"
1556
- }
1557
- ],
821
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1558
822
  "stateMutability": "view",
1559
823
  "type": "function",
1560
824
  "name": "isValidatorRegistered",
1561
- "outputs": [
1562
- {
1563
- "internalType": "bool",
1564
- "name": "",
1565
- "type": "bool"
1566
- }
1567
- ]
825
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
1568
826
  },
1569
827
  {
1570
828
  "inputs": [],
1571
829
  "stateMutability": "view",
1572
830
  "type": "function",
1573
831
  "name": "owner",
1574
- "outputs": [
1575
- {
1576
- "internalType": "address",
1577
- "name": "",
1578
- "type": "address"
1579
- }
1580
- ]
832
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
1581
833
  },
1582
834
  {
1583
835
  "inputs": [],
1584
836
  "stateMutability": "view",
1585
837
  "type": "function",
1586
838
  "name": "proxiableUUID",
1587
- "outputs": [
1588
- {
1589
- "internalType": "bytes32",
1590
- "name": "",
1591
- "type": "bytes32"
1592
- }
1593
- ]
839
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
1594
840
  },
1595
841
  {
1596
- "inputs": [
1597
- {
1598
- "internalType": "bytes",
1599
- "name": "blsPublicKey",
1600
- "type": "bytes"
1601
- }
1602
- ],
1603
- "stateMutability": "nonpayable",
842
+ "inputs": [{ "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }],
843
+ "stateMutability": "payable",
1604
844
  "type": "function",
1605
845
  "name": "registerValidator"
1606
846
  },
847
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" },
848
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "resignValidator" },
1607
849
  {
1608
850
  "inputs": [],
1609
851
  "stateMutability": "view",
1610
852
  "type": "function",
1611
- "name": "registeredValidatorsCount",
1612
- "outputs": [
1613
- {
1614
- "internalType": "uint256",
1615
- "name": "",
1616
- "type": "uint256"
1617
- }
1618
- ]
1619
- },
1620
- {
1621
- "inputs": [],
1622
- "stateMutability": "nonpayable",
1623
- "type": "function",
1624
- "name": "renounceOwnership"
1625
- },
1626
- {
1627
- "inputs": [],
1628
- "stateMutability": "nonpayable",
1629
- "type": "function",
1630
- "name": "resignValidator"
853
+ "name": "resignedValidatorsCount",
854
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1631
855
  },
1632
856
  {
1633
857
  "inputs": [],
1634
858
  "stateMutability": "view",
1635
859
  "type": "function",
1636
- "name": "resignedValidatorsCount",
1637
- "outputs": [
1638
- {
1639
- "internalType": "uint256",
1640
- "name": "",
1641
- "type": "uint256"
1642
- }
1643
- ]
860
+ "name": "roundValidatorsCount",
861
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1644
862
  },
1645
863
  {
1646
- "inputs": [
1647
- {
1648
- "internalType": "address",
1649
- "name": "newOwner",
1650
- "type": "address"
1651
- }
1652
- ],
864
+ "inputs": [{ "internalType": "uint128", "name": "registrationFee", "type": "uint128" }],
1653
865
  "stateMutability": "nonpayable",
1654
866
  "type": "function",
1655
- "name": "transferOwnership"
867
+ "name": "setFee"
1656
868
  },
1657
869
  {
1658
- "inputs": [],
870
+ "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
1659
871
  "stateMutability": "nonpayable",
1660
872
  "type": "function",
1661
- "name": "unvote"
873
+ "name": "transferOwnership"
1662
874
  },
875
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unvote" },
1663
876
  {
1664
- "inputs": [
1665
- {
1666
- "internalType": "bytes",
1667
- "name": "blsPublicKey",
1668
- "type": "bytes"
1669
- }
1670
- ],
877
+ "inputs": [{ "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }],
1671
878
  "stateMutability": "nonpayable",
1672
879
  "type": "function",
1673
880
  "name": "updateValidator"
1674
881
  },
1675
882
  {
1676
- "inputs": [
1677
- {
1678
- "internalType": "address[]",
1679
- "name": "voters",
1680
- "type": "address[]"
1681
- }
1682
- ],
883
+ "inputs": [{ "internalType": "address[]", "name": "voters", "type": "address[]" }],
1683
884
  "stateMutability": "nonpayable",
1684
885
  "type": "function",
1685
886
  "name": "updateVoters"
1686
887
  },
1687
888
  {
1688
889
  "inputs": [
1689
- {
1690
- "internalType": "address",
1691
- "name": "newImplementation",
1692
- "type": "address"
1693
- },
1694
- {
1695
- "internalType": "bytes",
1696
- "name": "data",
1697
- "type": "bytes"
1698
- }
890
+ { "internalType": "address", "name": "newImplementation", "type": "address" },
891
+ { "internalType": "bytes", "name": "data", "type": "bytes" }
1699
892
  ],
1700
893
  "stateMutability": "payable",
1701
894
  "type": "function",
1702
895
  "name": "upgradeToAndCall"
1703
896
  },
897
+ {
898
+ "inputs": [],
899
+ "stateMutability": "view",
900
+ "type": "function",
901
+ "name": "validatorsCount",
902
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
903
+ },
1704
904
  {
1705
905
  "inputs": [],
1706
906
  "stateMutability": "pure",
1707
907
  "type": "function",
1708
908
  "name": "version",
1709
- "outputs": [
1710
- {
1711
- "internalType": "uint256",
1712
- "name": "",
1713
- "type": "uint256"
1714
- }
1715
- ]
909
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1716
910
  },
1717
911
  {
1718
- "inputs": [
1719
- {
1720
- "internalType": "address",
1721
- "name": "addr",
1722
- "type": "address"
1723
- }
1724
- ],
912
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1725
913
  "stateMutability": "nonpayable",
1726
914
  "type": "function",
1727
915
  "name": "vote"
@@ -1730,9 +918,7 @@
1730
918
  "devdoc": {
1731
919
  "kind": "dev",
1732
920
  "methods": {
1733
- "owner()": {
1734
- "details": "Returns the address of the current owner."
1735
- },
921
+ "owner()": { "details": "Returns the address of the current owner." },
1736
922
  "proxiableUUID()": {
1737
923
  "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
1738
924
  },
@@ -1749,11 +935,7 @@
1749
935
  },
1750
936
  "version": 1
1751
937
  },
1752
- "userdoc": {
1753
- "kind": "user",
1754
- "methods": {},
1755
- "version": 1
1756
- }
938
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
1757
939
  },
1758
940
  "settings": {
1759
941
  "remappings": [
@@ -1761,25 +943,16 @@
1761
943
  "@forge-std/=lib/forge-std/src/",
1762
944
  "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
1763
945
  "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
1764
- "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
1765
946
  "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
1766
947
  "forge-std/=lib/forge-std/src/",
1767
948
  "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
1768
949
  "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
1769
950
  "openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
1770
- "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
1771
- "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
951
+ "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"
1772
952
  ],
1773
- "optimizer": {
1774
- "enabled": true,
1775
- "runs": 200
1776
- },
1777
- "metadata": {
1778
- "bytecodeHash": "ipfs"
1779
- },
1780
- "compilationTarget": {
1781
- "src/consensus/ConsensusV1.sol": "ConsensusV1"
1782
- },
953
+ "optimizer": { "enabled": true, "runs": 200 },
954
+ "metadata": { "bytecodeHash": "ipfs" },
955
+ "compilationTarget": { "src/consensus/ConsensusV1.sol": "ConsensusV1" },
1783
956
  "evmVersion": "shanghai",
1784
957
  "libraries": {}
1785
958
  },
@@ -1793,18 +966,18 @@
1793
966
  "license": "MIT"
1794
967
  },
1795
968
  "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
1796
- "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
969
+ "keccak256": "0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05",
1797
970
  "urls": [
1798
- "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
1799
- "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
971
+ "bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08",
972
+ "dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"
1800
973
  ],
1801
974
  "license": "MIT"
1802
975
  },
1803
976
  "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": {
1804
- "keccak256": "0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27",
977
+ "keccak256": "0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63",
1805
978
  "urls": [
1806
- "bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e",
1807
- "dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"
979
+ "bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec",
980
+ "dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ"
1808
981
  ],
1809
982
  "license": "MIT"
1810
983
  },
@@ -1833,10 +1006,10 @@
1833
1006
  "license": "MIT"
1834
1007
  },
1835
1008
  "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
1836
- "keccak256": "0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06",
1009
+ "keccak256": "0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898",
1837
1010
  "urls": [
1838
- "bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c",
1839
- "dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"
1011
+ "bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70",
1012
+ "dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"
1840
1013
  ],
1841
1014
  "license": "MIT"
1842
1015
  },
@@ -1849,10 +1022,10 @@
1849
1022
  "license": "MIT"
1850
1023
  },
1851
1024
  "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol": {
1852
- "keccak256": "0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5",
1025
+ "keccak256": "0x06871a0948d0fed9316ae59ee4368527e144911f5e284755312b5bfcde8b27ea",
1853
1026
  "urls": [
1854
- "bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23",
1855
- "dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"
1027
+ "bzz-raw://3c30e46d061d8a450c561935a1236b1885aa76ffab93a19b26dcb8868c839843",
1028
+ "dweb:/ipfs/QmZbWbeDyixTyYkVtJvuiQYfkQz12pS7zxWZF3Ju9PYwGH"
1856
1029
  ],
1857
1030
  "license": "MIT"
1858
1031
  },
@@ -1873,15 +1046,15 @@
1873
1046
  "license": "MIT"
1874
1047
  },
1875
1048
  "src/consensus/ConsensusV1.sol": {
1876
- "keccak256": "0xa096c8912b4481be903784c9d369eec66c9d28c8327641db9a579ecab3c993d2",
1049
+ "keccak256": "0x9bfdccbe2090ac30c946637a0f5578e4c1aafdc90d2b7675374d68016de7b3f5",
1877
1050
  "urls": [
1878
- "bzz-raw://1c2add4e8446b0ab5be825caa4a181c4303197d63411e8b915463b2396c40fdf",
1879
- "dweb:/ipfs/QmQdpzN3WJdfqkNf6JZQXFWUr9YZ4D1yjZFMimNoxxmKeZ"
1051
+ "bzz-raw://89017295b325b8556d6d185bcbdab578055e3ba4a23f4253be65ee17e061704b",
1052
+ "dweb:/ipfs/QmZ19h9eVS8hWWiXWgZktEwx6Gsn3ADZa4QAMdKFBkrXSm"
1880
1053
  ],
1881
1054
  "license": "GNU GENERAL PUBLIC LICENSE"
1882
1055
  }
1883
1056
  },
1884
1057
  "version": 1
1885
1058
  },
1886
- "id": 37
1059
+ "id": 32
1887
1060
  }