@layerzerolabs/lz-evm-sdk-v1 1.5.14 → 1.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/artifacts/contracts/Endpoint.sol/Endpoint.json +2 -2
  2. package/artifacts/contracts/NonceContract.sol/NonceContract.json +2 -2
  3. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +2 -2
  4. package/artifacts/contracts/Relayer.sol/Relayer.json +2 -2
  5. package/artifacts/contracts/RelayerV2.sol/RelayerV2.json +2 -2
  6. package/artifacts/contracts/UltraLightNode.sol/UltraLightNode.json +2 -2
  7. package/artifacts/contracts/UltraLightNodeV2.sol/UltraLightNodeV2.json +2 -2
  8. package/artifacts/contracts/messagelib-e2/MessageLibBase.sol/MessageLibBase.json +886 -0
  9. package/artifacts/contracts/messagelib-e2/interfaces/ILayerZeroRelayer.sol/ILayerZeroRelayer.json +79 -0
  10. package/artifacts/contracts/messagelib-e2/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +45 -0
  11. package/artifacts/contracts/messagelib-e2/interfaces/IMessageLib.sol/IMessageLib.json +319 -0
  12. package/artifacts/contracts/messagelib-e2/interfaces/IPacket.sol/IPacket.json +10 -0
  13. package/artifacts/contracts/messagelib-e2/libs/BytesLib.sol/BytesLib.json +10 -0
  14. package/artifacts/contracts/messagelib-e2/libs/Options.sol/Options.json +63 -0
  15. package/artifacts/contracts/messagelib-e2/libs/PacketV1Codec.sol/PacketV1Codec.json +10 -0
  16. package/artifacts/contracts/messagelib-e2/libs/RelayerOptions.sol/RelayerOptions.json +76 -0
  17. package/artifacts/contracts/messagelib-e2/libs/TreasuryOptions.sol/TreasuryOptions.json +37 -0
  18. package/artifacts/contracts/messagelib-e2/uln/UlnConfig.sol/UlnConfig.json +356 -0
  19. package/artifacts/contracts/messagelib-e2/uln/UltraLightNode301.sol/UltraLightNode301.json +1381 -0
  20. package/artifacts/contracts/messagelib-e2/uln/interfaces/ILayerZeroOracle.sol/ILayerZeroOracle.json +79 -0
  21. package/artifacts/contracts/messagelib-e2/uln/libs/OracleOptions.sol/OracleOptions.json +24 -0
  22. package/artifacts/contracts/proof/FPValidator.sol/FPValidator.json +2 -2
  23. package/artifacts/contracts/proof/MPTValidator.sol/MPTValidator.json +2 -2
  24. package/artifacts/contracts/proof/MPTValidator01.sol/MPTValidator01.json +2 -2
  25. package/artifacts/contracts/proof/MPTValidatorStgV3.sol/MPTValidatorStgV3.json +2 -2
  26. package/artifacts/contracts/proof/MPTValidatorV2.sol/MPTValidatorV2.json +2 -2
  27. package/artifacts/contracts/proof/MPTValidatorV4.sol/MPTValidatorV4.json +2 -2
  28. package/artifacts/contracts/proof/MPTValidatorV5.sol/MPTValidatorV5.json +2 -2
  29. package/artifacts/contracts/proof/utility/Buffer.sol/Buffer.json +2 -2
  30. package/artifacts/contracts/proof/utility/LayerZeroPacket.sol/LayerZeroPacket.json +2 -2
  31. package/artifacts/contracts/proof/utility/RLPDecode.sol/RLPDecode.json +2 -2
  32. package/artifacts/contracts/proof/utility/UltraLightNodeEVMDecoder.sol/UltraLightNodeEVMDecoder.json +2 -2
  33. package/package.json +12 -4
