ocean-contracts 2.4.0__py3-none-any.whl → 2.5.0__py3-none-any.whl

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