@@ -0,0 +1,1381 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "UltraLightNode301",
4
+ "sourceName": "contracts/messagelib-e2/uln/UltraLightNode301.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_endpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_treasuryGasCap",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_nonceContract",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "uint32",
25
+ "name": "_localEid",
26
+ "type": "uint32"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "anonymous": false,
34
+ "inputs": [
35
+ {
36
+ "indexed": false,
37
+ "internalType": "address[]",
38
+ "name": "oracles",
39
+ "type": "address[]"
40
+ },
41
+ {
42
+ "indexed": false,
43
+ "internalType": "uint256[]",
44
+ "name": "fees",
45
+ "type": "uint256[]"
46
+ }
47
+ ],
48
+ "name": "OracleFee",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": true,
56
+ "internalType": "address",
57
+ "name": "previousOwner",
58
+ "type": "address"
59
+ },
60
+ {
61
+ "indexed": true,
62
+ "internalType": "address",
63
+ "name": "newOwner",
64
+ "type": "address"
65
+ }
66
+ ],
67
+ "name": "OwnershipTransferred",
68
+ "type": "event"
69
+ },
70
+ {
71
+ "anonymous": false,
72
+ "inputs": [
73
+ {
74
+ "indexed": false,
75
+ "internalType": "uint32",
76
+ "name": "srcEid",
77
+ "type": "uint32"
78
+ },
79
+ {
80
+ "indexed": false,
81
+ "internalType": "bytes32",
82
+ "name": "sender",
83
+ "type": "bytes32"
84
+ },
85
+ {
86
+ "indexed": false,
87
+ "internalType": "address",
88
+ "name": "receiver",
89
+ "type": "address"
90
+ },
91
+ {
92
+ "indexed": false,
93
+ "internalType": "uint64",
94
+ "name": "nonce",
95
+ "type": "uint64"
96
+ },
97
+ {
98
+ "indexed": false,
99
+ "internalType": "bytes32",
100
+ "name": "payloadHash",
101
+ "type": "bytes32"
102
+ }
103
+ ],
104
+ "name": "PacketDelivered",
105
+ "type": "event"
106
+ },
107
+ {
108
+ "anonymous": false,
109
+ "inputs": [
110
+ {
111
+ "indexed": false,
112
+ "internalType": "bytes",
113
+ "name": "encodedPayload",
114
+ "type": "bytes"
115
+ },
116
+ {
117
+ "indexed": false,
118
+ "internalType": "bytes",
119
+ "name": "options",
120
+ "type": "bytes"
121
+ },
122
+ {
123
+ "indexed": false,
124
+ "internalType": "uint256",
125
+ "name": "nativeFee",
126
+ "type": "uint256"
127
+ },
128
+ {
129
+ "indexed": false,
130
+ "internalType": "uint256",
131
+ "name": "lzTokenFee",
132
+ "type": "uint256"
133
+ }
134
+ ],
135
+ "name": "PacketSent",
136
+ "type": "event"
137
+ },
138
+ {
139
+ "anonymous": false,
140
+ "inputs": [
141
+ {
142
+ "indexed": false,
143
+ "internalType": "address",
144
+ "name": "oracle",
145
+ "type": "address"
146
+ },
147
+ {
148
+ "indexed": false,
149
+ "internalType": "bytes",
150
+ "name": "header",
151
+ "type": "bytes"
152
+ },
153
+ {
154
+ "indexed": false,
155
+ "internalType": "uint256",
156
+ "name": "confirmations",
157
+ "type": "uint256"
158
+ },
159
+ {
160
+ "indexed": false,
161
+ "internalType": "bytes32",
162
+ "name": "proofHash",
163
+ "type": "bytes32"
164
+ }
165
+ ],
166
+ "name": "PayloadSigned",
167
+ "type": "event"
168
+ },
169
+ {
170
+ "anonymous": false,
171
+ "inputs": [
172
+ {
173
+ "indexed": false,
174
+ "internalType": "address",
175
+ "name": "relayer",
176
+ "type": "address"
177
+ },
178
+ {
179
+ "indexed": false,
180
+ "internalType": "uint256",
181
+ "name": "fee",
182
+ "type": "uint256"
183
+ }
184
+ ],
185
+ "name": "RelayerFee",
186
+ "type": "event"
187
+ },
188
+ {
189
+ "anonymous": false,
190
+ "inputs": [
191
+ {
192
+ "indexed": true,
193
+ "internalType": "uint32",
194
+ "name": "eid",
195
+ "type": "uint32"
196
+ },
197
+ {
198
+ "indexed": false,
199
+ "internalType": "uint64",
200
+ "name": "inboundBlockConfirm",
201
+ "type": "uint64"
202
+ },
203
+ {
204
+ "indexed": false,
205
+ "internalType": "address[]",
206
+ "name": "oracles",
207
+ "type": "address[]"
208
+ },
209
+ {
210
+ "indexed": false,
211
+ "internalType": "address[]",
212
+ "name": "optionalOracles",
213
+ "type": "address[]"
214
+ },
215
+ {
216
+ "indexed": false,
217
+ "internalType": "uint16",
218
+ "name": "optionalOraclesThreshold",
219
+ "type": "uint16"
220
+ }
221
+ ],
222
+ "name": "SetDefaultConfig",
223
+ "type": "event"
224
+ },
225
+ {
226
+ "anonymous": false,
227
+ "inputs": [
228
+ {
229
+ "indexed": true,
230
+ "internalType": "address",
231
+ "name": "oapp",
232
+ "type": "address"
233
+ },
234
+ {
235
+ "indexed": true,
236
+ "internalType": "uint256",
237
+ "name": "configType",
238
+ "type": "uint256"
239
+ },
240
+ {
241
+ "indexed": false,
242
+ "internalType": "bytes",
243
+ "name": "newConfig",
244
+ "type": "bytes"
245
+ }
246
+ ],
247
+ "name": "UlnConfigUpdated",
248
+ "type": "event"
249
+ },
250
+ {
251
+ "anonymous": false,
252
+ "inputs": [
253
+ {
254
+ "indexed": true,
255
+ "internalType": "address",
256
+ "name": "user",
257
+ "type": "address"
258
+ },
259
+ {
260
+ "indexed": false,
261
+ "internalType": "address",
262
+ "name": "receiver",
263
+ "type": "address"
264
+ },
265
+ {
266
+ "indexed": false,
267
+ "internalType": "uint256",
268
+ "name": "amount",
269
+ "type": "uint256"
270
+ }
271
+ ],
272
+ "name": "WithdrawFee",
273
+ "type": "event"
274
+ },
275
+ {
276
+ "anonymous": false,
277
+ "inputs": [
278
+ {
279
+ "indexed": true,
280
+ "internalType": "address",
281
+ "name": "user",
282
+ "type": "address"
283
+ },
284
+ {
285
+ "indexed": false,
286
+ "internalType": "address",
287
+ "name": "receiver",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "indexed": false,
292
+ "internalType": "uint256",
293
+ "name": "amount",
294
+ "type": "uint256"
295
+ }
296
+ ],
297
+ "name": "WithdrawLzTokenFee",
298
+ "type": "event"
299
+ },
300
+ {
301
+ "anonymous": false,
302
+ "inputs": [
303
+ {
304
+ "indexed": true,
305
+ "internalType": "address",
306
+ "name": "worker",
307
+ "type": "address"
308
+ },
309
+ {
310
+ "indexed": false,
311
+ "internalType": "bool",
312
+ "name": "entered",
313
+ "type": "bool"
314
+ },
315
+ {
316
+ "indexed": false,
317
+ "internalType": "uint256",
318
+ "name": "timestamp",
319
+ "type": "uint256"
320
+ }
321
+ ],
322
+ "name": "WorkerEntered",
323
+ "type": "event"
324
+ },
325
+ {
326
+ "inputs": [],
327
+ "name": "CONFIG_TYPE_INBOUND_CONFIRMATIONS",
328
+ "outputs": [
329
+ {
330
+ "internalType": "uint32",
331
+ "name": "",
332
+ "type": "uint32"
333
+ }
334
+ ],
335
+ "stateMutability": "view",
336
+ "type": "function"
337
+ },
338
+ {
339
+ "inputs": [],
340
+ "name": "CONFIG_TYPE_MAX_MESSAGE_SIZE",
341
+ "outputs": [
342
+ {
343
+ "internalType": "uint32",
344
+ "name": "",
345
+ "type": "uint32"
346
+ }
347
+ ],
348
+ "stateMutability": "view",
349
+ "type": "function"
350
+ },
351
+ {
352
+ "inputs": [],
353
+ "name": "CONFIG_TYPE_OPTIONAL_ORACLES",
354
+ "outputs": [
355
+ {
356
+ "internalType": "uint32",
357
+ "name": "",
358
+ "type": "uint32"
359
+ }
360
+ ],
361
+ "stateMutability": "view",
362
+ "type": "function"
363
+ },
364
+ {
365
+ "inputs": [],
366
+ "name": "CONFIG_TYPE_ORACLES",
367
+ "outputs": [
368
+ {
369
+ "internalType": "uint32",
370
+ "name": "",
371
+ "type": "uint32"
372
+ }
373
+ ],
374
+ "stateMutability": "view",
375
+ "type": "function"
376
+ },
377
+ {
378
+ "inputs": [],
379
+ "name": "CONFIG_TYPE_OUTBOUND_CONFIRMATIONS",
380
+ "outputs": [
381
+ {
382
+ "internalType": "uint32",
383
+ "name": "",
384
+ "type": "uint32"
385
+ }
386
+ ],
387
+ "stateMutability": "view",
388
+ "type": "function"
389
+ },
390
+ {
391
+ "inputs": [],
392
+ "name": "CONFIG_TYPE_RELAYER",
393
+ "outputs": [
394
+ {
395
+ "internalType": "uint32",
396
+ "name": "",
397
+ "type": "uint32"
398
+ }
399
+ ],
400
+ "stateMutability": "view",
401
+ "type": "function"
402
+ },
403
+ {
404
+ "inputs": [
405
+ {
406
+ "internalType": "uint32",
407
+ "name": "",
408
+ "type": "uint32"
409
+ }
410
+ ],
411
+ "name": "addressSizes",
412
+ "outputs": [
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "stateMutability": "view",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [
424
+ {
425
+ "internalType": "uint32",
426
+ "name": "",
427
+ "type": "uint32"
428
+ }
429
+ ],
430
+ "name": "defaultOptions",
431
+ "outputs": [
432
+ {
433
+ "internalType": "bytes",
434
+ "name": "",
435
+ "type": "bytes"
436
+ }
437
+ ],
438
+ "stateMutability": "view",
439
+ "type": "function"
440
+ },
441
+ {
442
+ "inputs": [
443
+ {
444
+ "internalType": "uint32",
445
+ "name": "",
446
+ "type": "uint32"
447
+ }
448
+ ],
449
+ "name": "defaultOutboundConfig",
450
+ "outputs": [
451
+ {
452
+ "internalType": "uint32",
453
+ "name": "maxMessageSize",
454
+ "type": "uint32"
455
+ },
456
+ {
457
+ "internalType": "uint64",
458
+ "name": "outboundConfirmations",
459
+ "type": "uint64"
460
+ },
461
+ {
462
+ "internalType": "address",
463
+ "name": "relayer",
464
+ "type": "address"
465
+ }
466
+ ],
467
+ "stateMutability": "view",
468
+ "type": "function"
469
+ },
470
+ {
471
+ "inputs": [
472
+ {
473
+ "internalType": "uint32",
474
+ "name": "",
475
+ "type": "uint32"
476
+ }
477
+ ],
478
+ "name": "defaultUlnConfig",
479
+ "outputs": [
480
+ {
481
+ "internalType": "uint64",
482
+ "name": "inboundConfirmations",
483
+ "type": "uint64"
484
+ },
485
+ {
486
+ "internalType": "bool",
487
+ "name": "useCustomOracles",
488
+ "type": "bool"
489
+ },
490
+ {
491
+ "internalType": "bool",
492
+ "name": "useCustomOptionalOracles",
493
+ "type": "bool"
494
+ },
495
+ {
496
+ "internalType": "uint16",
497
+ "name": "oraclesCount",
498
+ "type": "uint16"
499
+ },
500
+ {
501
+ "internalType": "uint16",
502
+ "name": "optionalOraclesCount",
503
+ "type": "uint16"
504
+ },
505
+ {
506
+ "internalType": "uint16",
507
+ "name": "optionalOraclesThreshold",
508
+ "type": "uint16"
509
+ }
510
+ ],
511
+ "stateMutability": "view",
512
+ "type": "function"
513
+ },
514
+ {
515
+ "inputs": [
516
+ {
517
+ "internalType": "bytes",
518
+ "name": "_packet",
519
+ "type": "bytes"
520
+ },
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "_gasLimit",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "name": "deliver",
528
+ "outputs": [],
529
+ "stateMutability": "nonpayable",
530
+ "type": "function"
531
+ },
532
+ {
533
+ "inputs": [
534
+ {
535
+ "internalType": "bytes",
536
+ "name": "_packet",
537
+ "type": "bytes"
538
+ }
539
+ ],
540
+ "name": "deliverable",
541
+ "outputs": [
542
+ {
543
+ "internalType": "bool",
544
+ "name": "",
545
+ "type": "bool"
546
+ }
547
+ ],
548
+ "stateMutability": "view",
549
+ "type": "function"
550
+ },
551
+ {
552
+ "inputs": [],
553
+ "name": "endpoint",
554
+ "outputs": [
555
+ {
556
+ "internalType": "address",
557
+ "name": "",
558
+ "type": "address"
559
+ }
560
+ ],
561
+ "stateMutability": "view",
562
+ "type": "function"
563
+ },
564
+ {
565
+ "inputs": [
566
+ {
567
+ "internalType": "uint16",
568
+ "name": "_dstEid",
569
+ "type": "uint16"
570
+ },
571
+ {
572
+ "internalType": "address",
573
+ "name": "_sender",
574
+ "type": "address"
575
+ },
576
+ {
577
+ "internalType": "bytes",
578
+ "name": "_message",
579
+ "type": "bytes"
580
+ },
581
+ {
582
+ "internalType": "bool",
583
+ "name": "_payInLzToken",
584
+ "type": "bool"
585
+ },
586
+ {
587
+ "internalType": "bytes",
588
+ "name": "_options",
589
+ "type": "bytes"
590
+ }
591
+ ],
592
+ "name": "estimateFees",
593
+ "outputs": [
594
+ {
595
+ "internalType": "uint256",
596
+ "name": "nativeFee",
597
+ "type": "uint256"
598
+ },
599
+ {
600
+ "internalType": "uint256",
601
+ "name": "zroFee",
602
+ "type": "uint256"
603
+ }
604
+ ],
605
+ "stateMutability": "view",
606
+ "type": "function"
607
+ },
608
+ {
609
+ "inputs": [
610
+ {
611
+ "internalType": "address",
612
+ "name": "",
613
+ "type": "address"
614
+ }
615
+ ],
616
+ "name": "fees",
617
+ "outputs": [
618
+ {
619
+ "internalType": "uint256",
620
+ "name": "",
621
+ "type": "uint256"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [
629
+ {
630
+ "internalType": "uint16",
631
+ "name": "_eid",
632
+ "type": "uint16"
633
+ },
634
+ {
635
+ "internalType": "address",
636
+ "name": "_oapp",
637
+ "type": "address"
638
+ },
639
+ {
640
+ "internalType": "uint256",
641
+ "name": "_configType",
642
+ "type": "uint256"
643
+ }
644
+ ],
645
+ "name": "getConfig",
646
+ "outputs": [
647
+ {
648
+ "internalType": "bytes",
649
+ "name": "",
650
+ "type": "bytes"
651
+ }
652
+ ],
653
+ "stateMutability": "view",
654
+ "type": "function"
655
+ },
656
+ {
657
+ "inputs": [
658
+ {
659
+ "internalType": "uint32",
660
+ "name": "_eid",
661
+ "type": "uint32"
662
+ },
663
+ {
664
+ "internalType": "uint32",
665
+ "name": "_configType",
666
+ "type": "uint32"
667
+ }
668
+ ],
669
+ "name": "getDefaultConfig",
670
+ "outputs": [
671
+ {
672
+ "internalType": "bytes",
673
+ "name": "",
674
+ "type": "bytes"
675
+ }
676
+ ],
677
+ "stateMutability": "view",
678
+ "type": "function"
679
+ },
680
+ {
681
+ "inputs": [
682
+ {
683
+ "internalType": "address",
684
+ "name": "_oapp",
685
+ "type": "address"
686
+ },
687
+ {
688
+ "internalType": "uint32",
689
+ "name": "_eid",
690
+ "type": "uint32"
691
+ }
692
+ ],
693
+ "name": "getOutboundConfig",
694
+ "outputs": [
695
+ {
696
+ "components": [
697
+ {
698
+ "internalType": "uint32",
699
+ "name": "maxMessageSize",
700
+ "type": "uint32"
701
+ },
702
+ {
703
+ "internalType": "uint64",
704
+ "name": "outboundConfirmations",
705
+ "type": "uint64"
706
+ },
707
+ {
708
+ "internalType": "address",
709
+ "name": "relayer",
710
+ "type": "address"
711
+ }
712
+ ],
713
+ "internalType": "struct MessageLibBase.OutboundConfig",
714
+ "name": "",
715
+ "type": "tuple"
716
+ }
717
+ ],
718
+ "stateMutability": "view",
719
+ "type": "function"
720
+ },
721
+ {
722
+ "inputs": [
723
+ {
724
+ "internalType": "uint16",
725
+ "name": "_eid",
726
+ "type": "uint16"
727
+ },
728
+ {
729
+ "internalType": "bytes",
730
+ "name": "_path",
731
+ "type": "bytes"
732
+ }
733
+ ],
734
+ "name": "getOutboundNonce",
735
+ "outputs": [
736
+ {
737
+ "internalType": "uint64",
738
+ "name": "",
739
+ "type": "uint64"
740
+ }
741
+ ],
742
+ "stateMutability": "view",
743
+ "type": "function"
744
+ },
745
+ {
746
+ "inputs": [
747
+ {
748
+ "internalType": "address",
749
+ "name": "_oapp",
750
+ "type": "address"
751
+ },
752
+ {
753
+ "internalType": "uint32",
754
+ "name": "_remoteEid",
755
+ "type": "uint32"
756
+ }
757
+ ],
758
+ "name": "getUlnConfig",
759
+ "outputs": [
760
+ {
761
+ "components": [
762
+ {
763
+ "internalType": "uint64",
764
+ "name": "inboundConfirmations",
765
+ "type": "uint64"
766
+ },
767
+ {
768
+ "internalType": "bool",
769
+ "name": "useCustomOracles",
770
+ "type": "bool"
771
+ },
772
+ {
773
+ "internalType": "bool",
774
+ "name": "useCustomOptionalOracles",
775
+ "type": "bool"
776
+ },
777
+ {
778
+ "internalType": "uint16",
779
+ "name": "oraclesCount",
780
+ "type": "uint16"
781
+ },
782
+ {
783
+ "internalType": "uint16",
784
+ "name": "optionalOraclesCount",
785
+ "type": "uint16"
786
+ },
787
+ {
788
+ "internalType": "uint16",
789
+ "name": "optionalOraclesThreshold",
790
+ "type": "uint16"
791
+ },
792
+ {
793
+ "internalType": "address[]",
794
+ "name": "oracles",
795
+ "type": "address[]"
796
+ },
797
+ {
798
+ "internalType": "address[]",
799
+ "name": "optionalOracles",
800
+ "type": "address[]"
801
+ }
802
+ ],
803
+ "internalType": "struct UlnConfig.Config",
804
+ "name": "",
805
+ "type": "tuple"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "bytes32",
815
+ "name": "",
816
+ "type": "bytes32"
817
+ },
818
+ {
819
+ "internalType": "bytes32",
820
+ "name": "",
821
+ "type": "bytes32"
822
+ },
823
+ {
824
+ "internalType": "address",
825
+ "name": "",
826
+ "type": "address"
827
+ }
828
+ ],
829
+ "name": "hashLookup",
830
+ "outputs": [
831
+ {
832
+ "internalType": "uint64",
833
+ "name": "",
834
+ "type": "uint64"
835
+ }
836
+ ],
837
+ "stateMutability": "view",
838
+ "type": "function"
839
+ },
840
+ {
841
+ "inputs": [],
842
+ "name": "layerZeroToken",
843
+ "outputs": [
844
+ {
845
+ "internalType": "address",
846
+ "name": "",
847
+ "type": "address"
848
+ }
849
+ ],
850
+ "stateMutability": "view",
851
+ "type": "function"
852
+ },
853
+ {
854
+ "inputs": [],
855
+ "name": "localEid",
856
+ "outputs": [
857
+ {
858
+ "internalType": "uint32",
859
+ "name": "",
860
+ "type": "uint32"
861
+ }
862
+ ],
863
+ "stateMutability": "view",
864
+ "type": "function"
865
+ },
866
+ {
867
+ "inputs": [],
868
+ "name": "nonceContract",
869
+ "outputs": [
870
+ {
871
+ "internalType": "contract NonceContract",
872
+ "name": "",
873
+ "type": "address"
874
+ }
875
+ ],
876
+ "stateMutability": "view",
877
+ "type": "function"
878
+ },
879
+ {
880
+ "inputs": [
881
+ {
882
+ "internalType": "bool",
883
+ "name": "_enter",
884
+ "type": "bool"
885
+ },
886
+ {
887
+ "internalType": "uint256",
888
+ "name": "_timestamp",
889
+ "type": "uint256"
890
+ }
891
+ ],
892
+ "name": "notice",
893
+ "outputs": [],
894
+ "stateMutability": "nonpayable",
895
+ "type": "function"
896
+ },
897
+ {
898
+ "inputs": [
899
+ {
900
+ "internalType": "bytes",
901
+ "name": "_packetHeader",
902
+ "type": "bytes"
903
+ },
904
+ {
905
+ "internalType": "bytes32",
906
+ "name": "_payloadHash",
907
+ "type": "bytes32"
908
+ },
909
+ {
910
+ "internalType": "uint64",
911
+ "name": "_confirmations",
912
+ "type": "uint64"
913
+ }
914
+ ],
915
+ "name": "oracleSign",
916
+ "outputs": [],
917
+ "stateMutability": "nonpayable",
918
+ "type": "function"
919
+ },
920
+ {
921
+ "inputs": [
922
+ {
923
+ "internalType": "address",
924
+ "name": "",
925
+ "type": "address"
926
+ },
927
+ {
928
+ "internalType": "uint32",
929
+ "name": "",
930
+ "type": "uint32"
931
+ }
932
+ ],
933
+ "name": "outboundConfig",
934
+ "outputs": [
935
+ {
936
+ "internalType": "uint32",
937
+ "name": "maxMessageSize",
938
+ "type": "uint32"
939
+ },
940
+ {
941
+ "internalType": "uint64",
942
+ "name": "outboundConfirmations",
943
+ "type": "uint64"
944
+ },
945
+ {
946
+ "internalType": "address",
947
+ "name": "relayer",
948
+ "type": "address"
949
+ }
950
+ ],
951
+ "stateMutability": "view",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [],
956
+ "name": "owner",
957
+ "outputs": [
958
+ {
959
+ "internalType": "address",
960
+ "name": "",
961
+ "type": "address"
962
+ }
963
+ ],
964
+ "stateMutability": "view",
965
+ "type": "function"
966
+ },
967
+ {
968
+ "inputs": [],
969
+ "name": "packetVersion",
970
+ "outputs": [
971
+ {
972
+ "internalType": "uint8",
973
+ "name": "",
974
+ "type": "uint8"
975
+ }
976
+ ],
977
+ "stateMutability": "view",
978
+ "type": "function"
979
+ },
980
+ {
981
+ "inputs": [
982
+ {
983
+ "internalType": "address",
984
+ "name": "_sender",
985
+ "type": "address"
986
+ },
987
+ {
988
+ "internalType": "uint32",
989
+ "name": "_eid",
990
+ "type": "uint32"
991
+ },
992
+ {
993
+ "internalType": "uint256",
994
+ "name": "_totalFee",
995
+ "type": "uint256"
996
+ },
997
+ {
998
+ "internalType": "bool",
999
+ "name": "_payInLzToken",
1000
+ "type": "bool"
1001
+ }
1002
+ ],
1003
+ "name": "quoteTreasuryFee",
1004
+ "outputs": [
1005
+ {
1006
+ "internalType": "uint256",
1007
+ "name": "nativeFee",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "internalType": "uint256",
1012
+ "name": "lzTokenFee",
1013
+ "type": "uint256"
1014
+ }
1015
+ ],
1016
+ "stateMutability": "view",
1017
+ "type": "function"
1018
+ },
1019
+ {
1020
+ "inputs": [],
1021
+ "name": "renounceOwnership",
1022
+ "outputs": [],
1023
+ "stateMutability": "nonpayable",
1024
+ "type": "function"
1025
+ },
1026
+ {
1027
+ "inputs": [
1028
+ {
1029
+ "internalType": "address",
1030
+ "name": "_sender",
1031
+ "type": "address"
1032
+ },
1033
+ {
1034
+ "internalType": "uint64",
1035
+ "name": "",
1036
+ "type": "uint64"
1037
+ },
1038
+ {
1039
+ "internalType": "uint16",
1040
+ "name": "_dstEid",
1041
+ "type": "uint16"
1042
+ },
1043
+ {
1044
+ "internalType": "bytes",
1045
+ "name": "_path",
1046
+ "type": "bytes"
1047
+ },
1048
+ {
1049
+ "internalType": "bytes",
1050
+ "name": "_message",
1051
+ "type": "bytes"
1052
+ },
1053
+ {
1054
+ "internalType": "address payable",
1055
+ "name": "_refundAddress",
1056
+ "type": "address"
1057
+ },
1058
+ {
1059
+ "internalType": "address",
1060
+ "name": "_zroPaymentAddress",
1061
+ "type": "address"
1062
+ },
1063
+ {
1064
+ "internalType": "bytes",
1065
+ "name": "_options",
1066
+ "type": "bytes"
1067
+ }
1068
+ ],
1069
+ "name": "send",
1070
+ "outputs": [],
1071
+ "stateMutability": "payable",
1072
+ "type": "function"
1073
+ },
1074
+ {
1075
+ "inputs": [
1076
+ {
1077
+ "internalType": "uint16",
1078
+ "name": "_eid",
1079
+ "type": "uint16"
1080
+ },
1081
+ {
1082
+ "internalType": "uint256",
1083
+ "name": "_size",
1084
+ "type": "uint256"
1085
+ }
1086
+ ],
1087
+ "name": "setAddressSize",
1088
+ "outputs": [],
1089
+ "stateMutability": "nonpayable",
1090
+ "type": "function"
1091
+ },
1092
+ {
1093
+ "inputs": [
1094
+ {
1095
+ "internalType": "uint16",
1096
+ "name": "_eid",
1097
+ "type": "uint16"
1098
+ },
1099
+ {
1100
+ "internalType": "address",
1101
+ "name": "_oapp",
1102
+ "type": "address"
1103
+ },
1104
+ {
1105
+ "internalType": "uint256",
1106
+ "name": "_configType",
1107
+ "type": "uint256"
1108
+ },
1109
+ {
1110
+ "internalType": "bytes",
1111
+ "name": "_config",
1112
+ "type": "bytes"
1113
+ }
1114
+ ],
1115
+ "name": "setConfig",
1116
+ "outputs": [],
1117
+ "stateMutability": "nonpayable",
1118
+ "type": "function"
1119
+ },
1120
+ {
1121
+ "inputs": [
1122
+ {
1123
+ "internalType": "uint32",
1124
+ "name": "_eid",
1125
+ "type": "uint32"
1126
+ },
1127
+ {
1128
+ "internalType": "uint64",
1129
+ "name": "_inboundConfirmations",
1130
+ "type": "uint64"
1131
+ },
1132
+ {
1133
+ "internalType": "address[]",
1134
+ "name": "_oracles",
1135
+ "type": "address[]"
1136
+ },
1137
+ {
1138
+ "internalType": "address[]",
1139
+ "name": "_optionalOracles",
1140
+ "type": "address[]"
1141
+ },
1142
+ {
1143
+ "internalType": "uint16",
1144
+ "name": "_optionalOraclesThreshold",
1145
+ "type": "uint16"
1146
+ }
1147
+ ],
1148
+ "name": "setDefaultConfig",
1149
+ "outputs": [],
1150
+ "stateMutability": "nonpayable",
1151
+ "type": "function"
1152
+ },
1153
+ {
1154
+ "inputs": [
1155
+ {
1156
+ "internalType": "uint32",
1157
+ "name": "_eid",
1158
+ "type": "uint32"
1159
+ },
1160
+ {
1161
+ "internalType": "bytes",
1162
+ "name": "_options",
1163
+ "type": "bytes"
1164
+ }
1165
+ ],
1166
+ "name": "setDefaultOptions",
1167
+ "outputs": [],
1168
+ "stateMutability": "nonpayable",
1169
+ "type": "function"
1170
+ },
1171
+ {
1172
+ "inputs": [
1173
+ {
1174
+ "internalType": "uint32",
1175
+ "name": "_eid",
1176
+ "type": "uint32"
1177
+ },
1178
+ {
1179
+ "internalType": "uint32",
1180
+ "name": "_maxMessageSize",
1181
+ "type": "uint32"
1182
+ },
1183
+ {
1184
+ "internalType": "uint64",
1185
+ "name": "_outboundConfirmations",
1186
+ "type": "uint64"
1187
+ },
1188
+ {
1189
+ "internalType": "address",
1190
+ "name": "_relayer",
1191
+ "type": "address"
1192
+ }
1193
+ ],
1194
+ "name": "setDefaultOutboundConfig",
1195
+ "outputs": [],
1196
+ "stateMutability": "nonpayable",
1197
+ "type": "function"
1198
+ },
1199
+ {
1200
+ "inputs": [
1201
+ {
1202
+ "internalType": "address",
1203
+ "name": "_layerZeroToken",
1204
+ "type": "address"
1205
+ }
1206
+ ],
1207
+ "name": "setLayerZeroToken",
1208
+ "outputs": [],
1209
+ "stateMutability": "nonpayable",
1210
+ "type": "function"
1211
+ },
1212
+ {
1213
+ "inputs": [
1214
+ {
1215
+ "internalType": "address",
1216
+ "name": "_treasury",
1217
+ "type": "address"
1218
+ }
1219
+ ],
1220
+ "name": "setTreasury",
1221
+ "outputs": [],
1222
+ "stateMutability": "nonpayable",
1223
+ "type": "function"
1224
+ },
1225
+ {
1226
+ "inputs": [
1227
+ {
1228
+ "internalType": "address",
1229
+ "name": "newOwner",
1230
+ "type": "address"
1231
+ }
1232
+ ],
1233
+ "name": "transferOwnership",
1234
+ "outputs": [],
1235
+ "stateMutability": "nonpayable",
1236
+ "type": "function"
1237
+ },
1238
+ {
1239
+ "inputs": [],
1240
+ "name": "treasury",
1241
+ "outputs": [
1242
+ {
1243
+ "internalType": "address",
1244
+ "name": "",
1245
+ "type": "address"
1246
+ }
1247
+ ],
1248
+ "stateMutability": "view",
1249
+ "type": "function"
1250
+ },
1251
+ {
1252
+ "inputs": [],
1253
+ "name": "treasuryGasCap",
1254
+ "outputs": [
1255
+ {
1256
+ "internalType": "uint256",
1257
+ "name": "",
1258
+ "type": "uint256"
1259
+ }
1260
+ ],
1261
+ "stateMutability": "view",
1262
+ "type": "function"
1263
+ },
1264
+ {
1265
+ "inputs": [
1266
+ {
1267
+ "internalType": "address",
1268
+ "name": "",
1269
+ "type": "address"
1270
+ },
1271
+ {
1272
+ "internalType": "uint32",
1273
+ "name": "",
1274
+ "type": "uint32"
1275
+ }
1276
+ ],
1277
+ "name": "ulnConfig",
1278
+ "outputs": [
1279
+ {
1280
+ "internalType": "uint64",
1281
+ "name": "inboundConfirmations",
1282
+ "type": "uint64"
1283
+ },
1284
+ {
1285
+ "internalType": "bool",
1286
+ "name": "useCustomOracles",
1287
+ "type": "bool"
1288
+ },
1289
+ {
1290
+ "internalType": "bool",
1291
+ "name": "useCustomOptionalOracles",
1292
+ "type": "bool"
1293
+ },
1294
+ {
1295
+ "internalType": "uint16",
1296
+ "name": "oraclesCount",
1297
+ "type": "uint16"
1298
+ },
1299
+ {
1300
+ "internalType": "uint16",
1301
+ "name": "optionalOraclesCount",
1302
+ "type": "uint16"
1303
+ },
1304
+ {
1305
+ "internalType": "uint16",
1306
+ "name": "optionalOraclesThreshold",
1307
+ "type": "uint16"
1308
+ }
1309
+ ],
1310
+ "stateMutability": "view",
1311
+ "type": "function"
1312
+ },
1313
+ {
1314
+ "inputs": [],
1315
+ "name": "version",
1316
+ "outputs": [
1317
+ {
1318
+ "internalType": "uint64",
1319
+ "name": "major",
1320
+ "type": "uint64"
1321
+ },
1322
+ {
1323
+ "internalType": "uint8",
1324
+ "name": "minor",
1325
+ "type": "uint8"
1326
+ },
1327
+ {
1328
+ "internalType": "uint8",
1329
+ "name": "endpointVersion",
1330
+ "type": "uint8"
1331
+ }
1332
+ ],
1333
+ "stateMutability": "pure",
1334
+ "type": "function"
1335
+ },
1336
+ {
1337
+ "inputs": [
1338
+ {
1339
+ "internalType": "address",
1340
+ "name": "_to",
1341
+ "type": "address"
1342
+ },
1343
+ {
1344
+ "internalType": "uint256",
1345
+ "name": "_amount",
1346
+ "type": "uint256"
1347
+ }
1348
+ ],
1349
+ "name": "withdrawFee",
1350
+ "outputs": [],
1351
+ "stateMutability": "nonpayable",
1352
+ "type": "function"
1353
+ },
1354
+ {
1355
+ "inputs": [
1356
+ {
1357
+ "internalType": "address",
1358
+ "name": "_to",
1359
+ "type": "address"
1360
+ },
1361
+ {
1362
+ "internalType": "uint256",
1363
+ "name": "_amount",
1364
+ "type": "uint256"
1365
+ }
1366
+ ],
1367
+ "name": "withdrawLzTokenFee",
1368
+ "outputs": [],
1369
+ "stateMutability": "nonpayable",
1370
+ "type": "function"
1371
+ },
1372
+ {
1373
+ "stateMutability": "payable",
1374
+ "type": "receive"
1375
+ }
1376
+ ],
1377
+ "bytecode": "0x6101206040523480156200001257600080fd5b50604051620063bd380380620063bd83398101604081905262000035916200014c565b8360018484846000620000476200012b565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038516620000c35760405162461bcd60e51b8152600401620000ba90620001a8565b60405180910390fd5b606094851b6001600160601b031990811660805260e091821b6001600160e01b03191660a05260f89490941b7fff000000000000000000000000000000000000000000000000000000000000001660c0529190915290911b166101005250620001c992505050565b3390565b80516001600160a01b03811681146200014757600080fd5b919050565b6000806000806080858703121562000162578384fd5b6200016d856200012f565b93506020850151925062000184604086016200012f565b9150606085015163ffffffff811681146200019d578182fd5b939692955090935050565b60208082526007908201526604c5a31303030360cc1b604082015260600190565b60805160601c60a05160e01c60c05160f81c60e0516101005160601c61617662000247600039806108b052806122e252806131455250806109d452806127675250806108d4528061169452806135a852508061138c528061206b52806135f65250806113145280611ce75280611dc152806129b052506161766000f3fe6080604052600436106102e15760003560e01c8063726075371161017f578063df1e309f116100e1578063f2fde38b1161008a578063faaebd2111610064578063faaebd2114610841578063fd9be52214610861578063ff1632f514610881576102e8565b8063f2fde38b146107ec578063f8e1734c1461080c578063f921b71f1461082c576102e8565b8063eb53479c116100bb578063eb53479c146107a2578063ee4478ab146107b7578063f0f44260146107cc576102e8565b8063df1e309f1461074d578063e22670ed1461076d578063e9817f3414610782576102e8565b80638f58aa7a11610143578063c4c372461161011d578063c4c37246146106e0578063c57d1ab01461070d578063d18404bb1461072d576102e8565b80638f58aa7a14610680578063b9a99bed146106a0578063bf45f3dd146106c0576102e8565b8063726075371461060157806375b5152a146106165780637e09a8d6146106365780638acb8054146106565780638da5cb5b1461066b576102e8565b80634d3a0f7c1161024357806356fe19be116101ec578063690c6555116101c6578063690c6555146105ac5780636d26e5d0146105cc578063715018a6146105ec576102e8565b806356fe19be146105625780635e280f111461058257806361d027b314610597576102e8565b806352d3b5001161021d57806352d3b500146104ef578063545d1efa1461050f57806354fd4d501461053e576102e8565b80634d3a0f7c1461047d5780634f8f455c1461049057806352d2871f146104c2576102e8565b80632cfacb06116102a557806340a7bb101161027f57806340a7bb101461040e57806343ea4fa91461042e5780634a575bb71461045b576102e8565b80632cfacb061461039e5780632e8ea0a5146103b35780633c782a52146103e1576102e8565b806302bd9743146102ed5780630395b8da1461031857806307b9ca7c1461033a5780630f8355c01461034f5780631538bffa1461037c576102e8565b366102e857005b600080fd5b3480156102f957600080fd5b506103026108ae565b60405161030f9190615754565b60405180910390f35b34801561032457600080fd5b5061032d6108d2565b60405161030f9190615fef565b34801561034657600080fd5b506103026108f6565b34801561035b57600080fd5b5061036f61036a3660046152d8565b610905565b60405161030f9190615e63565b34801561038857600080fd5b50610391610917565b60405161030f9190615e7a565b3480156103aa57600080fd5b5061039161091c565b3480156103bf57600080fd5b506103d36103ce366004614de4565b610921565b60405161030f929190615e6c565b3480156103ed57600080fd5b506104016103fc366004614ffc565b610a2c565b60405161030f9190615f2c565b34801561041a57600080fd5b506103d361042936600461510d565b610a58565b34801561043a57600080fd5b5061044e610449366004614db0565b610c7a565b60405161030f9190615c85565b34801561046757600080fd5b5061047b610476366004615376565b610f8a565b005b61047b61048b366004614e34565b611312565b34801561049c57600080fd5b506104b06104ab366004614db0565b61187f565b60405161030f96959493929190615f8e565b3480156104ce57600080fd5b506104e26104dd3660046151a9565b6118de565b60405161030f91906158c2565b3480156104fb57600080fd5b5061047b61050a366004614d69565b611aed565b34801561051b57600080fd5b5061052f61052a366004614db0565b611b97565b60405161030f93929190615ebf565b34801561054a57600080fd5b50610553611bde565b60405161030f93929190615fcb565b34801561056e57600080fd5b5061047b61057d3660046150c4565b611be9565b34801561058e57600080fd5b50610302611dbf565b3480156105a357600080fd5b50610302611de3565b3480156105b857600080fd5b506104e26105c736600461530f565b611df2565b3480156105d857600080fd5b5061047b6105e73660046152a5565b611ef2565b3480156105f857600080fd5b5061047b611fbd565b34801561060d57600080fd5b50610391612069565b34801561062257600080fd5b5061052f6106313660046152d8565b61208d565b34801561064257600080fd5b5061047b610651366004615073565b6120c9565b34801561066257600080fd5b50610391612170565b34801561067757600080fd5b50610302612175565b34801561068c57600080fd5b5061047b61069b366004614d85565b612184565b3480156106ac57600080fd5b506104016106bb366004615255565b6122c8565b3480156106cc57600080fd5b5061047b6106db36600461532a565b61236b565b3480156106ec57600080fd5b506107006106fb366004614db0565b6124a8565b60405161030f9190615d3c565b34801561071957600080fd5b5061047b610728366004614fdf565b6125a9565b34801561073957600080fd5b506104b06107483660046152d8565b6125e4565b34801561075957600080fd5b5061047b6107683660046152f2565b612638565b34801561077957600080fd5b506103916126c0565b34801561078e57600080fd5b506104e261079d3660046152d8565b6126c5565b3480156107ae57600080fd5b50610391612760565b3480156107c357600080fd5b5061036f612765565b3480156107d857600080fd5b5061047b6107e7366004614d69565b612789565b3480156107f857600080fd5b5061047b610807366004614d69565b6128ac565b34801561081857600080fd5b5061047b6108273660046151e7565b6129ae565b34801561083857600080fd5b50610391612b3d565b34801561084d57600080fd5b5061036f61085c366004614d69565b612b42565b34801561086d57600080fd5b5061047b61087c366004614d85565b612b54565b34801561088d57600080fd5b506108a161089c366004615034565b612c9a565b60405161030f919061587e565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b60066020526000908152604090205481565b600581565b600381565b60025460009081906001600160a01b031615610a23576002546040516301f0099360e51b81526001600160a01b0390911690633e0132609061096d9089908990899089906004016157c1565b60206040518083038186803b15801561098557600080fd5b505afa9250505080156109b5575060408051601f3d908101601f191682019092526109b2918101906152c0565b60015b6109be57610a23565b83156109cc57809150610a21565b60006109f83a7f0000000000000000000000000000000000000000000000000000000000000000612cc9565b90506000818711610a095781610a0b565b865b9050808311610a1a5782610a1c565b805b945050505b505b94509492505050565b600a6020908152600093845260408085208252928452828420905282529020546001600160401b031681565b6000808681610a6b8261ffff8c166124a8565b80519091508790610a8390829063ffffffff16612d22565b8551610b295761ffff8b1660009081526005602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b505050505095505b606080600088511115610b8657610b3f88612d46565b9150600161ffff1682600081518110610b5457fe5b60200260200101516000015161ffff161415610b865781600081518110610b7757fe5b60200260200101516020015190505b6040808501519051631c27ad9960e21b815261ffff8f16918b916000916001600160a01b03169063709eb66490610bc79086908c908b908a90600401615e8b565b60206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1791906152c0565b90506000610c2b8985888b60200151612f15565b9050610c378282612f72565b9150600080610c488b878688610921565b90925090508115610c6057610c5d8483612f72565b93505b929b50919950505050505050505050965096945050505050565b610c82614a51565b6001600160a01b038316600090815260086020908152604080832063ffffffff86168452825280832081516101008101835281546001600160401b038116825260ff600160401b82048116151583870152600160481b82041615158285015261ffff600160501b820481166060840152600160601b820481166080840152600160701b9091041660a08201526001820180548451818702810187019095528085529194929360c0860193909290830182828015610d6857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4a575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610dca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dac575b5050509190925250505063ffffffff841660009081526009602052604090208054919250906001600160401b0316610e1d5760405162461bcd60e51b8152600401610e1490615c0c565b60405180910390fd5b81516001600160401b0316610e3a5780546001600160401b031682525b8160200151610eb85780600101805480602002602001604051908101604052809291908181526020018280548015610e9b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e7d575b505050505060c08301528054600160501b900461ffff1660608301525b8160400151610f455780600201805480602002602001604051908101604052809291908181526020018280548015610f1957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610efb575b505050505060e0830152805461ffff600160601b820481166080850152600160701b9091041660a08301525b6000826060015161ffff161180610f64575060008260a0015161ffff16115b610f805760405162461bcd60e51b8152600401610e149061592f565b5090505b92915050565b610f92612fcc565b6001600160a01b0316610fa3612175565b6001600160a01b031614610fec576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b83826001600160401b0388166110145760405162461bcd60e51b8152600401610e1490615b5c565b61ffff8211158015611028575061ffff8111155b80156110385750808361ffff1611155b6110545760405162461bcd60e51b8152600401610e1490615c64565b6000821180611067575060008361ffff16115b6110835760405162461bcd60e51b8152600401610e1490615b7d565b6110c1878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612fd0915050565b6110ff858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250612fd0915050565b604051806101000160405280896001600160401b031681526020016000151581526020016000151581526020018361ffff1681526020018261ffff1681526020018461ffff1681526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208881028281018201909352888252928301929091899189918291850190849080828437600092018290525093909452505063ffffffff8c168152600960209081526040918290208451815486840151948701516060880151608089015160a08a015167ffffffffffffffff199094166001600160401b039095169490941768ff00000000000000001916600160401b971515979097029690961769ff0000000000000000001916600160481b911515919091021761ffff60501b1916600160501b61ffff968716021761ffff60601b1916600160601b928616929092029190911761ffff60701b1916600160701b949091169390930292909217825560c0840151805192935061129f9260018501929190910190614a97565b5060e082015180516112bb916002840191602090910190614a97565b509050508863ffffffff167fcefc09e599b8a950c1c6a0e233dfd90adac40718fb137ced2ec19d472b8e2a208989898989896040516112ff96959493929190615f40565b60405180910390a2505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461135a5760405162461bcd60e51b8152600401610e1490615af9565b8960008061136a838c8c8c61302f565b9150915060006040518060c00160405280846001600160401b031681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018f6001600160a01b031681526020018d61ffff1663ffffffff1681526020018381526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050606060008d61ffff16905060008751600014156114de5763ffffffff821660009081526005602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114d65780601f106114ab576101008083540402835291602001916114d6565b820191906000526020600020905b8154815290600101906020018083116114b957829003601f168201915b505050505097505b875160609015611538576114f189612d46565b9350600161ffff168460008151811061150657fe5b60200260200101516000015161ffff161415611538578360008151811061152957fe5b60200260200101516020015190505b600061154489856124a8565b80519091508d9061155c90829063ffffffff16612d22565b81604001516001600160a01b031663717e8a42868c84876040518563ffffffff1660e01b81526004016115929493929190615e8b565b602060405180830381600087803b1580156115ac57600080fd5b505af11580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906152c0565b9350831561162d576040808301516001600160a01b03166000908152600760205220546116119085612f72565b6040808401516001600160a01b03166000908152600760205220555b7f489a11bf9dbfc4407f7d03d118ac6bc81743af9e1189f9d3dc336415fa49cc898260400151856040516116629291906157a8565b60405180910390a1600061167b888885602001516131d0565b90506116878582612f72565b94505050505060006116b97f000000000000000000000000000000000000000000000000000000000000000086613268565b9150506116c6818a612d42565b8960006001600160a01b03821615806116e857506001546001600160a01b0316155b90506000806116fa8c88888615610921565b90925090508115611752576002546001600160a01b031660009081526007602052604090205461172a9083612f72565b6002546001600160a01b031660009081526007602052604090205561174f8683612f72565b95505b8e348711156117735760405162461bcd60e51b8152600401610e1490615992565b600061177f34896132dc565b90508015611805576000826001600160a01b0316826040516117a090614188565b60006040518083038185875af1925050503d80600081146117dd576040519150601f19603f3d011682016040523d82523d6000602084013e6117e2565b606091505b50509050806118035760405162461bcd60e51b8152600401610e1490615971565b505b841580156118135750600083115b15611824576118248e87858d613339565b6040518f907f3dc6f2ede34d1db05729bbb76e5efd17ec1bc83f98f665e7fba0596dca438b969061185c908a9084908d9089906158d5565b60405180910390a150505050505050505050505050505050505050505050505050565b60086020908152600092835260408084209091529082529020546001600160401b0381169060ff600160401b8204811691600160481b81049091169061ffff600160501b8204811691600160601b8104821691600160701b9091041686565b60606001821415611993576001600160a01b038316600090815260046020908152604080832061ffff881684529091529020805463ffffffff166119645761ffff851660009081526003602090815260409182902080549251909261194c9263ffffffff9091169101615e7a565b60405160208183030381529060405292505050611ae6565b805460405161197c9163ffffffff1690602001615e7a565b604051602081830303815290604052915050611ae6565b6002821415611a37576001600160a01b038316600090815260046020908152604080832061ffff881684529091529020805464010000000090046001600160401b0316611a145761ffff851660009081526003602090815260409182902080549251909261194c926401000000009091046001600160401b03169101615f2c565b805460405161197c9164010000000090046001600160401b031690602001615f2c565b6003821415611ad4576001600160a01b03808416600090815260046020908152604080832061ffff89168452909152902080549091600160601b90910416611ab25761ffff851660009081526003602090815260409182902080549251909261194c92600160601b9091046001600160a01b03169101615754565b805460405161197c91600160601b90046001600160a01b031690602001615754565b611ae38461ffff1684846133fd565b90505b9392505050565b611af5612fcc565b6001600160a01b0316611b06612175565b6001600160a01b031614611b4f576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6001600160a01b038116611b755760405162461bcd60e51b8152600401610e1490615a80565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000081046001600160401b031690600160601b90046001600160a01b031683565b600360006001909192565b6000611bf5848461340a565b90506000611c03858561341e565b90506000611c118686613455565b61ffff831660009081526006602052604081205491925090611c3490839061349b565b90506000611c428888613521565b90506000611c508989613567565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611c9692508991505061ffff8816610c7a565b9050611ca3818b8b613583565b611cbf5760405162461bcd60e51b8152600401610e1490615b5c565b60008488604051602001611cd492919061557d565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2fa481388838b888e896040518763ffffffff1660e01b8152600401611d3b96959493929190615e03565b600060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b5050845160208601206040517f50b692b5a452ba389a1da4cc93baae90524edbf9f80fbb52532915be89b735da9350611daa92508a918a918d918a91615daa565b60405180910390a15050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b606063ffffffff821660011415611e465763ffffffff808416600090815260036020908152604091829020805492519093611e2f93169101615e7a565b604051602081830303815290604052915050610f84565b63ffffffff821660021415611e915763ffffffff8316600090815260036020908152604091829020805492519092611e2f926401000000009091046001600160401b03169101615f2c565b63ffffffff821660031415611edb5763ffffffff8316600090815260036020908152604091829020805492519092611e2f92600160601b9091046001600160a01b03169101615754565b611eeb838363ffffffff166137f2565b9050610f84565b611efa612fcc565b6001600160a01b0316611f0b612175565b6001600160a01b031614611f54576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6020811115611f755760405162461bcd60e51b8152600401610e1490615c64565b61ffff821660009081526006602052604090205415611fa65760405162461bcd60e51b8152600401610e1490615a80565b61ffff909116600090815260066020526040902055565b611fc5612fcc565b6001600160a01b0316611fd6612175565b6001600160a01b03161461201f576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205463ffffffff81169064010000000081046001600160401b031690600160601b90046001600160a01b031683565b80600a600086866040516120de92919061556d565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529352819020805467ffffffffffffffff19166001600160401b03949094169390931790925590517fd57606ee258836ec1b40f83a128d2b514581eaf4f71801fbed3bc94b5358ecc091612162918790879086908890615768565b60405180910390a150505050565b600681565b6000546001600160a01b031690565b6002546001600160a01b031633146121ae5760405162461bcd60e51b8152600401610e1490615af9565b6001600160a01b0382166121d45760405162461bcd60e51b8152600401610e1490615b5c565b6001546001600160a01b03166121fc5760405162461bcd60e51b8152600401610e1490615b3b565b60015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061222e90859085906004016157a8565b602060405180830381600087803b15801561224857600080fd5b505af115801561225c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122809190614f19565b50336001600160a01b03167f8cf37e4234df20b9845dc6d1ed5edb4ca4ca10e3515e92514d14f0002c48c02683836040516122bc9291906157a8565b60405180910390a25050565b60405163c533338f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c533338f9061231b90879087908790600401615de5565b60206040518083038186803b15801561233357600080fd5b505afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae39190615432565b612373612fcc565b6001600160a01b0316612384612175565b6001600160a01b0316146123cd576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6000826001600160401b03161180156123ee57506001600160a01b03811615155b61240a5760405162461bcd60e51b8152600401610e1490615b5c565b60008363ffffffff16116124305760405162461bcd60e51b8152600401610e1490615c64565b63ffffffff938416600090815260036020526040902080546bffffffffffffffffffffffff16600160601b6001600160a01b0393909316929092029190911763ffffffff191692909316919091176bffffffffffffffff0000000019166401000000006001600160401b039290921691909102179055565b6124b0614afc565b6001600160a01b03808416600090815260046020908152604080832063ffffffff808816808652918452828520835160608082018652915480841682526001600160401b036401000000008083048216848a0152600160601b928390048b1684890152958952600388529786902086519384018752548085168452948504909716958201959095529490910490941690830152805190921661255757805163ffffffff1682525b60208201516001600160401b031661257d576020808201516001600160401b0316908301525b60408201516001600160a01b0316610f80576040908101516001600160a01b0316908201529392505050565b336001600160a01b03167ff70f667bf53155c301a4abbdadaabddfbd3afbabbefc7e7ca6ad37b81756c60983836040516122bc929190615889565b6009602052600090815260409020546001600160401b0381169060ff600160401b8204811691600160481b81049091169061ffff600160501b8204811691600160601b8104821691600160701b9091041686565b612640612fcc565b6001600160a01b0316612651612175565b6001600160a01b03161461269a576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b63ffffffff831660009081526005602052604090206126ba908383614b1c565b50505050565b600181565b60056020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156127585780601f1061272d57610100808354040283529160200191612758565b820191906000526020600020905b81548152906001019060200180831161273b57829003601f168201915b505050505081565b600481565b7f000000000000000000000000000000000000000000000000000000000000000081565b612791612fcc565b6001600160a01b03166127a2612175565b6001600160a01b0316146127eb576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6040516301ffc9a760e01b81526001600160a01b038216906301ffc9a79061281e906301f0099360e51b90600401615899565b60206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e9190614f19565b61288a5760405162461bcd60e51b8152600401610e1490615ad8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6128b4612fcc565b6001600160a01b03166128c5612175565b6001600160a01b03161461290e576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6001600160a01b0381166129535760405162461bcd60e51b81526004018080602001828103825260268152602001806160b06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146129f65760405162461bcd60e51b8152600401610e1490615af9565b6001831415612a52576000612a0d828401846152d8565b6001600160a01b038616600090815260046020908152604080832061ffff8b1684529091529020805463ffffffff191663ffffffff9290921691909117905550612b36565b6002831415612ac1576000612a6982840184615416565b6001600160a01b038616600090815260046020908152604080832061ffff8b168452909152902080546001600160401b03909216640100000000026bffffffffffffffff000000001990921691909117905550612b36565b6003831415612b25576000612ad882840184614d69565b6001600160a01b03808716600090815260046020908152604080832061ffff8c1684529091529020805491909216600160601b026bffffffffffffffffffffffff90911617905550612b36565b612b368561ffff16858585856137fe565b5050505050565b600281565b60076020526000908152604090205481565b6001600160a01b038216612b7a5760405162461bcd60e51b8152600401610e1490615b5c565b33600090815260076020526040902054811115612ba95760405162461bcd60e51b8152600401610e1490615992565b33600090815260076020526040902054612bc390826132dc565b336000908152600760205260408082209290925590516001600160a01b038416908390612bef90614188565b60006040518083038185875af1925050503d8060008114612c2c576040519150601f19603f3d011682016040523d82523d6000602084013e612c31565b606091505b5050905080612c525760405162461bcd60e51b8152600401610e1490615971565b336001600160a01b03167ff15a0a3784dea9b4fe33bc98e2450745e262d310237b2868ea8ef56967ff3ecb8484604051612c8d9291906157a8565b60405180910390a2505050565b600080612cb4612caa858561340a565b610449868661380b565b9050612cc1818585613583565b949350505050565b600082612cd857506000610f84565b82820282848281612ce557fe5b0414611ae65760405162461bcd60e51b81526004018080602001828103825260218152602001806160d66021913960400191505060405180910390fd5b80821115612d425760405162461bcd60e51b8152600401610e1490615c64565b5050565b60606000612d548382613851565b905061ffff811660011480612d6d575061ffff81166002145b15612d8c576000612d828261ffff1685613880565b9250612f10915050565b8061ffff1660031415612ef8576000612da6846002613851565b905060008161ffff166001600160401b0381118015612dc457600080fd5b50604051908082528060200260200182016040528015612dfe57816020015b612deb614b98565b815260200190600190039081612de35790505b50905060046000805b8461ffff16811015612eca576000612e1f8985613851565b90506002840193508160001480612e3d57508261ffff168161ffff16115b612e595760405162461bcd60e51b8152600401610e1490615950565b9150816000612e688a86613851565b905060028501945060405180604001604052808361ffff168152602001612e9e878461ffff168e613b069092919063ffffffff16565b815250868481518110612ead57fe5b602090810291909101015261ffff16939093019250600101612e07565b5086518214612eeb5760405162461bcd60e51b8152600401610e1490615c64565b8295505050505050612f10565b60405162461bcd60e51b8152600401610e1490615b1a565b919050565b600080612f228686610c7a565b90506000612f31856002613bc0565b92505050612f4b8260c00151836060015189898589613c46565b83019250612f658260e00151836080015189898589613c46565b9092019695505050505050565b600082820183811015611ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6000805b828110156126ba576000848281518110612fea57fe5b60200260200101519050826001600160a01b0316816001600160a01b0316116130255760405162461bcd60e51b8152600401610e1490615950565b9150600101612fd4565b61ffff83166000908152600660205260408120548190801580159061305657506014810184145b6130725760405162461bcd60e51b8152600401610e1490615c64565b60008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505083810160140151925090506001600160a01b03898116908316146130e15760405162461bcd60e51b8152600401610e1490615b5c565b61312b6130f1846000898b616020565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d0292505050565b604051636fe7b67360e01b81529094506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636fe7b6739061317e908b908d908690600401615d75565b602060405180830381600087803b15801561319857600080fd5b505af11580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190615432565b6000806131e36060860160408701614d69565b905060006131fb826104496080890160608a016152d8565b9050600061320a866002613bc0565b925050506132368260c001518360600151858a606001602081019061322f91906152d8565b858a613d3d565b8401935061325b8260e001518360800151858a606001602081019061322f91906152d8565b9093019695505050505050565b600060606000836000015161327c85613edd565b60405160200161328d9291906156d2565b6040516020818303038152906040529050808051906020012092508481848660a001516040516020016132c39493929190615707565b6040516020818303038152906040529150509250929050565b600082821115613333576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b836001600160a01b0316836001600160a01b0316148061336157506001600160a01b03831632145b61337d5760405162461bcd60e51b8152600401610e1490615b5c565b60008061338e8361ffff6001613f24565b91509150816133af5760405162461bcd60e51b8152600401610e1490615b5c565b60006133ba82613f80565b9050808511156133dc5760405162461bcd60e51b8152600401610e1490615992565b6001546133f4906001600160a01b0316873088613fae565b50505050505050565b6060611ae384848461401d565b6000611ae66134198484614142565b614188565b60008061342b848461380b565b905061ffff63ffffffff82161115611ae65760405162461bcd60e51b8152600401610e1490615c64565b6000611ae6600d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061418b9050565b60606000821180156134ae575060208211155b6134ca5760405162461bcd60e51b8152600401610e1490615c64565b6000826001600160401b03811180156134e257600080fd5b506040519080825280601f01601f19166020018201604052801561350d576020820181803683370190505b506020849003850151815291505092915050565b6000611ae6600184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506141ba9050565b3660006135778360718187616020565b915091505b9250929050565b600060718210156135a65760405162461bcd60e51b8152600401610e1490615c64565b7f000000000000000000000000000000000000000000000000000000000000000060ff166135d484846141e9565b60ff16146135f45760405162461bcd60e51b8152600401610e149061590e565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16613625848461422f565b63ffffffff16146136485760405162461bcd60e51b8152600401610e1490615c0c565b60006136548484614275565b805190602001209050600061366985856142c1565b60405161367792919061556d565b604051908190039020865190915060005b876060015161ffff168110156137115760008860c0015182815181106136aa57fe5b6020908102919091018101516000878152600a8352604080822088835284528082206001600160a01b038416835290935291909120549091506001600160401b039081169084168110156137075760009650505050505050611ae6565b5050600101613688565b506000876060015161ffff161180156137305750608087015161ffff16155b156137415760019350505050611ae6565b6000805b886080015161ffff168110156137e35760008960e00151828151811061376757fe5b6020908102919091018101516000888152600a8352604080822089835284528082206001600160a01b038416835290935291909120549091506001600160401b0390811690851681106137d95760a08b015160019094019361ffff1684106137d9576001975050505050505050611ae6565b5050600101613745565b50600098975050505050505050565b6060611ae683836142d1565b612b368585858585614356565b6000611ae6600984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506145b09050565b600081600201835110156138775760405162461bcd60e51b8152600401610e14906159b3565b50016002015190565b604080516001808252818301909252606091816020015b61389f614b98565b815260200190600190039081613897579050509050606060018414156139695782516022146138e05760405162461bcd60e51b8152600401610e1490615c64565b60006138ed8460026145df565b90506001600160801b038111156139165760405162461bcd60e51b8152600401610e1490615c64565b60016040516020016139289190615686565b60405160208183030381529060405291508160016010836040516020016139529493929190615606565b604051602081830303815290604052915050613acd565b6002841415612ef8576042835111801561398557506062835111155b6139a15760405162461bcd60e51b8152600401610e1490615c64565b60006139ae8460026145df565b90506001600160801b038111156139d75760405162461bcd60e51b8152600401610e1490615c64565b60006139e48560226145df565b90506001600160801b03811115613a0d5760405162461bcd60e51b8152600401610e1490615c64565b600060428651039050600081602003600082526062880151818301525060008382604051602001613a3f929190615660565b60405160208183030381529060405290506002604051602001613a629190615686565b6040516020818303038152906040529550856001601087604051602001613a8c9493929190615606565b6040516020818303038152906040529550856002825183604051602001613ab694939291906155b4565b604051602081830303815290604052955050505050505b6040518060400160405280600161ffff1681526020018281525082600081518110613af457fe5b60200260200101819052505092915050565b60608182601f011015613b2b5760405162461bcd60e51b8152600401610e1490615a21565b81830184511015613b4e5760405162461bcd60e51b8152600401610e1490615b9e565b606082158015613b6d5760405191506000825260208201604052613bb7565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613ba6578051835260209283019201613b8e565b5050858452601f01601f1916604052505b50949350505050565b600080606060005b8551811015613c27578461ffff16868281518110613be257fe5b60200260200101516000015161ffff161415613c1f57600181878381518110613c0757fe5b60200260200101516020015193509350935050613c3f565b600101613bc8565b50506040805160208101909152600080825292508291505b9250925092565b6000805b8661ffff16811015613cf757878181518110613c6257fe5b60200260200101516001600160a01b03166330bb3aac868589886040518563ffffffff1660e01b8152600401613c9b9493929190615eef565b60206040518083038186803b158015613cb357600080fd5b505afa158015613cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ceb91906152c0565b90910190600101613c4a565b509695505050505050565b6000602082511115613d265760405162461bcd60e51b8152600401610e1490615c64565b815160008252602092830151920381019190915290565b6000808661ffff166001600160401b0381118015613d5a57600080fd5b50604051908082528060200260200182016040528015613d84578160200160208202803683370190505b50905060005b8761ffff16811015613e98576000898281518110613da457fe5b60200260200101516001600160a01b031663e4fbd90388878b8a6040518563ffffffff1660e01b8152600401613ddd9493929190615eef565b602060405180830381600087803b158015613df757600080fd5b505af1158015613e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2f91906152c0565b905080838381518110613e3e57fe5b60209081029190910101528015613e8f5780600760008c8581518110613e6057fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002080549091019055928301925b50600101613d8a565b507f4a4f9b55e84c19345500ad54202240b345f195977a3aa5cd6c4d108cf90f8f808882604051613eca9291906157ef565b60405180910390a1509695505050505050565b60608160200151613ef18360400151614605565b83606001518460800151604051602001613f0e949392919061569e565b6040516020818303038152906040529050919050565b60006060600080613f358787613bc0565b925050915081613f5c57600060405180602001604052806000815250935093505050613f78565b613f6e613f6882614611565b8661474e565b9195509093505050505b935093915050565b60008151602014613fa35760405162461bcd60e51b8152600401610e1490615c64565b610f848260006145df565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526126ba90859061479d565b6001600160a01b038216600090815260086020908152604080832063ffffffff87168452825280832060099092529091206060919060048414156140a05781546001600160401b031661408557805460405161194c916001600160401b031690602001615f2c565b815460405161194c916001600160401b031690602001615f2c565b60058414156140e2578154600160401b900460ff16156140ce578160010160405160200161194c9190615845565b8060010160405160200161194c9190615845565b6006841415612ef8578154600160481b900460ff161561411f57815460405161194c916002850191600160701b90910461ffff1690602001615858565b805460405161194c916002840191600160701b90910461ffff1690602001615858565b6000611ae6603184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061418b9050565b90565b600081602001835110156141b15760405162461bcd60e51b8152600401610e1490615aa1565b50016020015190565b600081600801835110156141e05760405162461bcd60e51b8152600401610e14906159ea565b50016008015190565b6000611ae6600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506148539050565b6000611ae6602d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506145b09050565b6060614285605160008486616020565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b3660006135778360518187616020565b63ffffffff82166000908152600960205260409020606090600483141561430d578054604051611e2f916001600160401b031690602001615f2c565b600583141561432a5780600101604051602001611e2f9190615845565b6006831415612ef8578054604051611e2f916002840191600160701b90910461ffff1690602001615858565b6001600160a01b038416600090815260086020908152604080832063ffffffff89168452909152902060048414156143b857600061439683850185615416565b825467ffffffffffffffff19166001600160401b039190911617825550614564565b6005841415614471576000806143d084860186614f35565b805191935091506000836143e55781156143ec565b61ffff8211155b90508061440b5760405162461bcd60e51b8152600401610e1490615c64565b6144158383612fd0565b845461ffff60501b1916600160501b61ffff84160217855582516144429060018701906020860190614a97565b50845468ff00000000000000001916600160401b85151502178555614467898b610c7a565b5050505050614564565b6006841415612ef8576000808061448a85870187614f82565b815192955090935091506000846144a25781156144a9565b61ffff8211155b9050806144c85760405162461bcd60e51b8152600401610e1490615c64565b818361ffff1611156144ec5760405162461bcd60e51b8152600401610e1490615992565b6144f68483612fd0565b855461ffff60601b1916600160601b61ffff84160217865583516145239060028801906020870190614a97565b50855461ffff60701b1916600160701b61ffff8516021769ff0000000000000000001916600160481b8615150217865561455d8a8c610c7a565b5050505050505b83856001600160a01b03167f32a52e909bac91be27e4f3ddb96c51d9484dd2323a9f358d11ef8c35298196cc85856040516145a09291906158ae565b60405180910390a3505050505050565b600081600401835110156145d65760405162461bcd60e51b8152600401610e1490615c2d565b50016004015190565b600081602001835110156141b15760405162461bcd60e51b8152600401610e1490615a49565b6001600160a01b031690565b60606000806146208482613851565b905060028201915060008161ffff166001600160401b038111801561464457600080fd5b5060405190808252806020026020018201604052801561467e57816020015b61466b614b98565b8152602001906001900390816146635790505b5090506000805b8361ffff168161ffff1610156147435760006146a18887613851565b90506002860195508261ffff168161ffff16116146d05760405162461bcd60e51b8152600401610e1490615950565b91508160006146df8988613851565b60029790970196905060006146f98a8961ffff8516613b06565b90508161ffff168801975060405180604001604052808461ffff16815260200182815250868561ffff168151811061472d57fe5b6020908102919091010152505050600101614685565b509095945050505050565b600080606060005b8551811015613c27578461ffff1686828151811061477057fe5b60200260200101516000015161ffff16141561479557600181878381518110613c0757fe5b600101614756565b60006147f2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148829092919063ffffffff16565b80519091501561484e5780806020019051602081101561481157600080fd5b505161484e5760405162461bcd60e51b815260040180806020018281038252602a815260200180616117602a913960400191505060405180910390fd5b505050565b600081600101835110156148795760405162461bcd60e51b8152600401610e1490615bd5565b50016001015190565b6060611ae3848460008585614896856149a7565b6148e7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106149255780518252601f199092019160209182019101614906565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614987576040519150601f19603f3d011682016040523d82523d6000602084013e61498c565b606091505b509150915061499c8282866149ad565b979650505050505050565b3b151590565b606083156149bc575081611ae6565b8251156149cc5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a165781810151838201526020016149fe565b50505050905090810190601f168015614a435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b828054828255906000526020600020908101928215614aec579160200282015b82811115614aec57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614ab7565b50614af8929150614bb0565b5090565b604080516060810182526000808252602082018190529181019190915290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614b525760008555614aec565b82601f10614b6b5782800160ff19823516178555614aec565b82800160010185558215614aec579182015b82811115614aec578235825591602001919060010190614b7d565b60408051808201909152600081526060602082015290565b5b80821115614af85760008155600101614bb1565b8035612f1081616074565b60008083601f840112614be1578182fd5b5081356001600160401b03811115614bf7578182fd5b602083019150836020808302850101111561357c57600080fd5b600082601f830112614c21578081fd5b813560206001600160401b03821115614c3657fe5b808202614c44828201615ffd565b838152828101908684018388018501891015614c5e578687fd5b8693505b85841015614c89578035614c7581616074565b835260019390930192918401918401614c62565b50979650505050505050565b60008083601f840112614ca6578182fd5b5081356001600160401b03811115614cbc578182fd5b60208301915083602082850101111561357c57600080fd5b600082601f830112614ce4578081fd5b81356001600160401b03811115614cf757fe5b614d0a601f8201601f1916602001615ffd565b818152846020838601011115614d1e578283fd5b816020850160208301379081016020019190915292915050565b803561ffff81168114612f1057600080fd5b803563ffffffff81168114612f1057600080fd5b8035612f108161609a565b600060208284031215614d7a578081fd5b8135611ae681616074565b60008060408385031215614d97578081fd5b8235614da281616074565b946020939093013593505050565b60008060408385031215614dc2578182fd5b8235614dcd81616074565b9150614ddb60208401614d4a565b90509250929050565b60008060008060808587031215614df9578182fd5b8435614e0481616074565b9350614e1260208601614d4a565b9250604085013591506060850135614e298161608c565b939692955090935050565b6000806000806000806000806000806101008b8d031215614e53578586fd5b614e5c8b614bc5565b9950614e6a60208c01614d5e565b9850614e7860408c01614d38565b975060608b01356001600160401b0380821115614e93578788fd5b614e9f8e838f01614c95565b909950975060808d0135915080821115614eb7578687fd5b614ec38e838f01614c95565b9097509550859150614ed760a08e01614bc5565b9450614ee560c08e01614bc5565b935060e08d0135915080821115614efa578283fd5b50614f078d828e01614cd4565b9150509295989b9194979a5092959850565b600060208284031215614f2a578081fd5b8151611ae68161608c565b60008060408385031215614f47578182fd5b8235614f528161608c565b915060208301356001600160401b03811115614f6c578182fd5b614f7885828601614c11565b9150509250929050565b600080600060608486031215614f96578081fd5b8335614fa18161608c565b925060208401356001600160401b03811115614fbb578182fd5b614fc786828701614c11565b925050614fd660408501614d38565b90509250925092565b60008060408385031215614ff1578182fd5b8235614da28161608c565b600080600060608486031215615010578081fd5b8335925060208401359150604084013561502981616074565b809150509250925092565b60008060208385031215615046578182fd5b82356001600160401b0381111561505b578283fd5b61506785828601614c95565b90969095509350505050565b60008060008060608587031215615088578182fd5b84356001600160401b0381111561509d578283fd5b6150a987828801614c95565b909550935050602085013591506040850135614e298161609a565b6000806000604084860312156150d8578081fd5b83356001600160401b038111156150ed578182fd5b6150f986828701614c95565b909790965060209590950135949350505050565b60008060008060008060a08789031215615125578384fd5b61512e87614d38565b9550602087013561513e81616074565b945060408701356001600160401b0380821115615159578586fd5b6151658a838b01614c95565b90965094506060890135915061517a8261608c565b9092506080880135908082111561518f578283fd5b5061519c89828a01614cd4565b9150509295509295509295565b6000806000606084860312156151bd578081fd5b6151c684614d38565b925060208401356151d681616074565b929592945050506040919091013590565b6000806000806000608086880312156151fe578283fd5b61520786614d38565b9450602086013561521781616074565b93506040860135925060608601356001600160401b03811115615238578182fd5b61524488828901614c95565b969995985093965092949392505050565b600080600060408486031215615269578081fd5b61527284614d38565b925060208401356001600160401b0381111561528c578182fd5b61529886828701614c95565b9497909650939450505050565b600080604083850312156152b7578182fd5b614da283614d38565b6000602082840312156152d1578081fd5b5051919050565b6000602082840312156152e9578081fd5b611ae682614d4a565b600080600060408486031215615306578081fd5b61527284614d4a565b60008060408385031215615321578182fd5b614dcd83614d4a565b6000806000806080858703121561533f578182fd5b61534885614d4a565b935061535660208601614d4a565b925060408501356153668161609a565b91506060850135614e2981616074565b600080600080600080600060a0888a031215615390578081fd5b61539988614d4a565b965060208801356153a98161609a565b955060408801356001600160401b03808211156153c4578283fd5b6153d08b838c01614bd0565b909750955060608a01359150808211156153e8578283fd5b506153f58a828b01614bd0565b9094509250615408905060808901614d38565b905092959891949750929550565b600060208284031215615427578081fd5b8135611ae68161609a565b600060208284031215615443578081fd5b8151611ae68161609a565b60008284526020808501945082825b8581101561548b57813561547081616074565b6001600160a01b03168752958201959082019060010161545d565b509495945050505050565b6000815180845260208085019450808401835b8381101561548b5781516001600160a01b0316875295820195908201906001016154a9565b6000815480845260208085019450838352808320835b8381101561548b5781546001600160a01b0316875295820195600191820191016154e4565b15159052565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452615551816020860160208601616048565b601f01601f19169290920160200192915050565b61ffff169052565b6000828483379101908152919050565b6000835161558f818460208801616048565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b600085516155c6818460208a01616048565b6001600160f01b031960f087811b821692850192835286901b16600282015283516155f8816004840160208801616048565b016004019695505050505050565b60008551615618818460208a01616048565b60f095861b6001600160f01b0319908116939091019283529390941b909216600283015260801b6fffffffffffffffffffffffffffffffff1916600482015260140192915050565b60809290921b6fffffffffffffffffffffffffffffffff19168252601082015260300190565b60f09190911b6001600160f01b031916815260020190565b6001600160e01b031960e095861b8116825260048201949094529190931b9091166024820152602881019190915260480190565b60006001600160401b0360c01b8460c01b16825282516156f9816008850160208701616048565b919091016008019392505050565b600060ff60f81b8660f81b1682528451615728816001850160208901616048565b80830190508460018201528351615746816021840160208801616048565b016021019695505050505050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682526080602083015261578b60808301868861550f565b6001600160401b0394909416604083015250606001529392505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845263ffffffff92909216602084015260408301521515606082015260800190565b6000604082526158026040830185615496565b828103602084810191909152845180835285820192820190845b818110156158385784518352938301939183019160010161581c565b5090979650505050505050565b600060208252611ae660208301846154ce565b60006040825261586b60408301856154ce565b905061ffff831660208301529392505050565b901515815260200190565b9115158252602082015260400190565b6001600160e01b031991909116815260200190565b600060208252611ae360208301848661550f565b600060208252611ae66020830184615539565b6000608082526158e86080830187615539565b82810360208401526158fa8187615539565b604084019590955250506060015292915050565b6020808252600790820152664c5a313030303760c81b604082015260600190565b6020808252600790820152664c5a443030303560c81b604082015260600190565b602080825260079082015266262d189818181b60c91b604082015260600190565b60208082526007908201526604c5a33303030360cc1b604082015260600190565b6020808252600790820152664c5a313030303360c81b604082015260600190565b60208082526014908201527f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000604082015260600190565b60208082526014908201527f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000604082015260600190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b60208082526015908201527f746f55696e743235365f6f75744f66426f756e64730000000000000000000000604082015260600190565b60208082526007908201526604c5a38303030360cc1b604082015260600190565b60208082526015908201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604082015260600190565b6020808252600790820152664c5a433030303160c81b604082015260600190565b60208082526007908201526604c5a35303030360cc1b604082015260600190565b60208082526007908201526604c5a43303030360cc1b604082015260600190565b6020808252600790820152664c5a443030303360c81b604082015260600190565b60208082526007908201526604c5a31303030360cc1b604082015260600190565b6020808252600790820152664c5a313030313160c81b604082015260600190565b60208082526011908201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604082015260600190565b60208082526013908201527f746f55696e74385f6f75744f66426f756e647300000000000000000000000000604082015260600190565b602080825260079082015266098b462606060760cb1b604082015260600190565b60208082526014908201527f746f55696e7433325f6f75744f66426f756e6473000000000000000000000000604082015260600190565b6020808252600790820152664c5a313030303960c81b604082015260600190565b6000602082526001600160401b0383511660208301526020830151615cad6040840182615509565b506040830151615cc06060840182615509565b506060830151615cd36080840182615565565b506080830151615ce660a0840182615565565b5060a0830151615cf960c0840182615565565b5060c08301516101008060e0850152615d16610120850183615496565b915060e0850151601f198584030182860152615d328382615496565b9695505050505050565b815163ffffffff1681526020808301516001600160401b0316908201526040918201516001600160a01b03169181019190915260600190565b600061ffff851682526001600160a01b038416602083015260606040830152615da16060830184615539565b95945050505050565b61ffff95909516855260208501939093526001600160a01b039190911660408401526001600160401b03166060830152608082015260a00190565b600061ffff8516825260406020830152615da160408301848661550f565b600061ffff8816825260c06020830152615e2060c0830188615539565b6001600160a01b03871660408401526001600160401b038616606084015284608084015282810360a0840152615e568185615539565b9998505050505050505050565b90815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b600063ffffffff861682526001600160a01b038516602083015283604083015260806060830152615d326080830184615539565b63ffffffff9390931683526001600160401b039190911660208301526001600160a01b0316604082015260600190565b600063ffffffff861682526001600160401b03851660208301526001600160a01b038416604083015260806060830152615d326080830184615539565b6001600160401b0391909116815260200190565b60006001600160401b038816825260806020830152615f6360808301878961544e565b8281036040840152615f7681868861544e565b91505061ffff83166060830152979650505050505050565b6001600160401b039690961686529315156020860152911515604085015261ffff908116606085015290811660808401521660a082015260c00190565b6001600160401b0393909316835260ff918216602084015216604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b038111828210171561601857fe5b604052919050565b6000808585111561602f578182fd5b8386111561603b578182fd5b5050820193919092039150565b60005b8381101561606357818101518382015260200161604b565b838111156126ba5750506000910152565b6001600160a01b038116811461608957600080fd5b50565b801515811461608957600080fd5b6001600160401b038116811461608957600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220485911e33091273cd2a1a286b4a55f2599691a82e62fac144e341a0cfa52671864736f6c63430007060033",
1378
+ "deployedBytecode": "0x6080604052600436106102e15760003560e01c8063726075371161017f578063df1e309f116100e1578063f2fde38b1161008a578063faaebd2111610064578063faaebd2114610841578063fd9be52214610861578063ff1632f514610881576102e8565b8063f2fde38b146107ec578063f8e1734c1461080c578063f921b71f1461082c576102e8565b8063eb53479c116100bb578063eb53479c146107a2578063ee4478ab146107b7578063f0f44260146107cc576102e8565b8063df1e309f1461074d578063e22670ed1461076d578063e9817f3414610782576102e8565b80638f58aa7a11610143578063c4c372461161011d578063c4c37246146106e0578063c57d1ab01461070d578063d18404bb1461072d576102e8565b80638f58aa7a14610680578063b9a99bed146106a0578063bf45f3dd146106c0576102e8565b8063726075371461060157806375b5152a146106165780637e09a8d6146106365780638acb8054146106565780638da5cb5b1461066b576102e8565b80634d3a0f7c1161024357806356fe19be116101ec578063690c6555116101c6578063690c6555146105ac5780636d26e5d0146105cc578063715018a6146105ec576102e8565b806356fe19be146105625780635e280f111461058257806361d027b314610597576102e8565b806352d3b5001161021d57806352d3b500146104ef578063545d1efa1461050f57806354fd4d501461053e576102e8565b80634d3a0f7c1461047d5780634f8f455c1461049057806352d2871f146104c2576102e8565b80632cfacb06116102a557806340a7bb101161027f57806340a7bb101461040e57806343ea4fa91461042e5780634a575bb71461045b576102e8565b80632cfacb061461039e5780632e8ea0a5146103b35780633c782a52146103e1576102e8565b806302bd9743146102ed5780630395b8da1461031857806307b9ca7c1461033a5780630f8355c01461034f5780631538bffa1461037c576102e8565b366102e857005b600080fd5b3480156102f957600080fd5b506103026108ae565b60405161030f9190615754565b60405180910390f35b34801561032457600080fd5b5061032d6108d2565b60405161030f9190615fef565b34801561034657600080fd5b506103026108f6565b34801561035b57600080fd5b5061036f61036a3660046152d8565b610905565b60405161030f9190615e63565b34801561038857600080fd5b50610391610917565b60405161030f9190615e7a565b3480156103aa57600080fd5b5061039161091c565b3480156103bf57600080fd5b506103d36103ce366004614de4565b610921565b60405161030f929190615e6c565b3480156103ed57600080fd5b506104016103fc366004614ffc565b610a2c565b60405161030f9190615f2c565b34801561041a57600080fd5b506103d361042936600461510d565b610a58565b34801561043a57600080fd5b5061044e610449366004614db0565b610c7a565b60405161030f9190615c85565b34801561046757600080fd5b5061047b610476366004615376565b610f8a565b005b61047b61048b366004614e34565b611312565b34801561049c57600080fd5b506104b06104ab366004614db0565b61187f565b60405161030f96959493929190615f8e565b3480156104ce57600080fd5b506104e26104dd3660046151a9565b6118de565b60405161030f91906158c2565b3480156104fb57600080fd5b5061047b61050a366004614d69565b611aed565b34801561051b57600080fd5b5061052f61052a366004614db0565b611b97565b60405161030f93929190615ebf565b34801561054a57600080fd5b50610553611bde565b60405161030f93929190615fcb565b34801561056e57600080fd5b5061047b61057d3660046150c4565b611be9565b34801561058e57600080fd5b50610302611dbf565b3480156105a357600080fd5b50610302611de3565b3480156105b857600080fd5b506104e26105c736600461530f565b611df2565b3480156105d857600080fd5b5061047b6105e73660046152a5565b611ef2565b3480156105f857600080fd5b5061047b611fbd565b34801561060d57600080fd5b50610391612069565b34801561062257600080fd5b5061052f6106313660046152d8565b61208d565b34801561064257600080fd5b5061047b610651366004615073565b6120c9565b34801561066257600080fd5b50610391612170565b34801561067757600080fd5b50610302612175565b34801561068c57600080fd5b5061047b61069b366004614d85565b612184565b3480156106ac57600080fd5b506104016106bb366004615255565b6122c8565b3480156106cc57600080fd5b5061047b6106db36600461532a565b61236b565b3480156106ec57600080fd5b506107006106fb366004614db0565b6124a8565b60405161030f9190615d3c565b34801561071957600080fd5b5061047b610728366004614fdf565b6125a9565b34801561073957600080fd5b506104b06107483660046152d8565b6125e4565b34801561075957600080fd5b5061047b6107683660046152f2565b612638565b34801561077957600080fd5b506103916126c0565b34801561078e57600080fd5b506104e261079d3660046152d8565b6126c5565b3480156107ae57600080fd5b50610391612760565b3480156107c357600080fd5b5061036f612765565b3480156107d857600080fd5b5061047b6107e7366004614d69565b612789565b3480156107f857600080fd5b5061047b610807366004614d69565b6128ac565b34801561081857600080fd5b5061047b6108273660046151e7565b6129ae565b34801561083857600080fd5b50610391612b3d565b34801561084d57600080fd5b5061036f61085c366004614d69565b612b42565b34801561086d57600080fd5b5061047b61087c366004614d85565b612b54565b34801561088d57600080fd5b506108a161089c366004615034565b612c9a565b60405161030f919061587e565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b60066020526000908152604090205481565b600581565b600381565b60025460009081906001600160a01b031615610a23576002546040516301f0099360e51b81526001600160a01b0390911690633e0132609061096d9089908990899089906004016157c1565b60206040518083038186803b15801561098557600080fd5b505afa9250505080156109b5575060408051601f3d908101601f191682019092526109b2918101906152c0565b60015b6109be57610a23565b83156109cc57809150610a21565b60006109f83a7f0000000000000000000000000000000000000000000000000000000000000000612cc9565b90506000818711610a095781610a0b565b865b9050808311610a1a5782610a1c565b805b945050505b505b94509492505050565b600a6020908152600093845260408085208252928452828420905282529020546001600160401b031681565b6000808681610a6b8261ffff8c166124a8565b80519091508790610a8390829063ffffffff16612d22565b8551610b295761ffff8b1660009081526005602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b505050505095505b606080600088511115610b8657610b3f88612d46565b9150600161ffff1682600081518110610b5457fe5b60200260200101516000015161ffff161415610b865781600081518110610b7757fe5b60200260200101516020015190505b6040808501519051631c27ad9960e21b815261ffff8f16918b916000916001600160a01b03169063709eb66490610bc79086908c908b908a90600401615e8b565b60206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1791906152c0565b90506000610c2b8985888b60200151612f15565b9050610c378282612f72565b9150600080610c488b878688610921565b90925090508115610c6057610c5d8483612f72565b93505b929b50919950505050505050505050965096945050505050565b610c82614a51565b6001600160a01b038316600090815260086020908152604080832063ffffffff86168452825280832081516101008101835281546001600160401b038116825260ff600160401b82048116151583870152600160481b82041615158285015261ffff600160501b820481166060840152600160601b820481166080840152600160701b9091041660a08201526001820180548451818702810187019095528085529194929360c0860193909290830182828015610d6857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4a575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610dca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dac575b5050509190925250505063ffffffff841660009081526009602052604090208054919250906001600160401b0316610e1d5760405162461bcd60e51b8152600401610e1490615c0c565b60405180910390fd5b81516001600160401b0316610e3a5780546001600160401b031682525b8160200151610eb85780600101805480602002602001604051908101604052809291908181526020018280548015610e9b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e7d575b505050505060c08301528054600160501b900461ffff1660608301525b8160400151610f455780600201805480602002602001604051908101604052809291908181526020018280548015610f1957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610efb575b505050505060e0830152805461ffff600160601b820481166080850152600160701b9091041660a08301525b6000826060015161ffff161180610f64575060008260a0015161ffff16115b610f805760405162461bcd60e51b8152600401610e149061592f565b5090505b92915050565b610f92612fcc565b6001600160a01b0316610fa3612175565b6001600160a01b031614610fec576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b83826001600160401b0388166110145760405162461bcd60e51b8152600401610e1490615b5c565b61ffff8211158015611028575061ffff8111155b80156110385750808361ffff1611155b6110545760405162461bcd60e51b8152600401610e1490615c64565b6000821180611067575060008361ffff16115b6110835760405162461bcd60e51b8152600401610e1490615b7d565b6110c1878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612fd0915050565b6110ff858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250612fd0915050565b604051806101000160405280896001600160401b031681526020016000151581526020016000151581526020018361ffff1681526020018261ffff1681526020018461ffff1681526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208881028281018201909352888252928301929091899189918291850190849080828437600092018290525093909452505063ffffffff8c168152600960209081526040918290208451815486840151948701516060880151608089015160a08a015167ffffffffffffffff199094166001600160401b039095169490941768ff00000000000000001916600160401b971515979097029690961769ff0000000000000000001916600160481b911515919091021761ffff60501b1916600160501b61ffff968716021761ffff60601b1916600160601b928616929092029190911761ffff60701b1916600160701b949091169390930292909217825560c0840151805192935061129f9260018501929190910190614a97565b5060e082015180516112bb916002840191602090910190614a97565b509050508863ffffffff167fcefc09e599b8a950c1c6a0e233dfd90adac40718fb137ced2ec19d472b8e2a208989898989896040516112ff96959493929190615f40565b60405180910390a2505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461135a5760405162461bcd60e51b8152600401610e1490615af9565b8960008061136a838c8c8c61302f565b9150915060006040518060c00160405280846001600160401b031681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018f6001600160a01b031681526020018d61ffff1663ffffffff1681526020018381526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050606060008d61ffff16905060008751600014156114de5763ffffffff821660009081526005602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114d65780601f106114ab576101008083540402835291602001916114d6565b820191906000526020600020905b8154815290600101906020018083116114b957829003601f168201915b505050505097505b875160609015611538576114f189612d46565b9350600161ffff168460008151811061150657fe5b60200260200101516000015161ffff161415611538578360008151811061152957fe5b60200260200101516020015190505b600061154489856124a8565b80519091508d9061155c90829063ffffffff16612d22565b81604001516001600160a01b031663717e8a42868c84876040518563ffffffff1660e01b81526004016115929493929190615e8b565b602060405180830381600087803b1580156115ac57600080fd5b505af11580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906152c0565b9350831561162d576040808301516001600160a01b03166000908152600760205220546116119085612f72565b6040808401516001600160a01b03166000908152600760205220555b7f489a11bf9dbfc4407f7d03d118ac6bc81743af9e1189f9d3dc336415fa49cc898260400151856040516116629291906157a8565b60405180910390a1600061167b888885602001516131d0565b90506116878582612f72565b94505050505060006116b97f000000000000000000000000000000000000000000000000000000000000000086613268565b9150506116c6818a612d42565b8960006001600160a01b03821615806116e857506001546001600160a01b0316155b90506000806116fa8c88888615610921565b90925090508115611752576002546001600160a01b031660009081526007602052604090205461172a9083612f72565b6002546001600160a01b031660009081526007602052604090205561174f8683612f72565b95505b8e348711156117735760405162461bcd60e51b8152600401610e1490615992565b600061177f34896132dc565b90508015611805576000826001600160a01b0316826040516117a090614188565b60006040518083038185875af1925050503d80600081146117dd576040519150601f19603f3d011682016040523d82523d6000602084013e6117e2565b606091505b50509050806118035760405162461bcd60e51b8152600401610e1490615971565b505b841580156118135750600083115b15611824576118248e87858d613339565b6040518f907f3dc6f2ede34d1db05729bbb76e5efd17ec1bc83f98f665e7fba0596dca438b969061185c908a9084908d9089906158d5565b60405180910390a150505050505050505050505050505050505050505050505050565b60086020908152600092835260408084209091529082529020546001600160401b0381169060ff600160401b8204811691600160481b81049091169061ffff600160501b8204811691600160601b8104821691600160701b9091041686565b60606001821415611993576001600160a01b038316600090815260046020908152604080832061ffff881684529091529020805463ffffffff166119645761ffff851660009081526003602090815260409182902080549251909261194c9263ffffffff9091169101615e7a565b60405160208183030381529060405292505050611ae6565b805460405161197c9163ffffffff1690602001615e7a565b604051602081830303815290604052915050611ae6565b6002821415611a37576001600160a01b038316600090815260046020908152604080832061ffff881684529091529020805464010000000090046001600160401b0316611a145761ffff851660009081526003602090815260409182902080549251909261194c926401000000009091046001600160401b03169101615f2c565b805460405161197c9164010000000090046001600160401b031690602001615f2c565b6003821415611ad4576001600160a01b03808416600090815260046020908152604080832061ffff89168452909152902080549091600160601b90910416611ab25761ffff851660009081526003602090815260409182902080549251909261194c92600160601b9091046001600160a01b03169101615754565b805460405161197c91600160601b90046001600160a01b031690602001615754565b611ae38461ffff1684846133fd565b90505b9392505050565b611af5612fcc565b6001600160a01b0316611b06612175565b6001600160a01b031614611b4f576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6001600160a01b038116611b755760405162461bcd60e51b8152600401610e1490615a80565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000081046001600160401b031690600160601b90046001600160a01b031683565b600360006001909192565b6000611bf5848461340a565b90506000611c03858561341e565b90506000611c118686613455565b61ffff831660009081526006602052604081205491925090611c3490839061349b565b90506000611c428888613521565b90506000611c508989613567565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611c9692508991505061ffff8816610c7a565b9050611ca3818b8b613583565b611cbf5760405162461bcd60e51b8152600401610e1490615b5c565b60008488604051602001611cd492919061557d565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2fa481388838b888e896040518763ffffffff1660e01b8152600401611d3b96959493929190615e03565b600060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b5050845160208601206040517f50b692b5a452ba389a1da4cc93baae90524edbf9f80fbb52532915be89b735da9350611daa92508a918a918d918a91615daa565b60405180910390a15050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b606063ffffffff821660011415611e465763ffffffff808416600090815260036020908152604091829020805492519093611e2f93169101615e7a565b604051602081830303815290604052915050610f84565b63ffffffff821660021415611e915763ffffffff8316600090815260036020908152604091829020805492519092611e2f926401000000009091046001600160401b03169101615f2c565b63ffffffff821660031415611edb5763ffffffff8316600090815260036020908152604091829020805492519092611e2f92600160601b9091046001600160a01b03169101615754565b611eeb838363ffffffff166137f2565b9050610f84565b611efa612fcc565b6001600160a01b0316611f0b612175565b6001600160a01b031614611f54576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6020811115611f755760405162461bcd60e51b8152600401610e1490615c64565b61ffff821660009081526006602052604090205415611fa65760405162461bcd60e51b8152600401610e1490615a80565b61ffff909116600090815260066020526040902055565b611fc5612fcc565b6001600160a01b0316611fd6612175565b6001600160a01b03161461201f576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205463ffffffff81169064010000000081046001600160401b031690600160601b90046001600160a01b031683565b80600a600086866040516120de92919061556d565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529352819020805467ffffffffffffffff19166001600160401b03949094169390931790925590517fd57606ee258836ec1b40f83a128d2b514581eaf4f71801fbed3bc94b5358ecc091612162918790879086908890615768565b60405180910390a150505050565b600681565b6000546001600160a01b031690565b6002546001600160a01b031633146121ae5760405162461bcd60e51b8152600401610e1490615af9565b6001600160a01b0382166121d45760405162461bcd60e51b8152600401610e1490615b5c565b6001546001600160a01b03166121fc5760405162461bcd60e51b8152600401610e1490615b3b565b60015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061222e90859085906004016157a8565b602060405180830381600087803b15801561224857600080fd5b505af115801561225c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122809190614f19565b50336001600160a01b03167f8cf37e4234df20b9845dc6d1ed5edb4ca4ca10e3515e92514d14f0002c48c02683836040516122bc9291906157a8565b60405180910390a25050565b60405163c533338f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c533338f9061231b90879087908790600401615de5565b60206040518083038186803b15801561233357600080fd5b505afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae39190615432565b612373612fcc565b6001600160a01b0316612384612175565b6001600160a01b0316146123cd576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6000826001600160401b03161180156123ee57506001600160a01b03811615155b61240a5760405162461bcd60e51b8152600401610e1490615b5c565b60008363ffffffff16116124305760405162461bcd60e51b8152600401610e1490615c64565b63ffffffff938416600090815260036020526040902080546bffffffffffffffffffffffff16600160601b6001600160a01b0393909316929092029190911763ffffffff191692909316919091176bffffffffffffffff0000000019166401000000006001600160401b039290921691909102179055565b6124b0614afc565b6001600160a01b03808416600090815260046020908152604080832063ffffffff808816808652918452828520835160608082018652915480841682526001600160401b036401000000008083048216848a0152600160601b928390048b1684890152958952600388529786902086519384018752548085168452948504909716958201959095529490910490941690830152805190921661255757805163ffffffff1682525b60208201516001600160401b031661257d576020808201516001600160401b0316908301525b60408201516001600160a01b0316610f80576040908101516001600160a01b0316908201529392505050565b336001600160a01b03167ff70f667bf53155c301a4abbdadaabddfbd3afbabbefc7e7ca6ad37b81756c60983836040516122bc929190615889565b6009602052600090815260409020546001600160401b0381169060ff600160401b8204811691600160481b81049091169061ffff600160501b8204811691600160601b8104821691600160701b9091041686565b612640612fcc565b6001600160a01b0316612651612175565b6001600160a01b03161461269a576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b63ffffffff831660009081526005602052604090206126ba908383614b1c565b50505050565b600181565b60056020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156127585780601f1061272d57610100808354040283529160200191612758565b820191906000526020600020905b81548152906001019060200180831161273b57829003601f168201915b505050505081565b600481565b7f000000000000000000000000000000000000000000000000000000000000000081565b612791612fcc565b6001600160a01b03166127a2612175565b6001600160a01b0316146127eb576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6040516301ffc9a760e01b81526001600160a01b038216906301ffc9a79061281e906301f0099360e51b90600401615899565b60206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e9190614f19565b61288a5760405162461bcd60e51b8152600401610e1490615ad8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6128b4612fcc565b6001600160a01b03166128c5612175565b6001600160a01b03161461290e576040805162461bcd60e51b815260206004820181905260248201526000805160206160f7833981519152604482015290519081900360640190fd5b6001600160a01b0381166129535760405162461bcd60e51b81526004018080602001828103825260268152602001806160b06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146129f65760405162461bcd60e51b8152600401610e1490615af9565b6001831415612a52576000612a0d828401846152d8565b6001600160a01b038616600090815260046020908152604080832061ffff8b1684529091529020805463ffffffff191663ffffffff9290921691909117905550612b36565b6002831415612ac1576000612a6982840184615416565b6001600160a01b038616600090815260046020908152604080832061ffff8b168452909152902080546001600160401b03909216640100000000026bffffffffffffffff000000001990921691909117905550612b36565b6003831415612b25576000612ad882840184614d69565b6001600160a01b03808716600090815260046020908152604080832061ffff8c1684529091529020805491909216600160601b026bffffffffffffffffffffffff90911617905550612b36565b612b368561ffff16858585856137fe565b5050505050565b600281565b60076020526000908152604090205481565b6001600160a01b038216612b7a5760405162461bcd60e51b8152600401610e1490615b5c565b33600090815260076020526040902054811115612ba95760405162461bcd60e51b8152600401610e1490615992565b33600090815260076020526040902054612bc390826132dc565b336000908152600760205260408082209290925590516001600160a01b038416908390612bef90614188565b60006040518083038185875af1925050503d8060008114612c2c576040519150601f19603f3d011682016040523d82523d6000602084013e612c31565b606091505b5050905080612c525760405162461bcd60e51b8152600401610e1490615971565b336001600160a01b03167ff15a0a3784dea9b4fe33bc98e2450745e262d310237b2868ea8ef56967ff3ecb8484604051612c8d9291906157a8565b60405180910390a2505050565b600080612cb4612caa858561340a565b610449868661380b565b9050612cc1818585613583565b949350505050565b600082612cd857506000610f84565b82820282848281612ce557fe5b0414611ae65760405162461bcd60e51b81526004018080602001828103825260218152602001806160d66021913960400191505060405180910390fd5b80821115612d425760405162461bcd60e51b8152600401610e1490615c64565b5050565b60606000612d548382613851565b905061ffff811660011480612d6d575061ffff81166002145b15612d8c576000612d828261ffff1685613880565b9250612f10915050565b8061ffff1660031415612ef8576000612da6846002613851565b905060008161ffff166001600160401b0381118015612dc457600080fd5b50604051908082528060200260200182016040528015612dfe57816020015b612deb614b98565b815260200190600190039081612de35790505b50905060046000805b8461ffff16811015612eca576000612e1f8985613851565b90506002840193508160001480612e3d57508261ffff168161ffff16115b612e595760405162461bcd60e51b8152600401610e1490615950565b9150816000612e688a86613851565b905060028501945060405180604001604052808361ffff168152602001612e9e878461ffff168e613b069092919063ffffffff16565b815250868481518110612ead57fe5b602090810291909101015261ffff16939093019250600101612e07565b5086518214612eeb5760405162461bcd60e51b8152600401610e1490615c64565b8295505050505050612f10565b60405162461bcd60e51b8152600401610e1490615b1a565b919050565b600080612f228686610c7a565b90506000612f31856002613bc0565b92505050612f4b8260c00151836060015189898589613c46565b83019250612f658260e00151836080015189898589613c46565b9092019695505050505050565b600082820183811015611ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6000805b828110156126ba576000848281518110612fea57fe5b60200260200101519050826001600160a01b0316816001600160a01b0316116130255760405162461bcd60e51b8152600401610e1490615950565b9150600101612fd4565b61ffff83166000908152600660205260408120548190801580159061305657506014810184145b6130725760405162461bcd60e51b8152600401610e1490615c64565b60008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505083810160140151925090506001600160a01b03898116908316146130e15760405162461bcd60e51b8152600401610e1490615b5c565b61312b6130f1846000898b616020565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d0292505050565b604051636fe7b67360e01b81529094506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636fe7b6739061317e908b908d908690600401615d75565b602060405180830381600087803b15801561319857600080fd5b505af11580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190615432565b6000806131e36060860160408701614d69565b905060006131fb826104496080890160608a016152d8565b9050600061320a866002613bc0565b925050506132368260c001518360600151858a606001602081019061322f91906152d8565b858a613d3d565b8401935061325b8260e001518360800151858a606001602081019061322f91906152d8565b9093019695505050505050565b600060606000836000015161327c85613edd565b60405160200161328d9291906156d2565b6040516020818303038152906040529050808051906020012092508481848660a001516040516020016132c39493929190615707565b6040516020818303038152906040529150509250929050565b600082821115613333576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b836001600160a01b0316836001600160a01b0316148061336157506001600160a01b03831632145b61337d5760405162461bcd60e51b8152600401610e1490615b5c565b60008061338e8361ffff6001613f24565b91509150816133af5760405162461bcd60e51b8152600401610e1490615b5c565b60006133ba82613f80565b9050808511156133dc5760405162461bcd60e51b8152600401610e1490615992565b6001546133f4906001600160a01b0316873088613fae565b50505050505050565b6060611ae384848461401d565b6000611ae66134198484614142565b614188565b60008061342b848461380b565b905061ffff63ffffffff82161115611ae65760405162461bcd60e51b8152600401610e1490615c64565b6000611ae6600d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061418b9050565b60606000821180156134ae575060208211155b6134ca5760405162461bcd60e51b8152600401610e1490615c64565b6000826001600160401b03811180156134e257600080fd5b506040519080825280601f01601f19166020018201604052801561350d576020820181803683370190505b506020849003850151815291505092915050565b6000611ae6600184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506141ba9050565b3660006135778360718187616020565b915091505b9250929050565b600060718210156135a65760405162461bcd60e51b8152600401610e1490615c64565b7f000000000000000000000000000000000000000000000000000000000000000060ff166135d484846141e9565b60ff16146135f45760405162461bcd60e51b8152600401610e149061590e565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16613625848461422f565b63ffffffff16146136485760405162461bcd60e51b8152600401610e1490615c0c565b60006136548484614275565b805190602001209050600061366985856142c1565b60405161367792919061556d565b604051908190039020865190915060005b876060015161ffff168110156137115760008860c0015182815181106136aa57fe5b6020908102919091018101516000878152600a8352604080822088835284528082206001600160a01b038416835290935291909120549091506001600160401b039081169084168110156137075760009650505050505050611ae6565b5050600101613688565b506000876060015161ffff161180156137305750608087015161ffff16155b156137415760019350505050611ae6565b6000805b886080015161ffff168110156137e35760008960e00151828151811061376757fe5b6020908102919091018101516000888152600a8352604080822089835284528082206001600160a01b038416835290935291909120549091506001600160401b0390811690851681106137d95760a08b015160019094019361ffff1684106137d9576001975050505050505050611ae6565b5050600101613745565b50600098975050505050505050565b6060611ae683836142d1565b612b368585858585614356565b6000611ae6600984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506145b09050565b600081600201835110156138775760405162461bcd60e51b8152600401610e14906159b3565b50016002015190565b604080516001808252818301909252606091816020015b61389f614b98565b815260200190600190039081613897579050509050606060018414156139695782516022146138e05760405162461bcd60e51b8152600401610e1490615c64565b60006138ed8460026145df565b90506001600160801b038111156139165760405162461bcd60e51b8152600401610e1490615c64565b60016040516020016139289190615686565b60405160208183030381529060405291508160016010836040516020016139529493929190615606565b604051602081830303815290604052915050613acd565b6002841415612ef8576042835111801561398557506062835111155b6139a15760405162461bcd60e51b8152600401610e1490615c64565b60006139ae8460026145df565b90506001600160801b038111156139d75760405162461bcd60e51b8152600401610e1490615c64565b60006139e48560226145df565b90506001600160801b03811115613a0d5760405162461bcd60e51b8152600401610e1490615c64565b600060428651039050600081602003600082526062880151818301525060008382604051602001613a3f929190615660565b60405160208183030381529060405290506002604051602001613a629190615686565b6040516020818303038152906040529550856001601087604051602001613a8c9493929190615606565b6040516020818303038152906040529550856002825183604051602001613ab694939291906155b4565b604051602081830303815290604052955050505050505b6040518060400160405280600161ffff1681526020018281525082600081518110613af457fe5b60200260200101819052505092915050565b60608182601f011015613b2b5760405162461bcd60e51b8152600401610e1490615a21565b81830184511015613b4e5760405162461bcd60e51b8152600401610e1490615b9e565b606082158015613b6d5760405191506000825260208201604052613bb7565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613ba6578051835260209283019201613b8e565b5050858452601f01601f1916604052505b50949350505050565b600080606060005b8551811015613c27578461ffff16868281518110613be257fe5b60200260200101516000015161ffff161415613c1f57600181878381518110613c0757fe5b60200260200101516020015193509350935050613c3f565b600101613bc8565b50506040805160208101909152600080825292508291505b9250925092565b6000805b8661ffff16811015613cf757878181518110613c6257fe5b60200260200101516001600160a01b03166330bb3aac868589886040518563ffffffff1660e01b8152600401613c9b9493929190615eef565b60206040518083038186803b158015613cb357600080fd5b505afa158015613cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ceb91906152c0565b90910190600101613c4a565b509695505050505050565b6000602082511115613d265760405162461bcd60e51b8152600401610e1490615c64565b815160008252602092830151920381019190915290565b6000808661ffff166001600160401b0381118015613d5a57600080fd5b50604051908082528060200260200182016040528015613d84578160200160208202803683370190505b50905060005b8761ffff16811015613e98576000898281518110613da457fe5b60200260200101516001600160a01b031663e4fbd90388878b8a6040518563ffffffff1660e01b8152600401613ddd9493929190615eef565b602060405180830381600087803b158015613df757600080fd5b505af1158015613e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2f91906152c0565b905080838381518110613e3e57fe5b60209081029190910101528015613e8f5780600760008c8581518110613e6057fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002080549091019055928301925b50600101613d8a565b507f4a4f9b55e84c19345500ad54202240b345f195977a3aa5cd6c4d108cf90f8f808882604051613eca9291906157ef565b60405180910390a1509695505050505050565b60608160200151613ef18360400151614605565b83606001518460800151604051602001613f0e949392919061569e565b6040516020818303038152906040529050919050565b60006060600080613f358787613bc0565b925050915081613f5c57600060405180602001604052806000815250935093505050613f78565b613f6e613f6882614611565b8661474e565b9195509093505050505b935093915050565b60008151602014613fa35760405162461bcd60e51b8152600401610e1490615c64565b610f848260006145df565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526126ba90859061479d565b6001600160a01b038216600090815260086020908152604080832063ffffffff87168452825280832060099092529091206060919060048414156140a05781546001600160401b031661408557805460405161194c916001600160401b031690602001615f2c565b815460405161194c916001600160401b031690602001615f2c565b60058414156140e2578154600160401b900460ff16156140ce578160010160405160200161194c9190615845565b8060010160405160200161194c9190615845565b6006841415612ef8578154600160481b900460ff161561411f57815460405161194c916002850191600160701b90910461ffff1690602001615858565b805460405161194c916002840191600160701b90910461ffff1690602001615858565b6000611ae6603184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061418b9050565b90565b600081602001835110156141b15760405162461bcd60e51b8152600401610e1490615aa1565b50016020015190565b600081600801835110156141e05760405162461bcd60e51b8152600401610e14906159ea565b50016008015190565b6000611ae6600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506148539050565b6000611ae6602d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506145b09050565b6060614285605160008486616020565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b3660006135778360518187616020565b63ffffffff82166000908152600960205260409020606090600483141561430d578054604051611e2f916001600160401b031690602001615f2c565b600583141561432a5780600101604051602001611e2f9190615845565b6006831415612ef8578054604051611e2f916002840191600160701b90910461ffff1690602001615858565b6001600160a01b038416600090815260086020908152604080832063ffffffff89168452909152902060048414156143b857600061439683850185615416565b825467ffffffffffffffff19166001600160401b039190911617825550614564565b6005841415614471576000806143d084860186614f35565b805191935091506000836143e55781156143ec565b61ffff8211155b90508061440b5760405162461bcd60e51b8152600401610e1490615c64565b6144158383612fd0565b845461ffff60501b1916600160501b61ffff84160217855582516144429060018701906020860190614a97565b50845468ff00000000000000001916600160401b85151502178555614467898b610c7a565b5050505050614564565b6006841415612ef8576000808061448a85870187614f82565b815192955090935091506000846144a25781156144a9565b61ffff8211155b9050806144c85760405162461bcd60e51b8152600401610e1490615c64565b818361ffff1611156144ec5760405162461bcd60e51b8152600401610e1490615992565b6144f68483612fd0565b855461ffff60601b1916600160601b61ffff84160217865583516145239060028801906020870190614a97565b50855461ffff60701b1916600160701b61ffff8516021769ff0000000000000000001916600160481b8615150217865561455d8a8c610c7a565b5050505050505b83856001600160a01b03167f32a52e909bac91be27e4f3ddb96c51d9484dd2323a9f358d11ef8c35298196cc85856040516145a09291906158ae565b60405180910390a3505050505050565b600081600401835110156145d65760405162461bcd60e51b8152600401610e1490615c2d565b50016004015190565b600081602001835110156141b15760405162461bcd60e51b8152600401610e1490615a49565b6001600160a01b031690565b60606000806146208482613851565b905060028201915060008161ffff166001600160401b038111801561464457600080fd5b5060405190808252806020026020018201604052801561467e57816020015b61466b614b98565b8152602001906001900390816146635790505b5090506000805b8361ffff168161ffff1610156147435760006146a18887613851565b90506002860195508261ffff168161ffff16116146d05760405162461bcd60e51b8152600401610e1490615950565b91508160006146df8988613851565b60029790970196905060006146f98a8961ffff8516613b06565b90508161ffff168801975060405180604001604052808461ffff16815260200182815250868561ffff168151811061472d57fe5b6020908102919091010152505050600101614685565b509095945050505050565b600080606060005b8551811015613c27578461ffff1686828151811061477057fe5b60200260200101516000015161ffff16141561479557600181878381518110613c0757fe5b600101614756565b60006147f2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148829092919063ffffffff16565b80519091501561484e5780806020019051602081101561481157600080fd5b505161484e5760405162461bcd60e51b815260040180806020018281038252602a815260200180616117602a913960400191505060405180910390fd5b505050565b600081600101835110156148795760405162461bcd60e51b8152600401610e1490615bd5565b50016001015190565b6060611ae3848460008585614896856149a7565b6148e7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106149255780518252601f199092019160209182019101614906565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614987576040519150601f19603f3d011682016040523d82523d6000602084013e61498c565b606091505b509150915061499c8282866149ad565b979650505050505050565b3b151590565b606083156149bc575081611ae6565b8251156149cc5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a165781810151838201526020016149fe565b50505050905090810190601f168015614a435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b828054828255906000526020600020908101928215614aec579160200282015b82811115614aec57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614ab7565b50614af8929150614bb0565b5090565b604080516060810182526000808252602082018190529181019190915290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614b525760008555614aec565b82601f10614b6b5782800160ff19823516178555614aec565b82800160010185558215614aec579182015b82811115614aec578235825591602001919060010190614b7d565b60408051808201909152600081526060602082015290565b5b80821115614af85760008155600101614bb1565b8035612f1081616074565b60008083601f840112614be1578182fd5b5081356001600160401b03811115614bf7578182fd5b602083019150836020808302850101111561357c57600080fd5b600082601f830112614c21578081fd5b813560206001600160401b03821115614c3657fe5b808202614c44828201615ffd565b838152828101908684018388018501891015614c5e578687fd5b8693505b85841015614c89578035614c7581616074565b835260019390930192918401918401614c62565b50979650505050505050565b60008083601f840112614ca6578182fd5b5081356001600160401b03811115614cbc578182fd5b60208301915083602082850101111561357c57600080fd5b600082601f830112614ce4578081fd5b81356001600160401b03811115614cf757fe5b614d0a601f8201601f1916602001615ffd565b818152846020838601011115614d1e578283fd5b816020850160208301379081016020019190915292915050565b803561ffff81168114612f1057600080fd5b803563ffffffff81168114612f1057600080fd5b8035612f108161609a565b600060208284031215614d7a578081fd5b8135611ae681616074565b60008060408385031215614d97578081fd5b8235614da281616074565b946020939093013593505050565b60008060408385031215614dc2578182fd5b8235614dcd81616074565b9150614ddb60208401614d4a565b90509250929050565b60008060008060808587031215614df9578182fd5b8435614e0481616074565b9350614e1260208601614d4a565b9250604085013591506060850135614e298161608c565b939692955090935050565b6000806000806000806000806000806101008b8d031215614e53578586fd5b614e5c8b614bc5565b9950614e6a60208c01614d5e565b9850614e7860408c01614d38565b975060608b01356001600160401b0380821115614e93578788fd5b614e9f8e838f01614c95565b909950975060808d0135915080821115614eb7578687fd5b614ec38e838f01614c95565b9097509550859150614ed760a08e01614bc5565b9450614ee560c08e01614bc5565b935060e08d0135915080821115614efa578283fd5b50614f078d828e01614cd4565b9150509295989b9194979a5092959850565b600060208284031215614f2a578081fd5b8151611ae68161608c565b60008060408385031215614f47578182fd5b8235614f528161608c565b915060208301356001600160401b03811115614f6c578182fd5b614f7885828601614c11565b9150509250929050565b600080600060608486031215614f96578081fd5b8335614fa18161608c565b925060208401356001600160401b03811115614fbb578182fd5b614fc786828701614c11565b925050614fd660408501614d38565b90509250925092565b60008060408385031215614ff1578182fd5b8235614da28161608c565b600080600060608486031215615010578081fd5b8335925060208401359150604084013561502981616074565b809150509250925092565b60008060208385031215615046578182fd5b82356001600160401b0381111561505b578283fd5b61506785828601614c95565b90969095509350505050565b60008060008060608587031215615088578182fd5b84356001600160401b0381111561509d578283fd5b6150a987828801614c95565b909550935050602085013591506040850135614e298161609a565b6000806000604084860312156150d8578081fd5b83356001600160401b038111156150ed578182fd5b6150f986828701614c95565b909790965060209590950135949350505050565b60008060008060008060a08789031215615125578384fd5b61512e87614d38565b9550602087013561513e81616074565b945060408701356001600160401b0380821115615159578586fd5b6151658a838b01614c95565b90965094506060890135915061517a8261608c565b9092506080880135908082111561518f578283fd5b5061519c89828a01614cd4565b9150509295509295509295565b6000806000606084860312156151bd578081fd5b6151c684614d38565b925060208401356151d681616074565b929592945050506040919091013590565b6000806000806000608086880312156151fe578283fd5b61520786614d38565b9450602086013561521781616074565b93506040860135925060608601356001600160401b03811115615238578182fd5b61524488828901614c95565b969995985093965092949392505050565b600080600060408486031215615269578081fd5b61527284614d38565b925060208401356001600160401b0381111561528c578182fd5b61529886828701614c95565b9497909650939450505050565b600080604083850312156152b7578182fd5b614da283614d38565b6000602082840312156152d1578081fd5b5051919050565b6000602082840312156152e9578081fd5b611ae682614d4a565b600080600060408486031215615306578081fd5b61527284614d4a565b60008060408385031215615321578182fd5b614dcd83614d4a565b6000806000806080858703121561533f578182fd5b61534885614d4a565b935061535660208601614d4a565b925060408501356153668161609a565b91506060850135614e2981616074565b600080600080600080600060a0888a031215615390578081fd5b61539988614d4a565b965060208801356153a98161609a565b955060408801356001600160401b03808211156153c4578283fd5b6153d08b838c01614bd0565b909750955060608a01359150808211156153e8578283fd5b506153f58a828b01614bd0565b9094509250615408905060808901614d38565b905092959891949750929550565b600060208284031215615427578081fd5b8135611ae68161609a565b600060208284031215615443578081fd5b8151611ae68161609a565b60008284526020808501945082825b8581101561548b57813561547081616074565b6001600160a01b03168752958201959082019060010161545d565b509495945050505050565b6000815180845260208085019450808401835b8381101561548b5781516001600160a01b0316875295820195908201906001016154a9565b6000815480845260208085019450838352808320835b8381101561548b5781546001600160a01b0316875295820195600191820191016154e4565b15159052565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452615551816020860160208601616048565b601f01601f19169290920160200192915050565b61ffff169052565b6000828483379101908152919050565b6000835161558f818460208801616048565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b600085516155c6818460208a01616048565b6001600160f01b031960f087811b821692850192835286901b16600282015283516155f8816004840160208801616048565b016004019695505050505050565b60008551615618818460208a01616048565b60f095861b6001600160f01b0319908116939091019283529390941b909216600283015260801b6fffffffffffffffffffffffffffffffff1916600482015260140192915050565b60809290921b6fffffffffffffffffffffffffffffffff19168252601082015260300190565b60f09190911b6001600160f01b031916815260020190565b6001600160e01b031960e095861b8116825260048201949094529190931b9091166024820152602881019190915260480190565b60006001600160401b0360c01b8460c01b16825282516156f9816008850160208701616048565b919091016008019392505050565b600060ff60f81b8660f81b1682528451615728816001850160208901616048565b80830190508460018201528351615746816021840160208801616048565b016021019695505050505050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682526080602083015261578b60808301868861550f565b6001600160401b0394909416604083015250606001529392505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845263ffffffff92909216602084015260408301521515606082015260800190565b6000604082526158026040830185615496565b828103602084810191909152845180835285820192820190845b818110156158385784518352938301939183019160010161581c565b5090979650505050505050565b600060208252611ae660208301846154ce565b60006040825261586b60408301856154ce565b905061ffff831660208301529392505050565b901515815260200190565b9115158252602082015260400190565b6001600160e01b031991909116815260200190565b600060208252611ae360208301848661550f565b600060208252611ae66020830184615539565b6000608082526158e86080830187615539565b82810360208401526158fa8187615539565b604084019590955250506060015292915050565b6020808252600790820152664c5a313030303760c81b604082015260600190565b6020808252600790820152664c5a443030303560c81b604082015260600190565b602080825260079082015266262d189818181b60c91b604082015260600190565b60208082526007908201526604c5a33303030360cc1b604082015260600190565b6020808252600790820152664c5a313030303360c81b604082015260600190565b60208082526014908201527f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000604082015260600190565b60208082526014908201527f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000604082015260600190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b60208082526015908201527f746f55696e743235365f6f75744f66426f756e64730000000000000000000000604082015260600190565b60208082526007908201526604c5a38303030360cc1b604082015260600190565b60208082526015908201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604082015260600190565b6020808252600790820152664c5a433030303160c81b604082015260600190565b60208082526007908201526604c5a35303030360cc1b604082015260600190565b60208082526007908201526604c5a43303030360cc1b604082015260600190565b6020808252600790820152664c5a443030303360c81b604082015260600190565b60208082526007908201526604c5a31303030360cc1b604082015260600190565b6020808252600790820152664c5a313030313160c81b604082015260600190565b60208082526011908201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604082015260600190565b60208082526013908201527f746f55696e74385f6f75744f66426f756e647300000000000000000000000000604082015260600190565b602080825260079082015266098b462606060760cb1b604082015260600190565b60208082526014908201527f746f55696e7433325f6f75744f66426f756e6473000000000000000000000000604082015260600190565b6020808252600790820152664c5a313030303960c81b604082015260600190565b6000602082526001600160401b0383511660208301526020830151615cad6040840182615509565b506040830151615cc06060840182615509565b506060830151615cd36080840182615565565b506080830151615ce660a0840182615565565b5060a0830151615cf960c0840182615565565b5060c08301516101008060e0850152615d16610120850183615496565b915060e0850151601f198584030182860152615d328382615496565b9695505050505050565b815163ffffffff1681526020808301516001600160401b0316908201526040918201516001600160a01b03169181019190915260600190565b600061ffff851682526001600160a01b038416602083015260606040830152615da16060830184615539565b95945050505050565b61ffff95909516855260208501939093526001600160a01b039190911660408401526001600160401b03166060830152608082015260a00190565b600061ffff8516825260406020830152615da160408301848661550f565b600061ffff8816825260c06020830152615e2060c0830188615539565b6001600160a01b03871660408401526001600160401b038616606084015284608084015282810360a0840152615e568185615539565b9998505050505050505050565b90815260200190565b918252602082015260400190565b63ffffffff91909116815260200190565b600063ffffffff861682526001600160a01b038516602083015283604083015260806060830152615d326080830184615539565b63ffffffff9390931683526001600160401b039190911660208301526001600160a01b0316604082015260600190565b600063ffffffff861682526001600160401b03851660208301526001600160a01b038416604083015260806060830152615d326080830184615539565b6001600160401b0391909116815260200190565b60006001600160401b038816825260806020830152615f6360808301878961544e565b8281036040840152615f7681868861544e565b91505061ffff83166060830152979650505050505050565b6001600160401b039690961686529315156020860152911515604085015261ffff908116606085015290811660808401521660a082015260c00190565b6001600160401b0393909316835260ff918216602084015216604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b038111828210171561601857fe5b604052919050565b6000808585111561602f578182fd5b8386111561603b578182fd5b5050820193919092039150565b60005b8381101561606357818101518382015260200161604b565b838111156126ba5750506000910152565b6001600160a01b038116811461608957600080fd5b50565b801515811461608957600080fd5b6001600160401b038116811461608957600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220485911e33091273cd2a1a286b4a55f2599691a82e62fac144e341a0cfa52671864736f6c63430007060033",
1379
+ "linkReferences": {},
1380
+ "deployedLinkReferences": {}
1381
+ }