@hanamesh/api-contracts 0.0.0-stage → 0.22.0

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,2951 @@
1
+ {
2
+ "contract": "HanaBondQuoteV2",
3
+ "version": "release-quote-v2",
4
+ "abi": [
5
+ {
6
+ "type": "constructor",
7
+ "inputs": [
8
+ {
9
+ "name": "hana_",
10
+ "type": "address",
11
+ "internalType": "address"
12
+ },
13
+ {
14
+ "name": "treasury_",
15
+ "type": "address",
16
+ "internalType": "address"
17
+ },
18
+ {
19
+ "name": "quote_",
20
+ "type": "address",
21
+ "internalType": "address"
22
+ },
23
+ {
24
+ "name": "virtualQuote_",
25
+ "type": "uint256",
26
+ "internalType": "uint256"
27
+ },
28
+ {
29
+ "name": "issuer_",
30
+ "type": "address",
31
+ "internalType": "address"
32
+ },
33
+ {
34
+ "name": "pointsBps_",
35
+ "type": "uint256",
36
+ "internalType": "uint256"
37
+ },
38
+ {
39
+ "name": "earlyReleaseAllowed_",
40
+ "type": "bool",
41
+ "internalType": "bool"
42
+ }
43
+ ],
44
+ "stateMutability": "nonpayable"
45
+ },
46
+ {
47
+ "type": "receive",
48
+ "stateMutability": "payable"
49
+ },
50
+ {
51
+ "type": "function",
52
+ "name": "AVERAGE_WINDOW",
53
+ "inputs": [],
54
+ "outputs": [
55
+ {
56
+ "name": "",
57
+ "type": "uint256",
58
+ "internalType": "uint256"
59
+ }
60
+ ],
61
+ "stateMutability": "view"
62
+ },
63
+ {
64
+ "type": "function",
65
+ "name": "AVERAGE_WINDOW_END",
66
+ "inputs": [],
67
+ "outputs": [
68
+ {
69
+ "name": "",
70
+ "type": "uint256",
71
+ "internalType": "uint256"
72
+ }
73
+ ],
74
+ "stateMutability": "view"
75
+ },
76
+ {
77
+ "type": "function",
78
+ "name": "LIQUIDITY",
79
+ "inputs": [],
80
+ "outputs": [
81
+ {
82
+ "name": "",
83
+ "type": "uint256",
84
+ "internalType": "uint256"
85
+ }
86
+ ],
87
+ "stateMutability": "view"
88
+ },
89
+ {
90
+ "type": "function",
91
+ "name": "MIGRATION_DEVIATION_BPS",
92
+ "inputs": [],
93
+ "outputs": [
94
+ {
95
+ "name": "",
96
+ "type": "uint256",
97
+ "internalType": "uint256"
98
+ }
99
+ ],
100
+ "stateMutability": "view"
101
+ },
102
+ {
103
+ "type": "function",
104
+ "name": "OBSERVATION_COUNT",
105
+ "inputs": [],
106
+ "outputs": [
107
+ {
108
+ "name": "",
109
+ "type": "uint256",
110
+ "internalType": "uint256"
111
+ }
112
+ ],
113
+ "stateMutability": "view"
114
+ },
115
+ {
116
+ "type": "function",
117
+ "name": "OBSERVATION_PERIOD",
118
+ "inputs": [],
119
+ "outputs": [
120
+ {
121
+ "name": "",
122
+ "type": "uint256",
123
+ "internalType": "uint256"
124
+ }
125
+ ],
126
+ "stateMutability": "view"
127
+ },
128
+ {
129
+ "type": "function",
130
+ "name": "SALES",
131
+ "inputs": [],
132
+ "outputs": [
133
+ {
134
+ "name": "",
135
+ "type": "uint256",
136
+ "internalType": "uint256"
137
+ }
138
+ ],
139
+ "stateMutability": "view"
140
+ },
141
+ {
142
+ "type": "function",
143
+ "name": "TOTAL",
144
+ "inputs": [],
145
+ "outputs": [
146
+ {
147
+ "name": "",
148
+ "type": "uint256",
149
+ "internalType": "uint256"
150
+ }
151
+ ],
152
+ "stateMutability": "view"
153
+ },
154
+ {
155
+ "type": "function",
156
+ "name": "VIRTUAL_HANA",
157
+ "inputs": [],
158
+ "outputs": [
159
+ {
160
+ "name": "",
161
+ "type": "uint256",
162
+ "internalType": "uint256"
163
+ }
164
+ ],
165
+ "stateMutability": "view"
166
+ },
167
+ {
168
+ "type": "function",
169
+ "name": "activate",
170
+ "inputs": [],
171
+ "outputs": [],
172
+ "stateMutability": "nonpayable"
173
+ },
174
+ {
175
+ "type": "function",
176
+ "name": "active",
177
+ "inputs": [],
178
+ "outputs": [
179
+ {
180
+ "name": "",
181
+ "type": "bool",
182
+ "internalType": "bool"
183
+ }
184
+ ],
185
+ "stateMutability": "view"
186
+ },
187
+ {
188
+ "type": "function",
189
+ "name": "buyBudget",
190
+ "inputs": [
191
+ {
192
+ "name": "budget",
193
+ "type": "uint256",
194
+ "internalType": "uint256"
195
+ },
196
+ {
197
+ "name": "minHana",
198
+ "type": "uint256",
199
+ "internalType": "uint256"
200
+ },
201
+ {
202
+ "name": "deadline",
203
+ "type": "uint256",
204
+ "internalType": "uint256"
205
+ }
206
+ ],
207
+ "outputs": [
208
+ {
209
+ "name": "amount",
210
+ "type": "uint256",
211
+ "internalType": "uint256"
212
+ }
213
+ ],
214
+ "stateMutability": "payable"
215
+ },
216
+ {
217
+ "type": "function",
218
+ "name": "buyExact",
219
+ "inputs": [
220
+ {
221
+ "name": "requested",
222
+ "type": "uint256",
223
+ "internalType": "uint256"
224
+ },
225
+ {
226
+ "name": "maxSpend",
227
+ "type": "uint256",
228
+ "internalType": "uint256"
229
+ },
230
+ {
231
+ "name": "deadline",
232
+ "type": "uint256",
233
+ "internalType": "uint256"
234
+ }
235
+ ],
236
+ "outputs": [
237
+ {
238
+ "name": "amount",
239
+ "type": "uint256",
240
+ "internalType": "uint256"
241
+ }
242
+ ],
243
+ "stateMutability": "payable"
244
+ },
245
+ {
246
+ "type": "function",
247
+ "name": "closedAt",
248
+ "inputs": [],
249
+ "outputs": [
250
+ {
251
+ "name": "",
252
+ "type": "uint256",
253
+ "internalType": "uint256"
254
+ }
255
+ ],
256
+ "stateMutability": "view"
257
+ },
258
+ {
259
+ "type": "function",
260
+ "name": "closingQuote",
261
+ "inputs": [],
262
+ "outputs": [
263
+ {
264
+ "name": "",
265
+ "type": "uint256",
266
+ "internalType": "uint256"
267
+ }
268
+ ],
269
+ "stateMutability": "view"
270
+ },
271
+ {
272
+ "type": "function",
273
+ "name": "earlyReleaseAllowed",
274
+ "inputs": [],
275
+ "outputs": [
276
+ {
277
+ "name": "",
278
+ "type": "bool",
279
+ "internalType": "bool"
280
+ }
281
+ ],
282
+ "stateMutability": "view"
283
+ },
284
+ {
285
+ "type": "function",
286
+ "name": "earlyReleaseAt",
287
+ "inputs": [],
288
+ "outputs": [
289
+ {
290
+ "name": "",
291
+ "type": "uint256",
292
+ "internalType": "uint256"
293
+ }
294
+ ],
295
+ "stateMutability": "view"
296
+ },
297
+ {
298
+ "type": "function",
299
+ "name": "fees",
300
+ "inputs": [
301
+ {
302
+ "name": "principal",
303
+ "type": "uint256",
304
+ "internalType": "uint256"
305
+ }
306
+ ],
307
+ "outputs": [
308
+ {
309
+ "name": "hanaFee",
310
+ "type": "uint256",
311
+ "internalType": "uint256"
312
+ },
313
+ {
314
+ "name": "meshFee",
315
+ "type": "uint256",
316
+ "internalType": "uint256"
317
+ }
318
+ ],
319
+ "stateMutability": "pure"
320
+ },
321
+ {
322
+ "type": "function",
323
+ "name": "hana",
324
+ "inputs": [],
325
+ "outputs": [
326
+ {
327
+ "name": "",
328
+ "type": "address",
329
+ "internalType": "address"
330
+ }
331
+ ],
332
+ "stateMutability": "view"
333
+ },
334
+ {
335
+ "type": "function",
336
+ "name": "hanaTreasury",
337
+ "inputs": [],
338
+ "outputs": [
339
+ {
340
+ "name": "",
341
+ "type": "address",
342
+ "internalType": "address"
343
+ }
344
+ ],
345
+ "stateMutability": "view"
346
+ },
347
+ {
348
+ "type": "function",
349
+ "name": "issuer",
350
+ "inputs": [],
351
+ "outputs": [
352
+ {
353
+ "name": "",
354
+ "type": "address",
355
+ "internalType": "address"
356
+ }
357
+ ],
358
+ "stateMutability": "view"
359
+ },
360
+ {
361
+ "type": "function",
362
+ "name": "lastMigrationReason",
363
+ "inputs": [],
364
+ "outputs": [
365
+ {
366
+ "name": "",
367
+ "type": "uint8",
368
+ "internalType": "enum HanaBondQuoteV2.MigrationReason"
369
+ }
370
+ ],
371
+ "stateMutability": "view"
372
+ },
373
+ {
374
+ "type": "function",
375
+ "name": "meshTreasury",
376
+ "inputs": [],
377
+ "outputs": [
378
+ {
379
+ "name": "",
380
+ "type": "address",
381
+ "internalType": "address"
382
+ }
383
+ ],
384
+ "stateMutability": "view"
385
+ },
386
+ {
387
+ "type": "function",
388
+ "name": "migrate",
389
+ "inputs": [],
390
+ "outputs": [
391
+ {
392
+ "name": "completed",
393
+ "type": "bool",
394
+ "internalType": "bool"
395
+ }
396
+ ],
397
+ "stateMutability": "nonpayable"
398
+ },
399
+ {
400
+ "type": "function",
401
+ "name": "migrated",
402
+ "inputs": [],
403
+ "outputs": [
404
+ {
405
+ "name": "",
406
+ "type": "bool",
407
+ "internalType": "bool"
408
+ }
409
+ ],
410
+ "stateMutability": "view"
411
+ },
412
+ {
413
+ "type": "function",
414
+ "name": "migratedAt",
415
+ "inputs": [],
416
+ "outputs": [
417
+ {
418
+ "name": "",
419
+ "type": "uint256",
420
+ "internalType": "uint256"
421
+ }
422
+ ],
423
+ "stateMutability": "view"
424
+ },
425
+ {
426
+ "type": "function",
427
+ "name": "migrationHana",
428
+ "inputs": [],
429
+ "outputs": [
430
+ {
431
+ "name": "",
432
+ "type": "uint256",
433
+ "internalType": "uint256"
434
+ }
435
+ ],
436
+ "stateMutability": "view"
437
+ },
438
+ {
439
+ "type": "function",
440
+ "name": "migrationPoolHana",
441
+ "inputs": [],
442
+ "outputs": [
443
+ {
444
+ "name": "",
445
+ "type": "uint256",
446
+ "internalType": "uint256"
447
+ }
448
+ ],
449
+ "stateMutability": "view"
450
+ },
451
+ {
452
+ "type": "function",
453
+ "name": "migrationPoolQuote",
454
+ "inputs": [],
455
+ "outputs": [
456
+ {
457
+ "name": "",
458
+ "type": "uint256",
459
+ "internalType": "uint256"
460
+ }
461
+ ],
462
+ "stateMutability": "view"
463
+ },
464
+ {
465
+ "type": "function",
466
+ "name": "migrationQuote",
467
+ "inputs": [],
468
+ "outputs": [
469
+ {
470
+ "name": "",
471
+ "type": "uint256",
472
+ "internalType": "uint256"
473
+ }
474
+ ],
475
+ "stateMutability": "view"
476
+ },
477
+ {
478
+ "type": "function",
479
+ "name": "migrationStatus",
480
+ "inputs": [],
481
+ "outputs": [
482
+ {
483
+ "name": "result",
484
+ "type": "tuple",
485
+ "internalType": "struct HanaBondQuoteV2.MigrationStatus",
486
+ "components": [
487
+ {
488
+ "name": "closed",
489
+ "type": "bool",
490
+ "internalType": "bool"
491
+ },
492
+ {
493
+ "name": "completed",
494
+ "type": "bool",
495
+ "internalType": "bool"
496
+ },
497
+ {
498
+ "name": "historyReady",
499
+ "type": "bool",
500
+ "internalType": "bool"
501
+ },
502
+ {
503
+ "name": "lastReason",
504
+ "type": "uint8",
505
+ "internalType": "enum HanaBondQuoteV2.MigrationReason"
506
+ },
507
+ {
508
+ "name": "closedAt",
509
+ "type": "uint256",
510
+ "internalType": "uint256"
511
+ },
512
+ {
513
+ "name": "migratedAt",
514
+ "type": "uint256",
515
+ "internalType": "uint256"
516
+ },
517
+ {
518
+ "name": "closingQuote",
519
+ "type": "uint256",
520
+ "internalType": "uint256"
521
+ },
522
+ {
523
+ "name": "windowSeconds",
524
+ "type": "uint256",
525
+ "internalType": "uint256"
526
+ },
527
+ {
528
+ "name": "averageX112",
529
+ "type": "uint256",
530
+ "internalType": "uint256"
531
+ },
532
+ {
533
+ "name": "spotX112",
534
+ "type": "uint256",
535
+ "internalType": "uint256"
536
+ }
537
+ ]
538
+ }
539
+ ],
540
+ "stateMutability": "view"
541
+ },
542
+ {
543
+ "type": "function",
544
+ "name": "netReserve",
545
+ "inputs": [],
546
+ "outputs": [
547
+ {
548
+ "name": "",
549
+ "type": "uint256",
550
+ "internalType": "uint256"
551
+ }
552
+ ],
553
+ "stateMutability": "view"
554
+ },
555
+ {
556
+ "type": "function",
557
+ "name": "observations",
558
+ "inputs": [
559
+ {
560
+ "name": "",
561
+ "type": "uint256",
562
+ "internalType": "uint256"
563
+ }
564
+ ],
565
+ "outputs": [
566
+ {
567
+ "name": "timestamp",
568
+ "type": "uint256",
569
+ "internalType": "uint256"
570
+ },
571
+ {
572
+ "name": "cumulative",
573
+ "type": "uint256",
574
+ "internalType": "uint256"
575
+ }
576
+ ],
577
+ "stateMutability": "view"
578
+ },
579
+ {
580
+ "type": "function",
581
+ "name": "pair",
582
+ "inputs": [],
583
+ "outputs": [
584
+ {
585
+ "name": "",
586
+ "type": "address",
587
+ "internalType": "address"
588
+ }
589
+ ],
590
+ "stateMutability": "view"
591
+ },
592
+ {
593
+ "type": "function",
594
+ "name": "pointsAmount",
595
+ "inputs": [],
596
+ "outputs": [
597
+ {
598
+ "name": "",
599
+ "type": "uint256",
600
+ "internalType": "uint256"
601
+ }
602
+ ],
603
+ "stateMutability": "view"
604
+ },
605
+ {
606
+ "type": "function",
607
+ "name": "pointsBps",
608
+ "inputs": [],
609
+ "outputs": [
610
+ {
611
+ "name": "",
612
+ "type": "uint256",
613
+ "internalType": "uint256"
614
+ }
615
+ ],
616
+ "stateMutability": "view"
617
+ },
618
+ {
619
+ "type": "function",
620
+ "name": "pool",
621
+ "inputs": [],
622
+ "outputs": [
623
+ {
624
+ "name": "",
625
+ "type": "address",
626
+ "internalType": "address"
627
+ }
628
+ ],
629
+ "stateMutability": "view"
630
+ },
631
+ {
632
+ "type": "function",
633
+ "name": "quote",
634
+ "inputs": [],
635
+ "outputs": [
636
+ {
637
+ "name": "",
638
+ "type": "address",
639
+ "internalType": "address"
640
+ }
641
+ ],
642
+ "stateMutability": "view"
643
+ },
644
+ {
645
+ "type": "function",
646
+ "name": "quoteBuyBudget",
647
+ "inputs": [
648
+ {
649
+ "name": "budget",
650
+ "type": "uint256",
651
+ "internalType": "uint256"
652
+ }
653
+ ],
654
+ "outputs": [
655
+ {
656
+ "name": "amount",
657
+ "type": "uint256",
658
+ "internalType": "uint256"
659
+ },
660
+ {
661
+ "name": "principal",
662
+ "type": "uint256",
663
+ "internalType": "uint256"
664
+ },
665
+ {
666
+ "name": "hanaFee",
667
+ "type": "uint256",
668
+ "internalType": "uint256"
669
+ },
670
+ {
671
+ "name": "meshFee",
672
+ "type": "uint256",
673
+ "internalType": "uint256"
674
+ }
675
+ ],
676
+ "stateMutability": "view"
677
+ },
678
+ {
679
+ "type": "function",
680
+ "name": "quoteBuyExact",
681
+ "inputs": [
682
+ {
683
+ "name": "requested",
684
+ "type": "uint256",
685
+ "internalType": "uint256"
686
+ }
687
+ ],
688
+ "outputs": [
689
+ {
690
+ "name": "amount",
691
+ "type": "uint256",
692
+ "internalType": "uint256"
693
+ },
694
+ {
695
+ "name": "principal",
696
+ "type": "uint256",
697
+ "internalType": "uint256"
698
+ },
699
+ {
700
+ "name": "hanaFee",
701
+ "type": "uint256",
702
+ "internalType": "uint256"
703
+ },
704
+ {
705
+ "name": "meshFee",
706
+ "type": "uint256",
707
+ "internalType": "uint256"
708
+ }
709
+ ],
710
+ "stateMutability": "view"
711
+ },
712
+ {
713
+ "type": "function",
714
+ "name": "quoteSell",
715
+ "inputs": [
716
+ {
717
+ "name": "amount",
718
+ "type": "uint256",
719
+ "internalType": "uint256"
720
+ }
721
+ ],
722
+ "outputs": [
723
+ {
724
+ "name": "principal",
725
+ "type": "uint256",
726
+ "internalType": "uint256"
727
+ },
728
+ {
729
+ "name": "hanaFee",
730
+ "type": "uint256",
731
+ "internalType": "uint256"
732
+ },
733
+ {
734
+ "name": "meshFee",
735
+ "type": "uint256",
736
+ "internalType": "uint256"
737
+ }
738
+ ],
739
+ "stateMutability": "view"
740
+ },
741
+ {
742
+ "type": "function",
743
+ "name": "registry",
744
+ "inputs": [],
745
+ "outputs": [
746
+ {
747
+ "name": "",
748
+ "type": "address",
749
+ "internalType": "contract HanaBondFactoryQuoteV2"
750
+ }
751
+ ],
752
+ "stateMutability": "view"
753
+ },
754
+ {
755
+ "type": "function",
756
+ "name": "releaseStartedAt",
757
+ "inputs": [],
758
+ "outputs": [
759
+ {
760
+ "name": "",
761
+ "type": "uint256",
762
+ "internalType": "uint256"
763
+ }
764
+ ],
765
+ "stateMutability": "view"
766
+ },
767
+ {
768
+ "type": "function",
769
+ "name": "reserveAt",
770
+ "inputs": [
771
+ {
772
+ "name": "s",
773
+ "type": "uint256",
774
+ "internalType": "uint256"
775
+ }
776
+ ],
777
+ "outputs": [
778
+ {
779
+ "name": "",
780
+ "type": "uint256",
781
+ "internalType": "uint256"
782
+ }
783
+ ],
784
+ "stateMutability": "view"
785
+ },
786
+ {
787
+ "type": "function",
788
+ "name": "router",
789
+ "inputs": [],
790
+ "outputs": [
791
+ {
792
+ "name": "",
793
+ "type": "address",
794
+ "internalType": "address"
795
+ }
796
+ ],
797
+ "stateMutability": "view"
798
+ },
799
+ {
800
+ "type": "function",
801
+ "name": "sell",
802
+ "inputs": [
803
+ {
804
+ "name": "amount",
805
+ "type": "uint256",
806
+ "internalType": "uint256"
807
+ },
808
+ {
809
+ "name": "minReceive",
810
+ "type": "uint256",
811
+ "internalType": "uint256"
812
+ },
813
+ {
814
+ "name": "recipient",
815
+ "type": "address",
816
+ "internalType": "address"
817
+ },
818
+ {
819
+ "name": "deadline",
820
+ "type": "uint256",
821
+ "internalType": "uint256"
822
+ }
823
+ ],
824
+ "outputs": [
825
+ {
826
+ "name": "receiveAmount",
827
+ "type": "uint256",
828
+ "internalType": "uint256"
829
+ }
830
+ ],
831
+ "stateMutability": "nonpayable"
832
+ },
833
+ {
834
+ "type": "function",
835
+ "name": "sellQuota",
836
+ "inputs": [
837
+ {
838
+ "name": "account",
839
+ "type": "address",
840
+ "internalType": "address"
841
+ }
842
+ ],
843
+ "outputs": [
844
+ {
845
+ "name": "",
846
+ "type": "uint256",
847
+ "internalType": "uint256"
848
+ }
849
+ ],
850
+ "stateMutability": "view"
851
+ },
852
+ {
853
+ "type": "function",
854
+ "name": "sellable",
855
+ "inputs": [
856
+ {
857
+ "name": "account",
858
+ "type": "address",
859
+ "internalType": "address"
860
+ }
861
+ ],
862
+ "outputs": [
863
+ {
864
+ "name": "",
865
+ "type": "uint256",
866
+ "internalType": "uint256"
867
+ }
868
+ ],
869
+ "stateMutability": "view"
870
+ },
871
+ {
872
+ "type": "function",
873
+ "name": "sold",
874
+ "inputs": [],
875
+ "outputs": [
876
+ {
877
+ "name": "",
878
+ "type": "uint256",
879
+ "internalType": "uint256"
880
+ }
881
+ ],
882
+ "stateMutability": "view"
883
+ },
884
+ {
885
+ "type": "function",
886
+ "name": "startEarlyRelease",
887
+ "inputs": [],
888
+ "outputs": [],
889
+ "stateMutability": "nonpayable"
890
+ },
891
+ {
892
+ "type": "function",
893
+ "name": "v2Factory",
894
+ "inputs": [],
895
+ "outputs": [
896
+ {
897
+ "name": "",
898
+ "type": "address",
899
+ "internalType": "address"
900
+ }
901
+ ],
902
+ "stateMutability": "view"
903
+ },
904
+ {
905
+ "type": "function",
906
+ "name": "virtualQuote",
907
+ "inputs": [],
908
+ "outputs": [
909
+ {
910
+ "name": "",
911
+ "type": "uint256",
912
+ "internalType": "uint256"
913
+ }
914
+ ],
915
+ "stateMutability": "view"
916
+ },
917
+ {
918
+ "type": "function",
919
+ "name": "wrappedNative",
920
+ "inputs": [],
921
+ "outputs": [
922
+ {
923
+ "name": "",
924
+ "type": "address",
925
+ "internalType": "address"
926
+ }
927
+ ],
928
+ "stateMutability": "view"
929
+ },
930
+ {
931
+ "type": "event",
932
+ "name": "BondClosed",
933
+ "inputs": [
934
+ {
935
+ "name": "pool",
936
+ "type": "address",
937
+ "indexed": true,
938
+ "internalType": "address"
939
+ },
940
+ {
941
+ "name": "closedAt",
942
+ "type": "uint256",
943
+ "indexed": false,
944
+ "internalType": "uint256"
945
+ },
946
+ {
947
+ "name": "closingQuote",
948
+ "type": "uint256",
949
+ "indexed": false,
950
+ "internalType": "uint256"
951
+ }
952
+ ],
953
+ "anonymous": false
954
+ },
955
+ {
956
+ "type": "event",
957
+ "name": "Bought",
958
+ "inputs": [
959
+ {
960
+ "name": "account",
961
+ "type": "address",
962
+ "indexed": true,
963
+ "internalType": "address"
964
+ },
965
+ {
966
+ "name": "hanaOut",
967
+ "type": "uint256",
968
+ "indexed": false,
969
+ "internalType": "uint256"
970
+ },
971
+ {
972
+ "name": "principal",
973
+ "type": "uint256",
974
+ "indexed": false,
975
+ "internalType": "uint256"
976
+ },
977
+ {
978
+ "name": "hanaFee",
979
+ "type": "uint256",
980
+ "indexed": false,
981
+ "internalType": "uint256"
982
+ },
983
+ {
984
+ "name": "meshFee",
985
+ "type": "uint256",
986
+ "indexed": false,
987
+ "internalType": "uint256"
988
+ }
989
+ ],
990
+ "anonymous": false
991
+ },
992
+ {
993
+ "type": "event",
994
+ "name": "EarlyReleaseStarted",
995
+ "inputs": [
996
+ {
997
+ "name": "issuer",
998
+ "type": "address",
999
+ "indexed": true,
1000
+ "internalType": "address"
1001
+ },
1002
+ {
1003
+ "name": "startedAt",
1004
+ "type": "uint256",
1005
+ "indexed": false,
1006
+ "internalType": "uint256"
1007
+ }
1008
+ ],
1009
+ "anonymous": false
1010
+ },
1011
+ {
1012
+ "type": "event",
1013
+ "name": "Migrated",
1014
+ "inputs": [
1015
+ {
1016
+ "name": "pair",
1017
+ "type": "address",
1018
+ "indexed": true,
1019
+ "internalType": "address"
1020
+ },
1021
+ {
1022
+ "name": "hanaAmount",
1023
+ "type": "uint256",
1024
+ "indexed": false,
1025
+ "internalType": "uint256"
1026
+ },
1027
+ {
1028
+ "name": "quoteAmount",
1029
+ "type": "uint256",
1030
+ "indexed": false,
1031
+ "internalType": "uint256"
1032
+ },
1033
+ {
1034
+ "name": "burnedLP",
1035
+ "type": "uint256",
1036
+ "indexed": false,
1037
+ "internalType": "uint256"
1038
+ },
1039
+ {
1040
+ "name": "excessHana",
1041
+ "type": "uint256",
1042
+ "indexed": false,
1043
+ "internalType": "uint256"
1044
+ },
1045
+ {
1046
+ "name": "excessQuote",
1047
+ "type": "uint256",
1048
+ "indexed": false,
1049
+ "internalType": "uint256"
1050
+ },
1051
+ {
1052
+ "name": "poolExisted",
1053
+ "type": "bool",
1054
+ "indexed": false,
1055
+ "internalType": "bool"
1056
+ },
1057
+ {
1058
+ "name": "poolHana",
1059
+ "type": "uint256",
1060
+ "indexed": false,
1061
+ "internalType": "uint256"
1062
+ },
1063
+ {
1064
+ "name": "poolQuote",
1065
+ "type": "uint256",
1066
+ "indexed": false,
1067
+ "internalType": "uint256"
1068
+ }
1069
+ ],
1070
+ "anonymous": false
1071
+ },
1072
+ {
1073
+ "type": "event",
1074
+ "name": "MigrationDeferred",
1075
+ "inputs": [
1076
+ {
1077
+ "name": "pool",
1078
+ "type": "address",
1079
+ "indexed": true,
1080
+ "internalType": "address"
1081
+ },
1082
+ {
1083
+ "name": "reason",
1084
+ "type": "uint8",
1085
+ "indexed": false,
1086
+ "internalType": "enum HanaBondQuoteV2.MigrationReason"
1087
+ }
1088
+ ],
1089
+ "anonymous": false
1090
+ },
1091
+ {
1092
+ "type": "event",
1093
+ "name": "ObservationRecorded",
1094
+ "inputs": [
1095
+ {
1096
+ "name": "slot",
1097
+ "type": "uint256",
1098
+ "indexed": true,
1099
+ "internalType": "uint256"
1100
+ },
1101
+ {
1102
+ "name": "timestamp",
1103
+ "type": "uint256",
1104
+ "indexed": false,
1105
+ "internalType": "uint256"
1106
+ },
1107
+ {
1108
+ "name": "cumulative",
1109
+ "type": "uint256",
1110
+ "indexed": false,
1111
+ "internalType": "uint256"
1112
+ }
1113
+ ],
1114
+ "anonymous": false
1115
+ },
1116
+ {
1117
+ "type": "event",
1118
+ "name": "SellQuotaChanged",
1119
+ "inputs": [
1120
+ {
1121
+ "name": "account",
1122
+ "type": "address",
1123
+ "indexed": true,
1124
+ "internalType": "address"
1125
+ },
1126
+ {
1127
+ "name": "quota",
1128
+ "type": "uint256",
1129
+ "indexed": false,
1130
+ "internalType": "uint256"
1131
+ }
1132
+ ],
1133
+ "anonymous": false
1134
+ },
1135
+ {
1136
+ "type": "event",
1137
+ "name": "Sold",
1138
+ "inputs": [
1139
+ {
1140
+ "name": "account",
1141
+ "type": "address",
1142
+ "indexed": true,
1143
+ "internalType": "address"
1144
+ },
1145
+ {
1146
+ "name": "recipient",
1147
+ "type": "address",
1148
+ "indexed": true,
1149
+ "internalType": "address"
1150
+ },
1151
+ {
1152
+ "name": "hanaIn",
1153
+ "type": "uint256",
1154
+ "indexed": false,
1155
+ "internalType": "uint256"
1156
+ },
1157
+ {
1158
+ "name": "principal",
1159
+ "type": "uint256",
1160
+ "indexed": false,
1161
+ "internalType": "uint256"
1162
+ },
1163
+ {
1164
+ "name": "hanaFee",
1165
+ "type": "uint256",
1166
+ "indexed": false,
1167
+ "internalType": "uint256"
1168
+ },
1169
+ {
1170
+ "name": "meshFee",
1171
+ "type": "uint256",
1172
+ "indexed": false,
1173
+ "internalType": "uint256"
1174
+ }
1175
+ ],
1176
+ "anonymous": false
1177
+ },
1178
+ {
1179
+ "type": "error",
1180
+ "name": "Closed",
1181
+ "inputs": []
1182
+ },
1183
+ {
1184
+ "type": "error",
1185
+ "name": "EarlyReleaseUnavailable",
1186
+ "inputs": []
1187
+ },
1188
+ {
1189
+ "type": "error",
1190
+ "name": "InvalidPool",
1191
+ "inputs": []
1192
+ },
1193
+ {
1194
+ "type": "error",
1195
+ "name": "InvalidTrade",
1196
+ "inputs": []
1197
+ },
1198
+ {
1199
+ "type": "error",
1200
+ "name": "InvalidTransfer",
1201
+ "inputs": []
1202
+ },
1203
+ {
1204
+ "type": "error",
1205
+ "name": "ReentrancyGuardReentrantCall",
1206
+ "inputs": []
1207
+ },
1208
+ {
1209
+ "type": "error",
1210
+ "name": "SafeERC20FailedOperation",
1211
+ "inputs": [
1212
+ {
1213
+ "name": "token",
1214
+ "type": "address",
1215
+ "internalType": "address"
1216
+ }
1217
+ ]
1218
+ },
1219
+ {
1220
+ "type": "error",
1221
+ "name": "SellQuotaExceeded",
1222
+ "inputs": []
1223
+ },
1224
+ {
1225
+ "type": "error",
1226
+ "name": "Slippage",
1227
+ "inputs": []
1228
+ },
1229
+ {
1230
+ "type": "error",
1231
+ "name": "Unauthorized",
1232
+ "inputs": []
1233
+ }
1234
+ ],
1235
+ "creationBytecode": "0x61024060405234801561001157600080fd5b50604051615300380380615300833981016040819052610030916104c1565b6001600055336102208190526001600160a01b0388811660805287811660a052861660c0526040805163eb6d3a1160e01b8152905163eb6d3a11916004808201926020929091908290030181865afa158015610090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b49190610544565b6001600160a01b03166101a0816001600160a01b031681525050610220516001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101339190610544565b6001600160a01b031660e0816001600160a01b031681525050610220516001600160a01b031663b4b57c396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561018d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b19190610544565b6001600160a01b0316610100816001600160a01b031681525050610220516001600160a01b0316637f646d076040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102309190610544565b6001600160a01b03908116610120528316610160526101c0829052612710610264836b033b2e3c9fd0803ce8000000610566565b61026e9190610591565b6101e052801515610200526101808490526101005160c05160405163e6a4390560e01b81526001600160a01b038a811660048301529182166024820152600092919091169063e6a4390590604401602060405180830381865afa1580156102d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fd9190610544565b90506001600160a01b03811661038d576101005160c0516040516364e329cb60e11b81526001600160a01b038b81166004830152918216602482015291169063c9c65396906044016020604051808303816000875af1158015610364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103889190610544565b61038f565b805b6001600160a01b031661014081905215806104325750610140516101005160c05160405163e6a4390560e01b81526001600160a01b038c8116600483015291821660248201529281169291169063e6a4390590604401602060405180830381865afa158015610402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104269190610544565b6001600160a01b031614155b1561044f5760405162820f3560e61b815260040160405180910390fd5b6001600160a01b03871630148061047a5750610140516001600160a01b0316876001600160a01b0316145b156104985760405163d69b537960e01b815260040160405180910390fd5b50505050505050506105b3565b80516001600160a01b03811681146104bc57600080fd5b919050565b600080600080600080600060e0888a0312156104dc57600080fd5b6104e5886104a5565b96506104f3602089016104a5565b9550610501604089016104a5565b60608901519095509350610517608089016104a5565b60a089015160c08a01519194509250801515811461053457600080fd5b8091505092959891949750929550565b60006020828403121561055657600080fd5b61055f826104a5565b9392505050565b808202811582820484141761058b57634e487b7160e01b600052601160045260246000fd5b92915050565b6000826105ae57634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051614afb6108056000396000818161073101528181610db101526134a501526000818161064701526117fc015260006106ae01526000610a1301526000818161032e01528181610a67015281816113c001526120ab01526000818161042b0152611a010152600081816104be01526117bd01526000818161047201528181610c3901528181610ce801528181611a5e015281816123d10152818161288501528181612b3601528181612df201528181612e9e0152818161310901528181613154015281816133da0152818161347d01526135410152600081816107650152818161153c015281816122fa0152818161333b015261338601526000818161092b0152612b5c01526000610a9b01526000818161086701528181610d16015281816113ea0152818161142d015281816114a5015281816114d00152818161151b01528181612036015281816120d50152818161212f015281816121b2015281816121f80152818161228e015281816122d901528181612b0901528181612ece01528181613133015281816132a80152613365015260008181610acf015281816114f101526122af01526000818161095f01528181610c6401528181610e3a0152818161126d015281816112e70152818161132d0152818161172701528181611b960152818161232401528181612ae101528181612dc3015281816130e80152818161321a0152818161331a0152818161344c015261361a0152614afb6000f3fe60806040526004361061031e5760003560e01c80637f646d07116101ab578063a8aa1b31116100f7578063c979e56b11610095578063e4d453e01161006f578063e4d453e014610a35578063eb6d3a1114610a55578063f887ea4014610a89578063f892d87b14610abd57600080fd5b8063c979e56b146109cb578063d51684a7146109eb578063d6b852c214610a0157600080fd5b8063b4e0ecf2116100d1578063b4e0ecf21461094d578063c2d107f114610981578063c796817b14610996578063c8cfaae4146109b657600080fd5b8063a8aa1b31146108da578063aedf220b14610903578063b4b57c391461091957600080fd5b8063900ef0ee1161016457806398aaa62b1161013e57806398aaa62b1461083f578063999b93af146108555780639ef27b0014610889578063a64190c41461089f57600080fd5b8063900ef0ee146107fd5780639042454314610813578063942062521461082957600080fd5b80637f646d07146107535780638113f0d9146107875780638a038a541461079c5780638b21e484146107bc5780638ee25281146107d25780638fd3ab80146107e857600080fd5b806332b8b2151161026a5780634cecd3f61161022357806361f5b8b3116101fd57806361f5b8b31461069c5780636be6e9d9146106d05780636fed787d146106f05780637b1039991461071f57600080fd5b80634cecd3f6146106355780634e80955c14610669578063554a21891461068957600080fd5b806332b8b215146105755780633833a4f11461058b5780633ded58be146105a057806343fd3cdd146105e057806346d201ee146105f55780634acc79ed1461061557600080fd5b806316875160116102d7578063252c09d7116102b1578063252c09d7146104e057806327efc086146105155780632861c7d1146105355780632c678c641461055457600080fd5b8063168751601461044d57806316f0115b146104605780631d143848146104ac57600080fd5b806302c7e7af1461037357806302fb0c5e1461039c57806306731d33146103cd5780630f15f4c0146103ef57806313821bf714610404578063147ece661461041957600080fd5b3661036e57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461036c57604051632f35253160e01b815260040160405180910390fd5b005b600080fd5b34801561037f57600080fd5b5061038960015481565b6040519081526020015b60405180910390f35b3480156103a857600080fd5b506049546103bd90600160c81b900460ff1681565b6040519015158152602001610393565b3480156103d957600080fd5b506103e2610af1565b60405161039391906147f1565b3480156103fb57600080fd5b5061036c610da6565b34801561041057600080fd5b50610389603c81565b34801561042557600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b61038961045b36600461487d565b610ee0565b34801561046c57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610393565b3480156104b857600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec57600080fd5b506105006104fb3660046148a9565b610f58565b60408051928352602083019190915201610393565b34801561052157600080fd5b506103896b033b2e3c9fd0803ce800000081565b34801561054157600080fd5b506103896a7c13bc4b2c133c5600000081565b34801561056057600080fd5b506049546103bd90600160d01b900460ff1681565b34801561058157600080fd5b5061038961070881565b34801561059757600080fd5b50610389610f7a565b3480156105ac57600080fd5b506105c06105bb3660046148a9565b610f94565b604080519485526020850193909352918301526060820152608001610393565b3480156105ec57600080fd5b5061038960c881565b34801561060157600080fd5b506103896106103660046148d7565b611038565b34801561062157600080fd5b506105006106303660046148a9565b611073565b34801561064157600080fd5b506103bd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067557600080fd5b506103896b02baf7b5c99a6c5c6d00000081565b61038961069736600461487d565b6110ad565b3480156106a857600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b3480156106dc57600080fd5b506103896b0219aada9b14535aca00000081565b3480156106fc57600080fd5b5060495461071290640100000000900460ff1681565b60405161039391906148f4565b34801561072b57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561075f57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561079357600080fd5b506103896110f0565b3480156107a857600080fd5b506103896107b7366004614902565b6110ff565b3480156107c857600080fd5b50610389604a5481565b3480156107de57600080fd5b5061038960045481565b3480156107f457600080fd5b506103bd6115d5565b34801561080957600080fd5b5061038960055481565b34801561081f57600080fd5b50610389604b5481565b34801561083557600080fd5b5061038960085481565b34801561084b57600080fd5b5061038960025481565b34801561086157600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561089557600080fd5b5061038960075481565b3480156108ab57600080fd5b506108bf6108ba3660046148a9565b611655565b60408051938452602084019290925290820152606001610393565b3480156108e657600080fd5b50604954610494906501000000000090046001600160a01b031681565b34801561090f57600080fd5b5061038960035481565b34801561092557600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561095957600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561098d57600080fd5b50610389602081565b3480156109a257600080fd5b506103896109b13660046148d7565b6116c1565b3480156109c257600080fd5b5061036c6117aa565b3480156109d757600080fd5b506105c06109e63660046148a9565b611895565b3480156109f757600080fd5b5061038960065481565b348015610a0d57600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b348015610a4157600080fd5b50610389610a503660046148a9565b6119b0565b348015610a6157600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b348015610a9557600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b348015610ac957600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b610b47604080516101408101825260008082526020820181905291810182905290606082019081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6b0219aada9b14535aca000000600154148015610b6e5750604954600160c81b900460ff16155b1515815260495460ff600160d01b820481161515602084015260608301916401000000009004166003811115610ba657610ba66147b9565b90816003811115610bb957610bb96147b9565b9052506007546080820152604a5460a082015260085460c0820152600080610bdf611a57565b915091508115610c2257600080610bf583611d66565b80158015604089015260e088018290529193509150610c1f57610c18818361496d565b6101008601525b50505b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190614981565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d819190614981565b90508115610d9f57610d9881600160701b84611e78565b6101208601525b5050505090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580610de75750604954600160c81b900460ff165b15610e04576040516282b42960e81b815260040160405180910390fd5b610e256a7c13bc4b2c133c560000006b0219aada9b14535aca00000061499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ead9190614981565b14610ecb57604051632f35253160e01b815260040160405180910390fd5b6049805460ff60c81b1916600160c81b179055565b6000610eea611f2d565b6000806000610ef887610f94565b929650909450925090508581610f0e848661499a565b610f18919061499a565b1115610f37576040516307dd37f760e41b815260040160405180910390fd5b610f448484848489611f57565b505050610f516001600055565b9392505050565b60098160208110610f6857600080fd5b60020201805460019091015490915082565b6000604b54600003610f8d5750604a5490565b50604b5490565b600080600080610fa2612469565b84600003610fc35760405163d69b537960e01b815260040160405180910390fd5b600154610fdc906b0219aada9b14535aca0000006149ad565b8511610fe85784611001565b600154611001906b0219aada9b14535aca0000006149ad565b935060025461101785600154610a50919061499a565b61102191906149ad565b925061102c83611073565b94969395509392915050565b604954600090600160d01b900460ff1661106a576001600160a01b0382166000908152604c602052604090205461106d565b60005b92915050565b6000806103e86110848460046149c0565b61108e919061496d565b91508161109c60648561496d565b6110a691906149ad565b9050915091565b60006110b7611f2d565b60008060006110c587611895565b9296509094509250905085841015610f37576040516307dd37f760e41b815260040160405180910390fd5b6110fc603c60206149c0565b81565b6000611109611f2d565b611112826124a9565b6001600160a01b038316158061113057506001600160a01b03831630145b1561114e5760405163d69b537960e01b815260040160405180910390fd5b336000908152604c60205260409020548086111561117f57604051632c5374f960e01b815260040160405180910390fd5b600080600061118d89611655565b919450925090508061119f83856149ad565b6111a991906149ad565b9450878510156111cc576040516307dd37f760e41b815260040160405180910390fd5b6111d689856149ad565b336000818152604c60205260409020919091557fb2e960e0adf7f3443afba08bed10ecb80f72394e72e60f9e4c325e6bce0132bf6112148b876149ad565b60405190815260200160405180910390a2886001600082825461123791906149ad565b92505081905550826002600082825461125091906149ad565b90915550506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e09190614981565b905061130e7f000000000000000000000000000000000000000000000000000000000000000033308d6124cd565b6113188a8261499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190614981565b146113be57604051632f35253160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036114a057604051632e1a7d4d60e01b8152600481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561147957600080fd5b505af115801561148d573d6000803e3d6000fd5b5050505061149b888761253a565b6114cb565b6114cb7f000000000000000000000000000000000000000000000000000000000000000089886125bf565b6115167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856125bf565b6115617f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b604080518b815260208101869052908101849052606081018390526001600160a01b0389169033907f89bc96e242cf3b1e6040a8f5123c29dbf1e48d876ded5856f1668191a8a7658e9060800160405180910390a36115be6127ca565b50505050506115cd6001600055565b949350505050565b60006115df611f2d565b604954600160d01b900460ff16156115f957506001611648565b6b0219aada9b14535aca00000060015414158061161f5750604954600160c81b900460ff165b1561163d57604051631cdde67b60e01b815260040160405180910390fd5b6116456127fd565b90505b6116526001600055565b90565b6000806000611662612469565b831580611670575060015484115b1561168e5760405163d69b537960e01b815260040160405180910390fd5b61169f84600154610a5091906149ad565b6002546116ac91906149ad565b92506116b783611073565b9395909450915050565b604954600090600160c81b900460ff1615806116e65750604954600160d01b900460ff165b156116f357506000919050565b6001600160a01b038281166000818152604c60205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117949190614981565b90508082106117a357806115cd565b5092915050565b6117b2611f2d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117fa576040516282b42960e81b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015806118285750604b5415155b156118465760405163cae54ae360e01b815260040160405180910390fd5b61184e612469565b42604b81905560405190815233907f85e1ef7b0313e3485755af9d396b0e69d958f9930ba5f57564127a6f61b6eefd9060200160405180910390a26118936001600055565b565b6000806000806118a3612469565b846000036118c45760405163d69b537960e01b815260040160405180910390fd5b6000806001546b0219aada9b14535aca0000006118e191906149ad565b90505b8082101561197557600060026118fa84846149ad565b61190590600161499a565b61190f919061496d565b611919908461499a565b9050600060025461193183600154610a50919061499a565b61193b91906149ad565b90508861194960648361496d565b611953908361499a565b116119605781935061196e565b61196b6001836149ad565b92505b50506118e4565b816000036119965760405163d69b537960e01b815260040160405180910390fd5b61199f82610f94565b955095509550955050509193509193565b60006b0219aada9b14535aca0000008211156119df5760405163d69b537960e01b815260040160405180910390fd5b60006119f7836b02baf7b5c99a6c5c6d0000006149ad565b90506000611a25847f00000000000000000000000000000000000000000000000000000000000000006149c0565b9050611a3182826149d7565b15611a3d576001611a40565b60005b60ff16611a4d838361496d565b6115cd919061499a565b60008060007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae19190614981565b600003611af357506000928392509050565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190614a07565b925092509250826001600160701b031660001480611b7f57506001600160701b038216155b15611b9257506000958695509350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c209190614a57565b6001600160a01b031614905080611c9857846001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c939190614981565b611cfa565b846001600160a01b0316635909c0d56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa9190614981565b9550600081611d095783611d0b565b845b6001600160701b03169050600082611d235785611d25565b845b6001600160701b031690504284900363ffffffff811683600160701b840281611d5057611d50614941565b0402890198505060019850505050505050509091565b600080610708421015611d7e57506000928392509050565b6000611d8c610708426149ad565b905060008060005b6020811015611e5157604954600163ffffffff8381169190911b9091161615611e4957600060098260208110611dcc57611dcc614a74565b600202016040518060400160405290816000820154815260200160018201548152505090508481600001511180611e185750611e0a603c60206149c0565b8151611e1690426149ad565b115b15611e235750611e49565b831580611e305750805183105b15611e475780516020820151890397506001945092505b505b600101611d94565b50818015611e5e57508415155b15611e7057611e6d81426149ad565b93505b505050915091565b6000806000611e8786866128ed565b9150915081600003611eac57838181611ea257611ea2614941565b0492505050610f51565b818411611ec357611ec3600385150260111861290b565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b600260005403611f5057604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b611f60816124a9565b336000908152604c6020526040812054611f7b90879061499a565b336000818152604c60205260409081902083905551919250907fb2e960e0adf7f3443afba08bed10ecb80f72394e72e60f9e4c325e6bce0132bf90611fc39084815260200190565b60405180910390a28560016000828254611fdd919061499a565b925050819055508460026000828254611ff6919061499a565b909155506000905083612009868861499a565b612013919061499a565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561207d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a19190614981565b905034156121a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158061210957508134105b156121275760405163d69b537960e01b815260040160405180910390fd5b81156121a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b50505050505b6121d9565b81156121d9576121d97f00000000000000000000000000000000000000000000000000000000000000003330856124cd565b6121e3828261499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b9190614981565b1461228957604051632f35253160e01b815260040160405180910390fd5b6122d47f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000886125bf565b61231f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000876125bf565b61234a7f0000000000000000000000000000000000000000000000000000000000000000338a6125bf565b60408051898152602081018990529081018790526060810186905233907f27330bd7589580547b6437e08f9c60653de63691d2d2b2c13bff9ee67da2a68d9060800160405180910390a26b0219aada9b14535aca0000006001540361243c576049805460ff60c81b1916905542600781905560025460088190556040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016927ffa93b615fecab715dce428daa1553fb5c24c02f50a81d4971bb86b1937e3c4f29261242692918252602082015260400190565b60405180910390a26124366127fd565b50612444565b6124446127ca565b8134111561245f5761245f3361245a84346149ad565b61253a565b5050505050505050565b604954600160c81b900460ff16158061248b5750604954600160d01b900460ff165b1561189357604051631cdde67b60e01b815260040160405180910390fd5b428110156124ca5760405163d69b537960e01b815260040160405180910390fd5b50565b6040516001600160a01b0384811660248301528381166044830152606482018390526125349186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061291d565b50505050565b80600003612546575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612593576040519150601f19603f3d011682016040523d82523d6000602084013e612598565b606091505b50509050806125ba57604051632f35253160e01b815260040160405180910390fd5b505050565b806000036125cc57505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126379190614981565b6040516370a0823160e01b81526001600160a01b0385811660048301529192506000918616906370a0823190602401602060405180830381865afa158015612683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a79190614981565b90506126b4858585612992565b6126be83836149ad565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015612702573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127269190614981565b1415806127a55750612738838261499a565b6040516370a0823160e01b81526001600160a01b0386811660048301528716906370a0823190602401602060405180830381865afa15801561277e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a29190614981565b14155b156127c357604051632f35253160e01b815260040160405180910390fd5b5050505050565b6000806127d5611a57565b9150915081156127ec576127e8816129c3565b5050565b6049805463ffffffff191690555050565b600080600061280a611a57565b9150915060008083156128335761282083611d66565b909250905061282e836129c3565b612841565b6049805463ffffffff191690555b600061284d8383612aca565b9096509050856128e5576049805482919064ff00000000191664010000000083600381111561287e5761287e6147b9565b02179055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f886f47bb880c2e015d8bdca3a345bd9578546a41b00952e356923daa465d1f60826040516128dc91906148f4565b60405180910390a25b505050505090565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b600080602060008451602086016000885af180612940576040513d6000823e3d81fd5b50506000513d91508115612958578060011415612965565b6001600160a01b0384163b155b1561253457604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b6040516001600160a01b038381166024830152604482018390526125ba91859182169063a9059cbb90606401612502565b60006129d0603c4261496d565b905060006129df6020836149d7565b604954909150600163ffffffff8084169190911b918216161580612a26575082603c60098460208110612a1457612a14614a74565b6002020154612a23919061496d565b14155b156125345760405180604001604052804281526020018581525060098360208110612a5357612a53614a74565b8251600291909102919091019081556020918201516001909101556049805463ffffffff8481169082161763ffffffff199091161790556040805142815291820186905283917f5d2f23d17c4ad5347ae00f7c12f3c1b984d44422cecfcba0009c80d996899f72910160405180910390a250505050565b60405163e6a4390560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015260009182917f000000000000000000000000000000000000000000000000000000000000000091828216917f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015612ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc79190614a57565b6001600160a01b031614612bed5760405162820f3560e61b815260040160405180910390fd5b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c519190614981565b6000141590506000808215612dae57836001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c9b57600080fd5b505af1158015612caf573d6000803e3d6000fd5b50505050600080612cbf866135ab565b915091508160001480612cd0575080155b15612ced5760405162820f3560e61b815260040160405180910390fd5b88600003612d085760006001975097505050505050506135a4565b612d1482828c8c6136eb565b612d2b5760006002975097505050505050506135a4565b6000612d526a7c13bc4b2c133c56000000612d4d856001600160701b036149ad565b613772565b600854909150600090612d7090612d4d856001600160701b036149ad565b90506000612d7f838587611e78565b9050818111612d9357829650809550612da4565b612d9e828686611e78565b96508195505b50505050506130e3565b600080612dba866135ab565b915091506000827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612e3c91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7d9190614981565b612e8791906149ad565b6040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291925060009184917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3b9190614981565b612f4591906149ad565b90506000886001600160a01b031663ba9a7a566040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fab9190614981565b612fb690600161499a565b905060006130556040518060e00160405280888152602001878152602001612fff876a7c13bc4b2c133c56000000612fee919061499a565b612d4d8b6001600160701b036149ad565b815260200161302686600854613015919061499a565b612d4d8a6001600160701b036149ad565b81526a7c13bc4b2c133c560000006020820152600854604082015260600161304e85806149c0565b9052613782565b9050806040015161307757600060039b509b50505050505050505050506135a4565b8051602082015160405163bc25cf7760e01b815230600482015291995097506001600160a01b038b169063bc25cf7790602401600060405180830381600087803b1580156130c457600080fd5b505af11580156130d8573d6000803e3d6000fd5b505050505050505050505b61312e7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b6131797f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836125bf565b6040516335313c2160e11b8152600060048201819052906001600160a01b03861690636a627842906024016020604051808303816000875af11580156131c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e79190614981565b90506000806131f5876135ab565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132859190614981565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156132ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133139190614981565b90506133607f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b6133ab7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836125bf565b6049805460048990556003889055600586905560068590556000600281905560ff60d01b196001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166501000000000002166501000000000061ff0160c81b031990921691909117600160d01b1780835542604a5590919064ff00000000191664010000000083021790555060405163a9f9f37360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9f9f37390604401600060405180830381600087803b1580156134e957600080fd5b505af11580156134fd573d6000803e3d6000fd5b5050604080518a8152602081018a905290810188905260608101859052608081018490528a151560a082015260c0810187905260e081018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692507f6245a4f316997e7f00a4d4bf01393dc71253e3f9b060b14e31ecad684d753f4891506101000160405180910390a2600160009a509a505050505050505050505b9250929050565b600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156135ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136139190614a07565b50915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a49190614a57565b6001600160a01b0316146136cb57806001600160701b0316826001600160701b03166136e0565b816001600160701b0316816001600160701b03165b935093505050915091565b6000806136fc600160701b846149c0565b613708906127106149c0565b9050600061372f61371c60c86127106149ad565b61372690896149c0565b86846001613ae7565b9050600061375461374360c861271061499a565b61374d908a6149c0565b8785611e78565b90508187101580156137665750808711155b98975050505050505050565b6000828218828410028218610f51565b6137a8604051806060016040528060008152602001600081526020016000151581525090565b604082015115806137bb57506060820151155b806137da575081606001516137d88360c001518460400151613b34565b115b156137e457919050565b60006137f883608001518460a00151613b66565b9050600081846080015161380c919061496d565b90506000828560a00151613820919061496d565b90506000613865838760400151886000015161383c919061499a565b613846919061496d565b838860600151896020015161385b919061499a565b612d4d919061496d565b865190915061387484836149c0565b11801561388d5750602086015161388b83836149c0565b115b156138e25785516138cd9087906138a486856149c0565b6138ae91906149ad565b60208901516138bd86866149c0565b6138c791906149ad565b88613b8c565b94508460400151156138e25750505050919050565b60006138f38760c001516001613dd0565b90508087604001511015801561390d575080876060015110155b15613a375760008760c00151905060006040518060800160405280613936848c60600151613b34565b8b51613942919061499a565b81526020018a604001518b6000015161395b919061499a565b815260200161396e848c60400151613b34565b8b6020015161397d919061499a565b81526020018a606001518b60200151613996919061499a565b9052600160c08b015290506139ae898260008b613e01565b97506139bd898260018b613e01565b60c08a018390526020810151815191995083916139da91906149c0565b106139eb5750505050505050919050565b6000604089015288516139ff90849061499a565b81526020890151613a1190849061499a565b6040820152613a23898260008b613e01565b9750613a32898260018b613e01565b975050505b6000613a4e8860400151600184612d4d91906149ad565b9050613a628860c001518960600151613b34565b94505b808511613a8b57613a77888689613ffc565b965084613a8381614a8a565b955050613a65565b6060880151613a9f90612d4d6001856149ad565b9050613ab38860c001518960400151613b34565b93505b808411613adc57613ac88885896140c4565b965083613ad481614a8a565b945050613ab6565b505050505050919050565b6000613b16613af58361418b565b8015613b11575060008480613b0c57613b0c614941565b868809115b151590565b613b21868686611e78565b613b2b919061499a565b95945050505050565b6000613b4082846149d7565b15613b4c576001613b4f565b60005b60ff16613b5c838561496d565b610f51919061499a565b60005b8115613b85576000613b7b83856149d7565b929350613b699050565b5090919050565b613bb2604051806060016040528060008152602001600081526020016000151581525090565b831580613bbd575082155b80613bcb5750846040015184115b80613bd95750846060015183115b80613bf0575082613bee8660c0015186613b34565b115b15613bfc5750806115cd565b8160400151613c2a5760405180606001604052808581526020018481526020016001151581525090506115cd565b60008560800151848760200151613c41919061499a565b613c4b91906149c0565b905060008660a00151868860000151613c64919061499a565b613c6e91906149c0565b90506000818311613c8857613c8383836149ad565b613c92565b613c9282846149ad565b9050876080015185602001518960200151613cad919061499a565b613cb791906149c0565b60a089015186518a519295509091613ccf919061499a565b613cd991906149c0565b91506000828411613cf357613cee84846149ad565b613cfd565b613cfd83856149ad565b9050600080613d1f8489600001518d60000151613d1a919061499a565b6128ed565b91509150600080613d3a858d8f60000151613d1a919061499a565b9150915081841080613d5557508184148015613d5557508083105b80613d8d57508184148015613d6957508083145b8015613d8d575060208a01518a51613d8191906149c0565b613d8b8c8e6149c0565b115b15613dbf5760405180606001604052808d81526020018c815260200160011515815250985050505050505050506115cd565b50979b9a5050505050505050505050565b600080613ddc846141b8565b9050613df9613dea8461418b565b8015613b115750818002851190565b019392505050565b613e27604051806060016040528060008152602001600081526020016000151581525090565b6000613e3d858760a00151886080015187614311565b905083613e4b578015613e93565b84604001518560600151613e5f91906149ad565b613e6a90600161499a565b85516020870151613e7b91906149ad565b613e8690600161499a565b613e9091906149c0565b81145b15613ea157829150506115cd565b6040805180820182526000808252600160208084018290528451808601909552908452830152905b606087015181518351613edc919061499a565b11158015613f015750866020015181602001518360200151613efe919061499a565b11155b15613f6d5780518251600091613f37918a91613f1c9161499a565b84602001518660200151613f30919061499a565b878b614502565b90508015613f5557613f4e888484878b6001614538565b9250613f67565b613f64888385878b6000614538565b91505b50613ec9565b600086613f7a5782613f7c565b815b90506000613fa882602001518a60200151613f97919061496d565b835160608c0151612d4d919061496d565b9050613fee8a8b60000151846020015184613fc391906149c0565b613fcd91906149ad565b60208d01518551613fde90866149c0565b613fe891906149ad565b8a613b8c565b9a9950505050505050505050565b614022604051806060016040528060008152602001600081526020016000151581525090565b60006140328560c0015185613b34565b8560200151614041919061499a565b9050600085606001518660200151614059919061499a565b9050600061407f868860000151614070919061499a565b8860a001518960800151611e78565b9050614096878789602001516138bd8588886146b0565b94506140b9878789602001516138bd8560016140b2919061499a565b88886146b0565b979650505050505050565b6140ea604051806060016040528060008152602001600081526020016000151581525090565b60006140fa8560c0015185613b34565b8551614106919061499a565b905060008560400151866000015161411e919061499a565b90506000614144868860200151614135919061499a565b88608001518960a00151611e78565b905061416b87886000015161415a8487876146b0565b61416491906149ad565b8888613b8c565b87519095506140b990889061415a61418485600161499a565b87876146b0565b600060028260038111156141a1576141a16147b9565b6141ab9190614aa3565b60ff166001149050919050565b6000600182116141c6575090565b816001600160801b82106141df5760809190911c9060401b5b6801000000000000000082106141fa5760409190911c9060201b5b64010000000082106142115760209190911c9060101b5b6201000082106142265760109190911c9060081b5b610100821061423a5760089190911c9060041b5b6010821061424d5760049190911c9060021b5b600482106142595760011b5b600302600190811c9081858161427157614271614941565b048201901c9050600181858161428957614289614941565b048201901c905060018185816142a1576142a1614941565b048201901c905060018185816142b9576142b9614941565b048201901c905060018185816142d1576142d1614941565b048201901c905060018185816142e9576142e9614941565b048201901c905061430881858161430257614302614941565b04821190565b90039392505050565b600082600003614367578460400151856060015161432f91906149ad565b61433a90600161499a565b8551602087015161434b91906149ad565b61435690600161499a565b61436091906149c0565b90506115cd565b83600003614377575060006115cd565b60006143ca8660000151846143a45761439f86896040015161439991906149c0565b88613b34565b6146d4565b868689604001516143b591906149c0565b6143bf919061496d565b61439f90600161499a565b905060006144058760000151856143f45761439f878a606001516143ee91906149c0565b89613b34565b87878a606001516143b591906149c0565b905086602001518111614459578660400151876060015161442691906149ad565b61443190600161499a565b81886020015161444191906149ad565b61444c90600161499a565b61445691906149c0565b92505b60006144708860200151600184612d4d91906149ad565b90508083116144f757600061448584836149ad565b61449090600161499a565b90508060018a604001516144a491906149ad565b6144ae91906149c0565b6144df82898b8a6144c05760006144c3565b60015b60ff166144d08a8f6149c0565b6144da91906149ad565b6146e4565b6144e991906149ad565b6144f3908661499a565b9450505b505050949350505050565b60008161451d57826145178787876001614311565b1061452e565b8261452b8787876000614311565b11155b9695505050505050565b604080518082019091526000808252602082015284516000906145af901561457c578651885160608b015161456d91906149ad565b614577919061496d565b614582565b88602001515b6020880151156145a557876020015189602001518b6020015161385b91906149ad565b8960600151613772565b905060015b8181101561465657600060026145ca83856149ad565b6145d590600161499a565b6145df919061496d565b6145e9908361499a565b90508415156146338b8a600001518461460291906149c0565b8c5161460e919061499a565b60208c015161461d90866149c0565b8d6020015161462c919061499a565b8b8b614502565b15150361464257809150614650565b61464d6001826149ad565b92505b506145b4565b604051806040016040528088600001518361467191906149c0565b8a5161467d919061499a565b815260200188602001518361469291906149c0565b8a602001516146a1919061499a565b90529998505050505050505050565b60008284106146cc578184116146c657836115cd565b816115cd565b509092915050565b6000828218828411028218610f51565b60005b83831061473c576146f8848461496d565b60026147056001886149ad565b61470f90886149c0565b614719919061496d565b61472391906149c0565b61472d908261499a565b905061473984846149d7565b92505b8382106147705761474d848361496d565b61475790866149c0565b614761908261499a565b905061476d84836149d7565b91505b60008261477d87866149c0565b614787919061499a565b90508481101561479757506115cd565b6147a1858261496d565b95506147ad85826149d7565b93949392506146e79050565b634e487b7160e01b600052602160045260246000fd5b600481106147ed57634e487b7160e01b600052602160045260246000fd5b9052565b8151151581526101408101602083015161480f602084018215159052565b506040830151614823604084018215159052565b50606083015161483660608401826147cf565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010083015161010083015261012083015161012083015292915050565b60008060006060848603121561489257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156148bb57600080fd5b5035919050565b6001600160a01b03811681146124ca57600080fd5b6000602082840312156148e957600080fd5b8135610f51816148c2565b6020810161106d82846147cf565b6000806000806080858703121561491857600080fd5b84359350602085013592506040850135614931816148c2565b9396929550929360600135925050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261497c5761497c614941565b500490565b60006020828403121561499357600080fd5b5051919050565b8082018082111561106d5761106d614957565b8181038181111561106d5761106d614957565b808202811582820484141761106d5761106d614957565b6000826149e6576149e6614941565b500690565b80516001600160701b0381168114614a0257600080fd5b919050565b600080600060608486031215614a1c57600080fd5b614a25846149eb565b9250614a33602085016149eb565b9150604084015163ffffffff81168114614a4c57600080fd5b809150509250925092565b600060208284031215614a6957600080fd5b8151610f51816148c2565b634e487b7160e01b600052603260045260246000fd5b600060018201614a9c57614a9c614957565b5060010190565b600060ff831680614ab657614ab6614941565b8060ff8416069150509291505056fea2646970667358221220c05e5681bf37683440183c9bbaa0dfb163caab8d0f31ead556d000c8b959713b64736f6c634300081a0033",
1236
+ "runtimeTemplate": "0x60806040526004361061031e5760003560e01c80637f646d07116101ab578063a8aa1b31116100f7578063c979e56b11610095578063e4d453e01161006f578063e4d453e014610a35578063eb6d3a1114610a55578063f887ea4014610a89578063f892d87b14610abd57600080fd5b8063c979e56b146109cb578063d51684a7146109eb578063d6b852c214610a0157600080fd5b8063b4e0ecf2116100d1578063b4e0ecf21461094d578063c2d107f114610981578063c796817b14610996578063c8cfaae4146109b657600080fd5b8063a8aa1b31146108da578063aedf220b14610903578063b4b57c391461091957600080fd5b8063900ef0ee1161016457806398aaa62b1161013e57806398aaa62b1461083f578063999b93af146108555780639ef27b0014610889578063a64190c41461089f57600080fd5b8063900ef0ee146107fd5780639042454314610813578063942062521461082957600080fd5b80637f646d07146107535780638113f0d9146107875780638a038a541461079c5780638b21e484146107bc5780638ee25281146107d25780638fd3ab80146107e857600080fd5b806332b8b2151161026a5780634cecd3f61161022357806361f5b8b3116101fd57806361f5b8b31461069c5780636be6e9d9146106d05780636fed787d146106f05780637b1039991461071f57600080fd5b80634cecd3f6146106355780634e80955c14610669578063554a21891461068957600080fd5b806332b8b215146105755780633833a4f11461058b5780633ded58be146105a057806343fd3cdd146105e057806346d201ee146105f55780634acc79ed1461061557600080fd5b806316875160116102d7578063252c09d7116102b1578063252c09d7146104e057806327efc086146105155780632861c7d1146105355780632c678c641461055457600080fd5b8063168751601461044d57806316f0115b146104605780631d143848146104ac57600080fd5b806302c7e7af1461037357806302fb0c5e1461039c57806306731d33146103cd5780630f15f4c0146103ef57806313821bf714610404578063147ece661461041957600080fd5b3661036e57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461036c57604051632f35253160e01b815260040160405180910390fd5b005b600080fd5b34801561037f57600080fd5b5061038960015481565b6040519081526020015b60405180910390f35b3480156103a857600080fd5b506049546103bd90600160c81b900460ff1681565b6040519015158152602001610393565b3480156103d957600080fd5b506103e2610af1565b60405161039391906147f1565b3480156103fb57600080fd5b5061036c610da6565b34801561041057600080fd5b50610389603c81565b34801561042557600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b61038961045b36600461487d565b610ee0565b34801561046c57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610393565b3480156104b857600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec57600080fd5b506105006104fb3660046148a9565b610f58565b60408051928352602083019190915201610393565b34801561052157600080fd5b506103896b033b2e3c9fd0803ce800000081565b34801561054157600080fd5b506103896a7c13bc4b2c133c5600000081565b34801561056057600080fd5b506049546103bd90600160d01b900460ff1681565b34801561058157600080fd5b5061038961070881565b34801561059757600080fd5b50610389610f7a565b3480156105ac57600080fd5b506105c06105bb3660046148a9565b610f94565b604080519485526020850193909352918301526060820152608001610393565b3480156105ec57600080fd5b5061038960c881565b34801561060157600080fd5b506103896106103660046148d7565b611038565b34801561062157600080fd5b506105006106303660046148a9565b611073565b34801561064157600080fd5b506103bd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067557600080fd5b506103896b02baf7b5c99a6c5c6d00000081565b61038961069736600461487d565b6110ad565b3480156106a857600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b3480156106dc57600080fd5b506103896b0219aada9b14535aca00000081565b3480156106fc57600080fd5b5060495461071290640100000000900460ff1681565b60405161039391906148f4565b34801561072b57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561075f57600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561079357600080fd5b506103896110f0565b3480156107a857600080fd5b506103896107b7366004614902565b6110ff565b3480156107c857600080fd5b50610389604a5481565b3480156107de57600080fd5b5061038960045481565b3480156107f457600080fd5b506103bd6115d5565b34801561080957600080fd5b5061038960055481565b34801561081f57600080fd5b50610389604b5481565b34801561083557600080fd5b5061038960085481565b34801561084b57600080fd5b5061038960025481565b34801561086157600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561089557600080fd5b5061038960075481565b3480156108ab57600080fd5b506108bf6108ba3660046148a9565b611655565b60408051938452602084019290925290820152606001610393565b3480156108e657600080fd5b50604954610494906501000000000090046001600160a01b031681565b34801561090f57600080fd5b5061038960035481565b34801561092557600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561095957600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b34801561098d57600080fd5b50610389602081565b3480156109a257600080fd5b506103896109b13660046148d7565b6116c1565b3480156109c257600080fd5b5061036c6117aa565b3480156109d757600080fd5b506105c06109e63660046148a9565b611895565b3480156109f757600080fd5b5061038960065481565b348015610a0d57600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b348015610a4157600080fd5b50610389610a503660046148a9565b6119b0565b348015610a6157600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b348015610a9557600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b348015610ac957600080fd5b506104947f000000000000000000000000000000000000000000000000000000000000000081565b610b47604080516101408101825260008082526020820181905291810182905290606082019081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6b0219aada9b14535aca000000600154148015610b6e5750604954600160c81b900460ff16155b1515815260495460ff600160d01b820481161515602084015260608301916401000000009004166003811115610ba657610ba66147b9565b90816003811115610bb957610bb96147b9565b9052506007546080820152604a5460a082015260085460c0820152600080610bdf611a57565b915091508115610c2257600080610bf583611d66565b80158015604089015260e088018290529193509150610c1f57610c18818361496d565b6101008601525b50505b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190614981565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d819190614981565b90508115610d9f57610d9881600160701b84611e78565b6101208601525b5050505090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580610de75750604954600160c81b900460ff165b15610e04576040516282b42960e81b815260040160405180910390fd5b610e256a7c13bc4b2c133c560000006b0219aada9b14535aca00000061499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ead9190614981565b14610ecb57604051632f35253160e01b815260040160405180910390fd5b6049805460ff60c81b1916600160c81b179055565b6000610eea611f2d565b6000806000610ef887610f94565b929650909450925090508581610f0e848661499a565b610f18919061499a565b1115610f37576040516307dd37f760e41b815260040160405180910390fd5b610f448484848489611f57565b505050610f516001600055565b9392505050565b60098160208110610f6857600080fd5b60020201805460019091015490915082565b6000604b54600003610f8d5750604a5490565b50604b5490565b600080600080610fa2612469565b84600003610fc35760405163d69b537960e01b815260040160405180910390fd5b600154610fdc906b0219aada9b14535aca0000006149ad565b8511610fe85784611001565b600154611001906b0219aada9b14535aca0000006149ad565b935060025461101785600154610a50919061499a565b61102191906149ad565b925061102c83611073565b94969395509392915050565b604954600090600160d01b900460ff1661106a576001600160a01b0382166000908152604c602052604090205461106d565b60005b92915050565b6000806103e86110848460046149c0565b61108e919061496d565b91508161109c60648561496d565b6110a691906149ad565b9050915091565b60006110b7611f2d565b60008060006110c587611895565b9296509094509250905085841015610f37576040516307dd37f760e41b815260040160405180910390fd5b6110fc603c60206149c0565b81565b6000611109611f2d565b611112826124a9565b6001600160a01b038316158061113057506001600160a01b03831630145b1561114e5760405163d69b537960e01b815260040160405180910390fd5b336000908152604c60205260409020548086111561117f57604051632c5374f960e01b815260040160405180910390fd5b600080600061118d89611655565b919450925090508061119f83856149ad565b6111a991906149ad565b9450878510156111cc576040516307dd37f760e41b815260040160405180910390fd5b6111d689856149ad565b336000818152604c60205260409020919091557fb2e960e0adf7f3443afba08bed10ecb80f72394e72e60f9e4c325e6bce0132bf6112148b876149ad565b60405190815260200160405180910390a2886001600082825461123791906149ad565b92505081905550826002600082825461125091906149ad565b90915550506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e09190614981565b905061130e7f000000000000000000000000000000000000000000000000000000000000000033308d6124cd565b6113188a8261499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190614981565b146113be57604051632f35253160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036114a057604051632e1a7d4d60e01b8152600481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561147957600080fd5b505af115801561148d573d6000803e3d6000fd5b5050505061149b888761253a565b6114cb565b6114cb7f000000000000000000000000000000000000000000000000000000000000000089886125bf565b6115167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856125bf565b6115617f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b604080518b815260208101869052908101849052606081018390526001600160a01b0389169033907f89bc96e242cf3b1e6040a8f5123c29dbf1e48d876ded5856f1668191a8a7658e9060800160405180910390a36115be6127ca565b50505050506115cd6001600055565b949350505050565b60006115df611f2d565b604954600160d01b900460ff16156115f957506001611648565b6b0219aada9b14535aca00000060015414158061161f5750604954600160c81b900460ff165b1561163d57604051631cdde67b60e01b815260040160405180910390fd5b6116456127fd565b90505b6116526001600055565b90565b6000806000611662612469565b831580611670575060015484115b1561168e5760405163d69b537960e01b815260040160405180910390fd5b61169f84600154610a5091906149ad565b6002546116ac91906149ad565b92506116b783611073565b9395909450915050565b604954600090600160c81b900460ff1615806116e65750604954600160d01b900460ff165b156116f357506000919050565b6001600160a01b038281166000818152604c60205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117949190614981565b90508082106117a357806115cd565b5092915050565b6117b2611f2d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117fa576040516282b42960e81b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015806118285750604b5415155b156118465760405163cae54ae360e01b815260040160405180910390fd5b61184e612469565b42604b81905560405190815233907f85e1ef7b0313e3485755af9d396b0e69d958f9930ba5f57564127a6f61b6eefd9060200160405180910390a26118936001600055565b565b6000806000806118a3612469565b846000036118c45760405163d69b537960e01b815260040160405180910390fd5b6000806001546b0219aada9b14535aca0000006118e191906149ad565b90505b8082101561197557600060026118fa84846149ad565b61190590600161499a565b61190f919061496d565b611919908461499a565b9050600060025461193183600154610a50919061499a565b61193b91906149ad565b90508861194960648361496d565b611953908361499a565b116119605781935061196e565b61196b6001836149ad565b92505b50506118e4565b816000036119965760405163d69b537960e01b815260040160405180910390fd5b61199f82610f94565b955095509550955050509193509193565b60006b0219aada9b14535aca0000008211156119df5760405163d69b537960e01b815260040160405180910390fd5b60006119f7836b02baf7b5c99a6c5c6d0000006149ad565b90506000611a25847f00000000000000000000000000000000000000000000000000000000000000006149c0565b9050611a3182826149d7565b15611a3d576001611a40565b60005b60ff16611a4d838361496d565b6115cd919061499a565b60008060007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae19190614981565b600003611af357506000928392509050565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190614a07565b925092509250826001600160701b031660001480611b7f57506001600160701b038216155b15611b9257506000958695509350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c209190614a57565b6001600160a01b031614905080611c9857846001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c939190614981565b611cfa565b846001600160a01b0316635909c0d56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa9190614981565b9550600081611d095783611d0b565b845b6001600160701b03169050600082611d235785611d25565b845b6001600160701b031690504284900363ffffffff811683600160701b840281611d5057611d50614941565b0402890198505060019850505050505050509091565b600080610708421015611d7e57506000928392509050565b6000611d8c610708426149ad565b905060008060005b6020811015611e5157604954600163ffffffff8381169190911b9091161615611e4957600060098260208110611dcc57611dcc614a74565b600202016040518060400160405290816000820154815260200160018201548152505090508481600001511180611e185750611e0a603c60206149c0565b8151611e1690426149ad565b115b15611e235750611e49565b831580611e305750805183105b15611e475780516020820151890397506001945092505b505b600101611d94565b50818015611e5e57508415155b15611e7057611e6d81426149ad565b93505b505050915091565b6000806000611e8786866128ed565b9150915081600003611eac57838181611ea257611ea2614941565b0492505050610f51565b818411611ec357611ec3600385150260111861290b565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b600260005403611f5057604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b611f60816124a9565b336000908152604c6020526040812054611f7b90879061499a565b336000818152604c60205260409081902083905551919250907fb2e960e0adf7f3443afba08bed10ecb80f72394e72e60f9e4c325e6bce0132bf90611fc39084815260200190565b60405180910390a28560016000828254611fdd919061499a565b925050819055508460026000828254611ff6919061499a565b909155506000905083612009868861499a565b612013919061499a565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561207d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a19190614981565b905034156121a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158061210957508134105b156121275760405163d69b537960e01b815260040160405180910390fd5b81156121a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b50505050505b6121d9565b81156121d9576121d97f00000000000000000000000000000000000000000000000000000000000000003330856124cd565b6121e3828261499a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b9190614981565b1461228957604051632f35253160e01b815260040160405180910390fd5b6122d47f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000886125bf565b61231f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000876125bf565b61234a7f0000000000000000000000000000000000000000000000000000000000000000338a6125bf565b60408051898152602081018990529081018790526060810186905233907f27330bd7589580547b6437e08f9c60653de63691d2d2b2c13bff9ee67da2a68d9060800160405180910390a26b0219aada9b14535aca0000006001540361243c576049805460ff60c81b1916905542600781905560025460088190556040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016927ffa93b615fecab715dce428daa1553fb5c24c02f50a81d4971bb86b1937e3c4f29261242692918252602082015260400190565b60405180910390a26124366127fd565b50612444565b6124446127ca565b8134111561245f5761245f3361245a84346149ad565b61253a565b5050505050505050565b604954600160c81b900460ff16158061248b5750604954600160d01b900460ff165b1561189357604051631cdde67b60e01b815260040160405180910390fd5b428110156124ca5760405163d69b537960e01b815260040160405180910390fd5b50565b6040516001600160a01b0384811660248301528381166044830152606482018390526125349186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061291d565b50505050565b80600003612546575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612593576040519150601f19603f3d011682016040523d82523d6000602084013e612598565b606091505b50509050806125ba57604051632f35253160e01b815260040160405180910390fd5b505050565b806000036125cc57505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126379190614981565b6040516370a0823160e01b81526001600160a01b0385811660048301529192506000918616906370a0823190602401602060405180830381865afa158015612683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a79190614981565b90506126b4858585612992565b6126be83836149ad565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015612702573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127269190614981565b1415806127a55750612738838261499a565b6040516370a0823160e01b81526001600160a01b0386811660048301528716906370a0823190602401602060405180830381865afa15801561277e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a29190614981565b14155b156127c357604051632f35253160e01b815260040160405180910390fd5b5050505050565b6000806127d5611a57565b9150915081156127ec576127e8816129c3565b5050565b6049805463ffffffff191690555050565b600080600061280a611a57565b9150915060008083156128335761282083611d66565b909250905061282e836129c3565b612841565b6049805463ffffffff191690555b600061284d8383612aca565b9096509050856128e5576049805482919064ff00000000191664010000000083600381111561287e5761287e6147b9565b02179055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f886f47bb880c2e015d8bdca3a345bd9578546a41b00952e356923daa465d1f60826040516128dc91906148f4565b60405180910390a25b505050505090565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b600080602060008451602086016000885af180612940576040513d6000823e3d81fd5b50506000513d91508115612958578060011415612965565b6001600160a01b0384163b155b1561253457604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b6040516001600160a01b038381166024830152604482018390526125ba91859182169063a9059cbb90606401612502565b60006129d0603c4261496d565b905060006129df6020836149d7565b604954909150600163ffffffff8084169190911b918216161580612a26575082603c60098460208110612a1457612a14614a74565b6002020154612a23919061496d565b14155b156125345760405180604001604052804281526020018581525060098360208110612a5357612a53614a74565b8251600291909102919091019081556020918201516001909101556049805463ffffffff8481169082161763ffffffff199091161790556040805142815291820186905283917f5d2f23d17c4ad5347ae00f7c12f3c1b984d44422cecfcba0009c80d996899f72910160405180910390a250505050565b60405163e6a4390560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015260009182917f000000000000000000000000000000000000000000000000000000000000000091828216917f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015612ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc79190614a57565b6001600160a01b031614612bed5760405162820f3560e61b815260040160405180910390fd5b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c519190614981565b6000141590506000808215612dae57836001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c9b57600080fd5b505af1158015612caf573d6000803e3d6000fd5b50505050600080612cbf866135ab565b915091508160001480612cd0575080155b15612ced5760405162820f3560e61b815260040160405180910390fd5b88600003612d085760006001975097505050505050506135a4565b612d1482828c8c6136eb565b612d2b5760006002975097505050505050506135a4565b6000612d526a7c13bc4b2c133c56000000612d4d856001600160701b036149ad565b613772565b600854909150600090612d7090612d4d856001600160701b036149ad565b90506000612d7f838587611e78565b9050818111612d9357829650809550612da4565b612d9e828686611e78565b96508195505b50505050506130e3565b600080612dba866135ab565b915091506000827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612e3c91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7d9190614981565b612e8791906149ad565b6040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291925060009184917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3b9190614981565b612f4591906149ad565b90506000886001600160a01b031663ba9a7a566040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fab9190614981565b612fb690600161499a565b905060006130556040518060e00160405280888152602001878152602001612fff876a7c13bc4b2c133c56000000612fee919061499a565b612d4d8b6001600160701b036149ad565b815260200161302686600854613015919061499a565b612d4d8a6001600160701b036149ad565b81526a7c13bc4b2c133c560000006020820152600854604082015260600161304e85806149c0565b9052613782565b9050806040015161307757600060039b509b50505050505050505050506135a4565b8051602082015160405163bc25cf7760e01b815230600482015291995097506001600160a01b038b169063bc25cf7790602401600060405180830381600087803b1580156130c457600080fd5b505af11580156130d8573d6000803e3d6000fd5b505050505050505050505b61312e7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b6131797f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836125bf565b6040516335313c2160e11b8152600060048201819052906001600160a01b03861690636a627842906024016020604051808303816000875af11580156131c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e79190614981565b90506000806131f5876135ab565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132859190614981565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156132ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133139190614981565b90506133607f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846125bf565b6133ab7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836125bf565b6049805460048990556003889055600586905560068590556000600281905560ff60d01b196001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166501000000000002166501000000000061ff0160c81b031990921691909117600160d01b1780835542604a5590919064ff00000000191664010000000083021790555060405163a9f9f37360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9f9f37390604401600060405180830381600087803b1580156134e957600080fd5b505af11580156134fd573d6000803e3d6000fd5b5050604080518a8152602081018a905290810188905260608101859052608081018490528a151560a082015260c0810187905260e081018690526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692507f6245a4f316997e7f00a4d4bf01393dc71253e3f9b060b14e31ecad684d753f4891506101000160405180910390a2600160009a509a505050505050505050505b9250929050565b600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156135ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136139190614a07565b50915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a49190614a57565b6001600160a01b0316146136cb57806001600160701b0316826001600160701b03166136e0565b816001600160701b0316816001600160701b03165b935093505050915091565b6000806136fc600160701b846149c0565b613708906127106149c0565b9050600061372f61371c60c86127106149ad565b61372690896149c0565b86846001613ae7565b9050600061375461374360c861271061499a565b61374d908a6149c0565b8785611e78565b90508187101580156137665750808711155b98975050505050505050565b6000828218828410028218610f51565b6137a8604051806060016040528060008152602001600081526020016000151581525090565b604082015115806137bb57506060820151155b806137da575081606001516137d88360c001518460400151613b34565b115b156137e457919050565b60006137f883608001518460a00151613b66565b9050600081846080015161380c919061496d565b90506000828560a00151613820919061496d565b90506000613865838760400151886000015161383c919061499a565b613846919061496d565b838860600151896020015161385b919061499a565b612d4d919061496d565b865190915061387484836149c0565b11801561388d5750602086015161388b83836149c0565b115b156138e25785516138cd9087906138a486856149c0565b6138ae91906149ad565b60208901516138bd86866149c0565b6138c791906149ad565b88613b8c565b94508460400151156138e25750505050919050565b60006138f38760c001516001613dd0565b90508087604001511015801561390d575080876060015110155b15613a375760008760c00151905060006040518060800160405280613936848c60600151613b34565b8b51613942919061499a565b81526020018a604001518b6000015161395b919061499a565b815260200161396e848c60400151613b34565b8b6020015161397d919061499a565b81526020018a606001518b60200151613996919061499a565b9052600160c08b015290506139ae898260008b613e01565b97506139bd898260018b613e01565b60c08a018390526020810151815191995083916139da91906149c0565b106139eb5750505050505050919050565b6000604089015288516139ff90849061499a565b81526020890151613a1190849061499a565b6040820152613a23898260008b613e01565b9750613a32898260018b613e01565b975050505b6000613a4e8860400151600184612d4d91906149ad565b9050613a628860c001518960600151613b34565b94505b808511613a8b57613a77888689613ffc565b965084613a8381614a8a565b955050613a65565b6060880151613a9f90612d4d6001856149ad565b9050613ab38860c001518960400151613b34565b93505b808411613adc57613ac88885896140c4565b965083613ad481614a8a565b945050613ab6565b505050505050919050565b6000613b16613af58361418b565b8015613b11575060008480613b0c57613b0c614941565b868809115b151590565b613b21868686611e78565b613b2b919061499a565b95945050505050565b6000613b4082846149d7565b15613b4c576001613b4f565b60005b60ff16613b5c838561496d565b610f51919061499a565b60005b8115613b85576000613b7b83856149d7565b929350613b699050565b5090919050565b613bb2604051806060016040528060008152602001600081526020016000151581525090565b831580613bbd575082155b80613bcb5750846040015184115b80613bd95750846060015183115b80613bf0575082613bee8660c0015186613b34565b115b15613bfc5750806115cd565b8160400151613c2a5760405180606001604052808581526020018481526020016001151581525090506115cd565b60008560800151848760200151613c41919061499a565b613c4b91906149c0565b905060008660a00151868860000151613c64919061499a565b613c6e91906149c0565b90506000818311613c8857613c8383836149ad565b613c92565b613c9282846149ad565b9050876080015185602001518960200151613cad919061499a565b613cb791906149c0565b60a089015186518a519295509091613ccf919061499a565b613cd991906149c0565b91506000828411613cf357613cee84846149ad565b613cfd565b613cfd83856149ad565b9050600080613d1f8489600001518d60000151613d1a919061499a565b6128ed565b91509150600080613d3a858d8f60000151613d1a919061499a565b9150915081841080613d5557508184148015613d5557508083105b80613d8d57508184148015613d6957508083145b8015613d8d575060208a01518a51613d8191906149c0565b613d8b8c8e6149c0565b115b15613dbf5760405180606001604052808d81526020018c815260200160011515815250985050505050505050506115cd565b50979b9a5050505050505050505050565b600080613ddc846141b8565b9050613df9613dea8461418b565b8015613b115750818002851190565b019392505050565b613e27604051806060016040528060008152602001600081526020016000151581525090565b6000613e3d858760a00151886080015187614311565b905083613e4b578015613e93565b84604001518560600151613e5f91906149ad565b613e6a90600161499a565b85516020870151613e7b91906149ad565b613e8690600161499a565b613e9091906149c0565b81145b15613ea157829150506115cd565b6040805180820182526000808252600160208084018290528451808601909552908452830152905b606087015181518351613edc919061499a565b11158015613f015750866020015181602001518360200151613efe919061499a565b11155b15613f6d5780518251600091613f37918a91613f1c9161499a565b84602001518660200151613f30919061499a565b878b614502565b90508015613f5557613f4e888484878b6001614538565b9250613f67565b613f64888385878b6000614538565b91505b50613ec9565b600086613f7a5782613f7c565b815b90506000613fa882602001518a60200151613f97919061496d565b835160608c0151612d4d919061496d565b9050613fee8a8b60000151846020015184613fc391906149c0565b613fcd91906149ad565b60208d01518551613fde90866149c0565b613fe891906149ad565b8a613b8c565b9a9950505050505050505050565b614022604051806060016040528060008152602001600081526020016000151581525090565b60006140328560c0015185613b34565b8560200151614041919061499a565b9050600085606001518660200151614059919061499a565b9050600061407f868860000151614070919061499a565b8860a001518960800151611e78565b9050614096878789602001516138bd8588886146b0565b94506140b9878789602001516138bd8560016140b2919061499a565b88886146b0565b979650505050505050565b6140ea604051806060016040528060008152602001600081526020016000151581525090565b60006140fa8560c0015185613b34565b8551614106919061499a565b905060008560400151866000015161411e919061499a565b90506000614144868860200151614135919061499a565b88608001518960a00151611e78565b905061416b87886000015161415a8487876146b0565b61416491906149ad565b8888613b8c565b87519095506140b990889061415a61418485600161499a565b87876146b0565b600060028260038111156141a1576141a16147b9565b6141ab9190614aa3565b60ff166001149050919050565b6000600182116141c6575090565b816001600160801b82106141df5760809190911c9060401b5b6801000000000000000082106141fa5760409190911c9060201b5b64010000000082106142115760209190911c9060101b5b6201000082106142265760109190911c9060081b5b610100821061423a5760089190911c9060041b5b6010821061424d5760049190911c9060021b5b600482106142595760011b5b600302600190811c9081858161427157614271614941565b048201901c9050600181858161428957614289614941565b048201901c905060018185816142a1576142a1614941565b048201901c905060018185816142b9576142b9614941565b048201901c905060018185816142d1576142d1614941565b048201901c905060018185816142e9576142e9614941565b048201901c905061430881858161430257614302614941565b04821190565b90039392505050565b600082600003614367578460400151856060015161432f91906149ad565b61433a90600161499a565b8551602087015161434b91906149ad565b61435690600161499a565b61436091906149c0565b90506115cd565b83600003614377575060006115cd565b60006143ca8660000151846143a45761439f86896040015161439991906149c0565b88613b34565b6146d4565b868689604001516143b591906149c0565b6143bf919061496d565b61439f90600161499a565b905060006144058760000151856143f45761439f878a606001516143ee91906149c0565b89613b34565b87878a606001516143b591906149c0565b905086602001518111614459578660400151876060015161442691906149ad565b61443190600161499a565b81886020015161444191906149ad565b61444c90600161499a565b61445691906149c0565b92505b60006144708860200151600184612d4d91906149ad565b90508083116144f757600061448584836149ad565b61449090600161499a565b90508060018a604001516144a491906149ad565b6144ae91906149c0565b6144df82898b8a6144c05760006144c3565b60015b60ff166144d08a8f6149c0565b6144da91906149ad565b6146e4565b6144e991906149ad565b6144f3908661499a565b9450505b505050949350505050565b60008161451d57826145178787876001614311565b1061452e565b8261452b8787876000614311565b11155b9695505050505050565b604080518082019091526000808252602082015284516000906145af901561457c578651885160608b015161456d91906149ad565b614577919061496d565b614582565b88602001515b6020880151156145a557876020015189602001518b6020015161385b91906149ad565b8960600151613772565b905060015b8181101561465657600060026145ca83856149ad565b6145d590600161499a565b6145df919061496d565b6145e9908361499a565b90508415156146338b8a600001518461460291906149c0565b8c5161460e919061499a565b60208c015161461d90866149c0565b8d6020015161462c919061499a565b8b8b614502565b15150361464257809150614650565b61464d6001826149ad565b92505b506145b4565b604051806040016040528088600001518361467191906149c0565b8a5161467d919061499a565b815260200188602001518361469291906149c0565b8a602001516146a1919061499a565b90529998505050505050505050565b60008284106146cc578184116146c657836115cd565b816115cd565b509092915050565b6000828218828411028218610f51565b60005b83831061473c576146f8848461496d565b60026147056001886149ad565b61470f90886149c0565b614719919061496d565b61472391906149c0565b61472d908261499a565b905061473984846149d7565b92505b8382106147705761474d848361496d565b61475790866149c0565b614761908261499a565b905061476d84836149d7565b91505b60008261477d87866149c0565b614787919061499a565b90508481101561479757506115cd565b6147a1858261496d565b95506147ad85826149d7565b93949392506146e79050565b634e487b7160e01b600052602160045260246000fd5b600481106147ed57634e487b7160e01b600052602160045260246000fd5b9052565b8151151581526101408101602083015161480f602084018215159052565b506040830151614823604084018215159052565b50606083015161483660608401826147cf565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010083015161010083015261012083015161012083015292915050565b60008060006060848603121561489257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156148bb57600080fd5b5035919050565b6001600160a01b03811681146124ca57600080fd5b6000602082840312156148e957600080fd5b8135610f51816148c2565b6020810161106d82846147cf565b6000806000806080858703121561491857600080fd5b84359350602085013592506040850135614931816148c2565b9396929550929360600135925050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261497c5761497c614941565b500490565b60006020828403121561499357600080fd5b5051919050565b8082018082111561106d5761106d614957565b8181038181111561106d5761106d614957565b808202811582820484141761106d5761106d614957565b6000826149e6576149e6614941565b500690565b80516001600160701b0381168114614a0257600080fd5b919050565b600080600060608486031215614a1c57600080fd5b614a25846149eb565b9250614a33602085016149eb565b9150604084015163ffffffff81168114614a4c57600080fd5b809150509250925092565b600060208284031215614a6957600080fd5b8151610f51816148c2565b634e487b7160e01b600052603260045260246000fd5b600060018201614a9c57614a9c614957565b5060010190565b600060ff831680614ab657614ab6614941565b8060ff8416069150509291505056fea2646970667358221220c05e5681bf37683440183c9bbaa0dfb163caab8d0f31ead556d000c8b959713b64736f6c634300081a0033",
1237
+ "metadata": {
1238
+ "compiler": {
1239
+ "version": "0.8.26+commit.8a97fa7a"
1240
+ },
1241
+ "language": "Solidity",
1242
+ "output": {
1243
+ "abi": [
1244
+ {
1245
+ "inputs": [
1246
+ {
1247
+ "internalType": "address",
1248
+ "name": "hana_",
1249
+ "type": "address"
1250
+ },
1251
+ {
1252
+ "internalType": "address",
1253
+ "name": "treasury_",
1254
+ "type": "address"
1255
+ },
1256
+ {
1257
+ "internalType": "address",
1258
+ "name": "quote_",
1259
+ "type": "address"
1260
+ },
1261
+ {
1262
+ "internalType": "uint256",
1263
+ "name": "virtualQuote_",
1264
+ "type": "uint256"
1265
+ },
1266
+ {
1267
+ "internalType": "address",
1268
+ "name": "issuer_",
1269
+ "type": "address"
1270
+ },
1271
+ {
1272
+ "internalType": "uint256",
1273
+ "name": "pointsBps_",
1274
+ "type": "uint256"
1275
+ },
1276
+ {
1277
+ "internalType": "bool",
1278
+ "name": "earlyReleaseAllowed_",
1279
+ "type": "bool"
1280
+ }
1281
+ ],
1282
+ "stateMutability": "nonpayable",
1283
+ "type": "constructor"
1284
+ },
1285
+ {
1286
+ "inputs": [],
1287
+ "type": "error",
1288
+ "name": "Closed"
1289
+ },
1290
+ {
1291
+ "inputs": [],
1292
+ "type": "error",
1293
+ "name": "EarlyReleaseUnavailable"
1294
+ },
1295
+ {
1296
+ "inputs": [],
1297
+ "type": "error",
1298
+ "name": "InvalidPool"
1299
+ },
1300
+ {
1301
+ "inputs": [],
1302
+ "type": "error",
1303
+ "name": "InvalidTrade"
1304
+ },
1305
+ {
1306
+ "inputs": [],
1307
+ "type": "error",
1308
+ "name": "InvalidTransfer"
1309
+ },
1310
+ {
1311
+ "inputs": [],
1312
+ "type": "error",
1313
+ "name": "ReentrancyGuardReentrantCall"
1314
+ },
1315
+ {
1316
+ "inputs": [
1317
+ {
1318
+ "internalType": "address",
1319
+ "name": "token",
1320
+ "type": "address"
1321
+ }
1322
+ ],
1323
+ "type": "error",
1324
+ "name": "SafeERC20FailedOperation"
1325
+ },
1326
+ {
1327
+ "inputs": [],
1328
+ "type": "error",
1329
+ "name": "SellQuotaExceeded"
1330
+ },
1331
+ {
1332
+ "inputs": [],
1333
+ "type": "error",
1334
+ "name": "Slippage"
1335
+ },
1336
+ {
1337
+ "inputs": [],
1338
+ "type": "error",
1339
+ "name": "Unauthorized"
1340
+ },
1341
+ {
1342
+ "inputs": [
1343
+ {
1344
+ "internalType": "address",
1345
+ "name": "pool",
1346
+ "type": "address",
1347
+ "indexed": true
1348
+ },
1349
+ {
1350
+ "internalType": "uint256",
1351
+ "name": "closedAt",
1352
+ "type": "uint256",
1353
+ "indexed": false
1354
+ },
1355
+ {
1356
+ "internalType": "uint256",
1357
+ "name": "closingQuote",
1358
+ "type": "uint256",
1359
+ "indexed": false
1360
+ }
1361
+ ],
1362
+ "type": "event",
1363
+ "name": "BondClosed",
1364
+ "anonymous": false
1365
+ },
1366
+ {
1367
+ "inputs": [
1368
+ {
1369
+ "internalType": "address",
1370
+ "name": "account",
1371
+ "type": "address",
1372
+ "indexed": true
1373
+ },
1374
+ {
1375
+ "internalType": "uint256",
1376
+ "name": "hanaOut",
1377
+ "type": "uint256",
1378
+ "indexed": false
1379
+ },
1380
+ {
1381
+ "internalType": "uint256",
1382
+ "name": "principal",
1383
+ "type": "uint256",
1384
+ "indexed": false
1385
+ },
1386
+ {
1387
+ "internalType": "uint256",
1388
+ "name": "hanaFee",
1389
+ "type": "uint256",
1390
+ "indexed": false
1391
+ },
1392
+ {
1393
+ "internalType": "uint256",
1394
+ "name": "meshFee",
1395
+ "type": "uint256",
1396
+ "indexed": false
1397
+ }
1398
+ ],
1399
+ "type": "event",
1400
+ "name": "Bought",
1401
+ "anonymous": false
1402
+ },
1403
+ {
1404
+ "inputs": [
1405
+ {
1406
+ "internalType": "address",
1407
+ "name": "issuer",
1408
+ "type": "address",
1409
+ "indexed": true
1410
+ },
1411
+ {
1412
+ "internalType": "uint256",
1413
+ "name": "startedAt",
1414
+ "type": "uint256",
1415
+ "indexed": false
1416
+ }
1417
+ ],
1418
+ "type": "event",
1419
+ "name": "EarlyReleaseStarted",
1420
+ "anonymous": false
1421
+ },
1422
+ {
1423
+ "inputs": [
1424
+ {
1425
+ "internalType": "address",
1426
+ "name": "pair",
1427
+ "type": "address",
1428
+ "indexed": true
1429
+ },
1430
+ {
1431
+ "internalType": "uint256",
1432
+ "name": "hanaAmount",
1433
+ "type": "uint256",
1434
+ "indexed": false
1435
+ },
1436
+ {
1437
+ "internalType": "uint256",
1438
+ "name": "quoteAmount",
1439
+ "type": "uint256",
1440
+ "indexed": false
1441
+ },
1442
+ {
1443
+ "internalType": "uint256",
1444
+ "name": "burnedLP",
1445
+ "type": "uint256",
1446
+ "indexed": false
1447
+ },
1448
+ {
1449
+ "internalType": "uint256",
1450
+ "name": "excessHana",
1451
+ "type": "uint256",
1452
+ "indexed": false
1453
+ },
1454
+ {
1455
+ "internalType": "uint256",
1456
+ "name": "excessQuote",
1457
+ "type": "uint256",
1458
+ "indexed": false
1459
+ },
1460
+ {
1461
+ "internalType": "bool",
1462
+ "name": "poolExisted",
1463
+ "type": "bool",
1464
+ "indexed": false
1465
+ },
1466
+ {
1467
+ "internalType": "uint256",
1468
+ "name": "poolHana",
1469
+ "type": "uint256",
1470
+ "indexed": false
1471
+ },
1472
+ {
1473
+ "internalType": "uint256",
1474
+ "name": "poolQuote",
1475
+ "type": "uint256",
1476
+ "indexed": false
1477
+ }
1478
+ ],
1479
+ "type": "event",
1480
+ "name": "Migrated",
1481
+ "anonymous": false
1482
+ },
1483
+ {
1484
+ "inputs": [
1485
+ {
1486
+ "internalType": "address",
1487
+ "name": "pool",
1488
+ "type": "address",
1489
+ "indexed": true
1490
+ },
1491
+ {
1492
+ "internalType": "enum HanaBondQuoteV2.MigrationReason",
1493
+ "name": "reason",
1494
+ "type": "uint8",
1495
+ "indexed": false
1496
+ }
1497
+ ],
1498
+ "type": "event",
1499
+ "name": "MigrationDeferred",
1500
+ "anonymous": false
1501
+ },
1502
+ {
1503
+ "inputs": [
1504
+ {
1505
+ "internalType": "uint256",
1506
+ "name": "slot",
1507
+ "type": "uint256",
1508
+ "indexed": true
1509
+ },
1510
+ {
1511
+ "internalType": "uint256",
1512
+ "name": "timestamp",
1513
+ "type": "uint256",
1514
+ "indexed": false
1515
+ },
1516
+ {
1517
+ "internalType": "uint256",
1518
+ "name": "cumulative",
1519
+ "type": "uint256",
1520
+ "indexed": false
1521
+ }
1522
+ ],
1523
+ "type": "event",
1524
+ "name": "ObservationRecorded",
1525
+ "anonymous": false
1526
+ },
1527
+ {
1528
+ "inputs": [
1529
+ {
1530
+ "internalType": "address",
1531
+ "name": "account",
1532
+ "type": "address",
1533
+ "indexed": true
1534
+ },
1535
+ {
1536
+ "internalType": "uint256",
1537
+ "name": "quota",
1538
+ "type": "uint256",
1539
+ "indexed": false
1540
+ }
1541
+ ],
1542
+ "type": "event",
1543
+ "name": "SellQuotaChanged",
1544
+ "anonymous": false
1545
+ },
1546
+ {
1547
+ "inputs": [
1548
+ {
1549
+ "internalType": "address",
1550
+ "name": "account",
1551
+ "type": "address",
1552
+ "indexed": true
1553
+ },
1554
+ {
1555
+ "internalType": "address",
1556
+ "name": "recipient",
1557
+ "type": "address",
1558
+ "indexed": true
1559
+ },
1560
+ {
1561
+ "internalType": "uint256",
1562
+ "name": "hanaIn",
1563
+ "type": "uint256",
1564
+ "indexed": false
1565
+ },
1566
+ {
1567
+ "internalType": "uint256",
1568
+ "name": "principal",
1569
+ "type": "uint256",
1570
+ "indexed": false
1571
+ },
1572
+ {
1573
+ "internalType": "uint256",
1574
+ "name": "hanaFee",
1575
+ "type": "uint256",
1576
+ "indexed": false
1577
+ },
1578
+ {
1579
+ "internalType": "uint256",
1580
+ "name": "meshFee",
1581
+ "type": "uint256",
1582
+ "indexed": false
1583
+ }
1584
+ ],
1585
+ "type": "event",
1586
+ "name": "Sold",
1587
+ "anonymous": false
1588
+ },
1589
+ {
1590
+ "inputs": [],
1591
+ "stateMutability": "view",
1592
+ "type": "function",
1593
+ "name": "AVERAGE_WINDOW",
1594
+ "outputs": [
1595
+ {
1596
+ "internalType": "uint256",
1597
+ "name": "",
1598
+ "type": "uint256"
1599
+ }
1600
+ ]
1601
+ },
1602
+ {
1603
+ "inputs": [],
1604
+ "stateMutability": "view",
1605
+ "type": "function",
1606
+ "name": "AVERAGE_WINDOW_END",
1607
+ "outputs": [
1608
+ {
1609
+ "internalType": "uint256",
1610
+ "name": "",
1611
+ "type": "uint256"
1612
+ }
1613
+ ]
1614
+ },
1615
+ {
1616
+ "inputs": [],
1617
+ "stateMutability": "view",
1618
+ "type": "function",
1619
+ "name": "LIQUIDITY",
1620
+ "outputs": [
1621
+ {
1622
+ "internalType": "uint256",
1623
+ "name": "",
1624
+ "type": "uint256"
1625
+ }
1626
+ ]
1627
+ },
1628
+ {
1629
+ "inputs": [],
1630
+ "stateMutability": "view",
1631
+ "type": "function",
1632
+ "name": "MIGRATION_DEVIATION_BPS",
1633
+ "outputs": [
1634
+ {
1635
+ "internalType": "uint256",
1636
+ "name": "",
1637
+ "type": "uint256"
1638
+ }
1639
+ ]
1640
+ },
1641
+ {
1642
+ "inputs": [],
1643
+ "stateMutability": "view",
1644
+ "type": "function",
1645
+ "name": "OBSERVATION_COUNT",
1646
+ "outputs": [
1647
+ {
1648
+ "internalType": "uint256",
1649
+ "name": "",
1650
+ "type": "uint256"
1651
+ }
1652
+ ]
1653
+ },
1654
+ {
1655
+ "inputs": [],
1656
+ "stateMutability": "view",
1657
+ "type": "function",
1658
+ "name": "OBSERVATION_PERIOD",
1659
+ "outputs": [
1660
+ {
1661
+ "internalType": "uint256",
1662
+ "name": "",
1663
+ "type": "uint256"
1664
+ }
1665
+ ]
1666
+ },
1667
+ {
1668
+ "inputs": [],
1669
+ "stateMutability": "view",
1670
+ "type": "function",
1671
+ "name": "SALES",
1672
+ "outputs": [
1673
+ {
1674
+ "internalType": "uint256",
1675
+ "name": "",
1676
+ "type": "uint256"
1677
+ }
1678
+ ]
1679
+ },
1680
+ {
1681
+ "inputs": [],
1682
+ "stateMutability": "view",
1683
+ "type": "function",
1684
+ "name": "TOTAL",
1685
+ "outputs": [
1686
+ {
1687
+ "internalType": "uint256",
1688
+ "name": "",
1689
+ "type": "uint256"
1690
+ }
1691
+ ]
1692
+ },
1693
+ {
1694
+ "inputs": [],
1695
+ "stateMutability": "view",
1696
+ "type": "function",
1697
+ "name": "VIRTUAL_HANA",
1698
+ "outputs": [
1699
+ {
1700
+ "internalType": "uint256",
1701
+ "name": "",
1702
+ "type": "uint256"
1703
+ }
1704
+ ]
1705
+ },
1706
+ {
1707
+ "inputs": [],
1708
+ "stateMutability": "nonpayable",
1709
+ "type": "function",
1710
+ "name": "activate"
1711
+ },
1712
+ {
1713
+ "inputs": [],
1714
+ "stateMutability": "view",
1715
+ "type": "function",
1716
+ "name": "active",
1717
+ "outputs": [
1718
+ {
1719
+ "internalType": "bool",
1720
+ "name": "",
1721
+ "type": "bool"
1722
+ }
1723
+ ]
1724
+ },
1725
+ {
1726
+ "inputs": [
1727
+ {
1728
+ "internalType": "uint256",
1729
+ "name": "budget",
1730
+ "type": "uint256"
1731
+ },
1732
+ {
1733
+ "internalType": "uint256",
1734
+ "name": "minHana",
1735
+ "type": "uint256"
1736
+ },
1737
+ {
1738
+ "internalType": "uint256",
1739
+ "name": "deadline",
1740
+ "type": "uint256"
1741
+ }
1742
+ ],
1743
+ "stateMutability": "payable",
1744
+ "type": "function",
1745
+ "name": "buyBudget",
1746
+ "outputs": [
1747
+ {
1748
+ "internalType": "uint256",
1749
+ "name": "amount",
1750
+ "type": "uint256"
1751
+ }
1752
+ ]
1753
+ },
1754
+ {
1755
+ "inputs": [
1756
+ {
1757
+ "internalType": "uint256",
1758
+ "name": "requested",
1759
+ "type": "uint256"
1760
+ },
1761
+ {
1762
+ "internalType": "uint256",
1763
+ "name": "maxSpend",
1764
+ "type": "uint256"
1765
+ },
1766
+ {
1767
+ "internalType": "uint256",
1768
+ "name": "deadline",
1769
+ "type": "uint256"
1770
+ }
1771
+ ],
1772
+ "stateMutability": "payable",
1773
+ "type": "function",
1774
+ "name": "buyExact",
1775
+ "outputs": [
1776
+ {
1777
+ "internalType": "uint256",
1778
+ "name": "amount",
1779
+ "type": "uint256"
1780
+ }
1781
+ ]
1782
+ },
1783
+ {
1784
+ "inputs": [],
1785
+ "stateMutability": "view",
1786
+ "type": "function",
1787
+ "name": "closedAt",
1788
+ "outputs": [
1789
+ {
1790
+ "internalType": "uint256",
1791
+ "name": "",
1792
+ "type": "uint256"
1793
+ }
1794
+ ]
1795
+ },
1796
+ {
1797
+ "inputs": [],
1798
+ "stateMutability": "view",
1799
+ "type": "function",
1800
+ "name": "closingQuote",
1801
+ "outputs": [
1802
+ {
1803
+ "internalType": "uint256",
1804
+ "name": "",
1805
+ "type": "uint256"
1806
+ }
1807
+ ]
1808
+ },
1809
+ {
1810
+ "inputs": [],
1811
+ "stateMutability": "view",
1812
+ "type": "function",
1813
+ "name": "earlyReleaseAllowed",
1814
+ "outputs": [
1815
+ {
1816
+ "internalType": "bool",
1817
+ "name": "",
1818
+ "type": "bool"
1819
+ }
1820
+ ]
1821
+ },
1822
+ {
1823
+ "inputs": [],
1824
+ "stateMutability": "view",
1825
+ "type": "function",
1826
+ "name": "earlyReleaseAt",
1827
+ "outputs": [
1828
+ {
1829
+ "internalType": "uint256",
1830
+ "name": "",
1831
+ "type": "uint256"
1832
+ }
1833
+ ]
1834
+ },
1835
+ {
1836
+ "inputs": [
1837
+ {
1838
+ "internalType": "uint256",
1839
+ "name": "principal",
1840
+ "type": "uint256"
1841
+ }
1842
+ ],
1843
+ "stateMutability": "pure",
1844
+ "type": "function",
1845
+ "name": "fees",
1846
+ "outputs": [
1847
+ {
1848
+ "internalType": "uint256",
1849
+ "name": "hanaFee",
1850
+ "type": "uint256"
1851
+ },
1852
+ {
1853
+ "internalType": "uint256",
1854
+ "name": "meshFee",
1855
+ "type": "uint256"
1856
+ }
1857
+ ]
1858
+ },
1859
+ {
1860
+ "inputs": [],
1861
+ "stateMutability": "view",
1862
+ "type": "function",
1863
+ "name": "hana",
1864
+ "outputs": [
1865
+ {
1866
+ "internalType": "address",
1867
+ "name": "",
1868
+ "type": "address"
1869
+ }
1870
+ ]
1871
+ },
1872
+ {
1873
+ "inputs": [],
1874
+ "stateMutability": "view",
1875
+ "type": "function",
1876
+ "name": "hanaTreasury",
1877
+ "outputs": [
1878
+ {
1879
+ "internalType": "address",
1880
+ "name": "",
1881
+ "type": "address"
1882
+ }
1883
+ ]
1884
+ },
1885
+ {
1886
+ "inputs": [],
1887
+ "stateMutability": "view",
1888
+ "type": "function",
1889
+ "name": "issuer",
1890
+ "outputs": [
1891
+ {
1892
+ "internalType": "address",
1893
+ "name": "",
1894
+ "type": "address"
1895
+ }
1896
+ ]
1897
+ },
1898
+ {
1899
+ "inputs": [],
1900
+ "stateMutability": "view",
1901
+ "type": "function",
1902
+ "name": "lastMigrationReason",
1903
+ "outputs": [
1904
+ {
1905
+ "internalType": "enum HanaBondQuoteV2.MigrationReason",
1906
+ "name": "",
1907
+ "type": "uint8"
1908
+ }
1909
+ ]
1910
+ },
1911
+ {
1912
+ "inputs": [],
1913
+ "stateMutability": "view",
1914
+ "type": "function",
1915
+ "name": "meshTreasury",
1916
+ "outputs": [
1917
+ {
1918
+ "internalType": "address",
1919
+ "name": "",
1920
+ "type": "address"
1921
+ }
1922
+ ]
1923
+ },
1924
+ {
1925
+ "inputs": [],
1926
+ "stateMutability": "nonpayable",
1927
+ "type": "function",
1928
+ "name": "migrate",
1929
+ "outputs": [
1930
+ {
1931
+ "internalType": "bool",
1932
+ "name": "completed",
1933
+ "type": "bool"
1934
+ }
1935
+ ]
1936
+ },
1937
+ {
1938
+ "inputs": [],
1939
+ "stateMutability": "view",
1940
+ "type": "function",
1941
+ "name": "migrated",
1942
+ "outputs": [
1943
+ {
1944
+ "internalType": "bool",
1945
+ "name": "",
1946
+ "type": "bool"
1947
+ }
1948
+ ]
1949
+ },
1950
+ {
1951
+ "inputs": [],
1952
+ "stateMutability": "view",
1953
+ "type": "function",
1954
+ "name": "migratedAt",
1955
+ "outputs": [
1956
+ {
1957
+ "internalType": "uint256",
1958
+ "name": "",
1959
+ "type": "uint256"
1960
+ }
1961
+ ]
1962
+ },
1963
+ {
1964
+ "inputs": [],
1965
+ "stateMutability": "view",
1966
+ "type": "function",
1967
+ "name": "migrationHana",
1968
+ "outputs": [
1969
+ {
1970
+ "internalType": "uint256",
1971
+ "name": "",
1972
+ "type": "uint256"
1973
+ }
1974
+ ]
1975
+ },
1976
+ {
1977
+ "inputs": [],
1978
+ "stateMutability": "view",
1979
+ "type": "function",
1980
+ "name": "migrationPoolHana",
1981
+ "outputs": [
1982
+ {
1983
+ "internalType": "uint256",
1984
+ "name": "",
1985
+ "type": "uint256"
1986
+ }
1987
+ ]
1988
+ },
1989
+ {
1990
+ "inputs": [],
1991
+ "stateMutability": "view",
1992
+ "type": "function",
1993
+ "name": "migrationPoolQuote",
1994
+ "outputs": [
1995
+ {
1996
+ "internalType": "uint256",
1997
+ "name": "",
1998
+ "type": "uint256"
1999
+ }
2000
+ ]
2001
+ },
2002
+ {
2003
+ "inputs": [],
2004
+ "stateMutability": "view",
2005
+ "type": "function",
2006
+ "name": "migrationQuote",
2007
+ "outputs": [
2008
+ {
2009
+ "internalType": "uint256",
2010
+ "name": "",
2011
+ "type": "uint256"
2012
+ }
2013
+ ]
2014
+ },
2015
+ {
2016
+ "inputs": [],
2017
+ "stateMutability": "view",
2018
+ "type": "function",
2019
+ "name": "migrationStatus",
2020
+ "outputs": [
2021
+ {
2022
+ "internalType": "struct HanaBondQuoteV2.MigrationStatus",
2023
+ "name": "result",
2024
+ "type": "tuple",
2025
+ "components": [
2026
+ {
2027
+ "internalType": "bool",
2028
+ "name": "closed",
2029
+ "type": "bool"
2030
+ },
2031
+ {
2032
+ "internalType": "bool",
2033
+ "name": "completed",
2034
+ "type": "bool"
2035
+ },
2036
+ {
2037
+ "internalType": "bool",
2038
+ "name": "historyReady",
2039
+ "type": "bool"
2040
+ },
2041
+ {
2042
+ "internalType": "enum HanaBondQuoteV2.MigrationReason",
2043
+ "name": "lastReason",
2044
+ "type": "uint8"
2045
+ },
2046
+ {
2047
+ "internalType": "uint256",
2048
+ "name": "closedAt",
2049
+ "type": "uint256"
2050
+ },
2051
+ {
2052
+ "internalType": "uint256",
2053
+ "name": "migratedAt",
2054
+ "type": "uint256"
2055
+ },
2056
+ {
2057
+ "internalType": "uint256",
2058
+ "name": "closingQuote",
2059
+ "type": "uint256"
2060
+ },
2061
+ {
2062
+ "internalType": "uint256",
2063
+ "name": "windowSeconds",
2064
+ "type": "uint256"
2065
+ },
2066
+ {
2067
+ "internalType": "uint256",
2068
+ "name": "averageX112",
2069
+ "type": "uint256"
2070
+ },
2071
+ {
2072
+ "internalType": "uint256",
2073
+ "name": "spotX112",
2074
+ "type": "uint256"
2075
+ }
2076
+ ]
2077
+ }
2078
+ ]
2079
+ },
2080
+ {
2081
+ "inputs": [],
2082
+ "stateMutability": "view",
2083
+ "type": "function",
2084
+ "name": "netReserve",
2085
+ "outputs": [
2086
+ {
2087
+ "internalType": "uint256",
2088
+ "name": "",
2089
+ "type": "uint256"
2090
+ }
2091
+ ]
2092
+ },
2093
+ {
2094
+ "inputs": [
2095
+ {
2096
+ "internalType": "uint256",
2097
+ "name": "",
2098
+ "type": "uint256"
2099
+ }
2100
+ ],
2101
+ "stateMutability": "view",
2102
+ "type": "function",
2103
+ "name": "observations",
2104
+ "outputs": [
2105
+ {
2106
+ "internalType": "uint256",
2107
+ "name": "timestamp",
2108
+ "type": "uint256"
2109
+ },
2110
+ {
2111
+ "internalType": "uint256",
2112
+ "name": "cumulative",
2113
+ "type": "uint256"
2114
+ }
2115
+ ]
2116
+ },
2117
+ {
2118
+ "inputs": [],
2119
+ "stateMutability": "view",
2120
+ "type": "function",
2121
+ "name": "pair",
2122
+ "outputs": [
2123
+ {
2124
+ "internalType": "address",
2125
+ "name": "",
2126
+ "type": "address"
2127
+ }
2128
+ ]
2129
+ },
2130
+ {
2131
+ "inputs": [],
2132
+ "stateMutability": "view",
2133
+ "type": "function",
2134
+ "name": "pointsAmount",
2135
+ "outputs": [
2136
+ {
2137
+ "internalType": "uint256",
2138
+ "name": "",
2139
+ "type": "uint256"
2140
+ }
2141
+ ]
2142
+ },
2143
+ {
2144
+ "inputs": [],
2145
+ "stateMutability": "view",
2146
+ "type": "function",
2147
+ "name": "pointsBps",
2148
+ "outputs": [
2149
+ {
2150
+ "internalType": "uint256",
2151
+ "name": "",
2152
+ "type": "uint256"
2153
+ }
2154
+ ]
2155
+ },
2156
+ {
2157
+ "inputs": [],
2158
+ "stateMutability": "view",
2159
+ "type": "function",
2160
+ "name": "pool",
2161
+ "outputs": [
2162
+ {
2163
+ "internalType": "address",
2164
+ "name": "",
2165
+ "type": "address"
2166
+ }
2167
+ ]
2168
+ },
2169
+ {
2170
+ "inputs": [],
2171
+ "stateMutability": "view",
2172
+ "type": "function",
2173
+ "name": "quote",
2174
+ "outputs": [
2175
+ {
2176
+ "internalType": "address",
2177
+ "name": "",
2178
+ "type": "address"
2179
+ }
2180
+ ]
2181
+ },
2182
+ {
2183
+ "inputs": [
2184
+ {
2185
+ "internalType": "uint256",
2186
+ "name": "budget",
2187
+ "type": "uint256"
2188
+ }
2189
+ ],
2190
+ "stateMutability": "view",
2191
+ "type": "function",
2192
+ "name": "quoteBuyBudget",
2193
+ "outputs": [
2194
+ {
2195
+ "internalType": "uint256",
2196
+ "name": "amount",
2197
+ "type": "uint256"
2198
+ },
2199
+ {
2200
+ "internalType": "uint256",
2201
+ "name": "principal",
2202
+ "type": "uint256"
2203
+ },
2204
+ {
2205
+ "internalType": "uint256",
2206
+ "name": "hanaFee",
2207
+ "type": "uint256"
2208
+ },
2209
+ {
2210
+ "internalType": "uint256",
2211
+ "name": "meshFee",
2212
+ "type": "uint256"
2213
+ }
2214
+ ]
2215
+ },
2216
+ {
2217
+ "inputs": [
2218
+ {
2219
+ "internalType": "uint256",
2220
+ "name": "requested",
2221
+ "type": "uint256"
2222
+ }
2223
+ ],
2224
+ "stateMutability": "view",
2225
+ "type": "function",
2226
+ "name": "quoteBuyExact",
2227
+ "outputs": [
2228
+ {
2229
+ "internalType": "uint256",
2230
+ "name": "amount",
2231
+ "type": "uint256"
2232
+ },
2233
+ {
2234
+ "internalType": "uint256",
2235
+ "name": "principal",
2236
+ "type": "uint256"
2237
+ },
2238
+ {
2239
+ "internalType": "uint256",
2240
+ "name": "hanaFee",
2241
+ "type": "uint256"
2242
+ },
2243
+ {
2244
+ "internalType": "uint256",
2245
+ "name": "meshFee",
2246
+ "type": "uint256"
2247
+ }
2248
+ ]
2249
+ },
2250
+ {
2251
+ "inputs": [
2252
+ {
2253
+ "internalType": "uint256",
2254
+ "name": "amount",
2255
+ "type": "uint256"
2256
+ }
2257
+ ],
2258
+ "stateMutability": "view",
2259
+ "type": "function",
2260
+ "name": "quoteSell",
2261
+ "outputs": [
2262
+ {
2263
+ "internalType": "uint256",
2264
+ "name": "principal",
2265
+ "type": "uint256"
2266
+ },
2267
+ {
2268
+ "internalType": "uint256",
2269
+ "name": "hanaFee",
2270
+ "type": "uint256"
2271
+ },
2272
+ {
2273
+ "internalType": "uint256",
2274
+ "name": "meshFee",
2275
+ "type": "uint256"
2276
+ }
2277
+ ]
2278
+ },
2279
+ {
2280
+ "inputs": [],
2281
+ "stateMutability": "view",
2282
+ "type": "function",
2283
+ "name": "registry",
2284
+ "outputs": [
2285
+ {
2286
+ "internalType": "contract HanaBondFactoryQuoteV2",
2287
+ "name": "",
2288
+ "type": "address"
2289
+ }
2290
+ ]
2291
+ },
2292
+ {
2293
+ "inputs": [],
2294
+ "stateMutability": "view",
2295
+ "type": "function",
2296
+ "name": "releaseStartedAt",
2297
+ "outputs": [
2298
+ {
2299
+ "internalType": "uint256",
2300
+ "name": "",
2301
+ "type": "uint256"
2302
+ }
2303
+ ]
2304
+ },
2305
+ {
2306
+ "inputs": [
2307
+ {
2308
+ "internalType": "uint256",
2309
+ "name": "s",
2310
+ "type": "uint256"
2311
+ }
2312
+ ],
2313
+ "stateMutability": "view",
2314
+ "type": "function",
2315
+ "name": "reserveAt",
2316
+ "outputs": [
2317
+ {
2318
+ "internalType": "uint256",
2319
+ "name": "",
2320
+ "type": "uint256"
2321
+ }
2322
+ ]
2323
+ },
2324
+ {
2325
+ "inputs": [],
2326
+ "stateMutability": "view",
2327
+ "type": "function",
2328
+ "name": "router",
2329
+ "outputs": [
2330
+ {
2331
+ "internalType": "address",
2332
+ "name": "",
2333
+ "type": "address"
2334
+ }
2335
+ ]
2336
+ },
2337
+ {
2338
+ "inputs": [
2339
+ {
2340
+ "internalType": "uint256",
2341
+ "name": "amount",
2342
+ "type": "uint256"
2343
+ },
2344
+ {
2345
+ "internalType": "uint256",
2346
+ "name": "minReceive",
2347
+ "type": "uint256"
2348
+ },
2349
+ {
2350
+ "internalType": "address",
2351
+ "name": "recipient",
2352
+ "type": "address"
2353
+ },
2354
+ {
2355
+ "internalType": "uint256",
2356
+ "name": "deadline",
2357
+ "type": "uint256"
2358
+ }
2359
+ ],
2360
+ "stateMutability": "nonpayable",
2361
+ "type": "function",
2362
+ "name": "sell",
2363
+ "outputs": [
2364
+ {
2365
+ "internalType": "uint256",
2366
+ "name": "receiveAmount",
2367
+ "type": "uint256"
2368
+ }
2369
+ ]
2370
+ },
2371
+ {
2372
+ "inputs": [
2373
+ {
2374
+ "internalType": "address",
2375
+ "name": "account",
2376
+ "type": "address"
2377
+ }
2378
+ ],
2379
+ "stateMutability": "view",
2380
+ "type": "function",
2381
+ "name": "sellQuota",
2382
+ "outputs": [
2383
+ {
2384
+ "internalType": "uint256",
2385
+ "name": "",
2386
+ "type": "uint256"
2387
+ }
2388
+ ]
2389
+ },
2390
+ {
2391
+ "inputs": [
2392
+ {
2393
+ "internalType": "address",
2394
+ "name": "account",
2395
+ "type": "address"
2396
+ }
2397
+ ],
2398
+ "stateMutability": "view",
2399
+ "type": "function",
2400
+ "name": "sellable",
2401
+ "outputs": [
2402
+ {
2403
+ "internalType": "uint256",
2404
+ "name": "",
2405
+ "type": "uint256"
2406
+ }
2407
+ ]
2408
+ },
2409
+ {
2410
+ "inputs": [],
2411
+ "stateMutability": "view",
2412
+ "type": "function",
2413
+ "name": "sold",
2414
+ "outputs": [
2415
+ {
2416
+ "internalType": "uint256",
2417
+ "name": "",
2418
+ "type": "uint256"
2419
+ }
2420
+ ]
2421
+ },
2422
+ {
2423
+ "inputs": [],
2424
+ "stateMutability": "nonpayable",
2425
+ "type": "function",
2426
+ "name": "startEarlyRelease"
2427
+ },
2428
+ {
2429
+ "inputs": [],
2430
+ "stateMutability": "view",
2431
+ "type": "function",
2432
+ "name": "v2Factory",
2433
+ "outputs": [
2434
+ {
2435
+ "internalType": "address",
2436
+ "name": "",
2437
+ "type": "address"
2438
+ }
2439
+ ]
2440
+ },
2441
+ {
2442
+ "inputs": [],
2443
+ "stateMutability": "view",
2444
+ "type": "function",
2445
+ "name": "virtualQuote",
2446
+ "outputs": [
2447
+ {
2448
+ "internalType": "uint256",
2449
+ "name": "",
2450
+ "type": "uint256"
2451
+ }
2452
+ ]
2453
+ },
2454
+ {
2455
+ "inputs": [],
2456
+ "stateMutability": "view",
2457
+ "type": "function",
2458
+ "name": "wrappedNative",
2459
+ "outputs": [
2460
+ {
2461
+ "internalType": "address",
2462
+ "name": "",
2463
+ "type": "address"
2464
+ }
2465
+ ]
2466
+ },
2467
+ {
2468
+ "inputs": [],
2469
+ "stateMutability": "payable",
2470
+ "type": "receive"
2471
+ }
2472
+ ],
2473
+ "devdoc": {
2474
+ "kind": "dev",
2475
+ "methods": {},
2476
+ "version": 1
2477
+ },
2478
+ "userdoc": {
2479
+ "kind": "user",
2480
+ "methods": {
2481
+ "buyExact(uint256,uint256,uint256)": {
2482
+ "notice": "The caller pays quote and receives both the Hana and the sell-back quota."
2483
+ },
2484
+ "migrate()": {
2485
+ "notice": "A successful transaction can still be pending: inspect the return value, MigrationDeferred/Migrated and migrationStatus(), not receipt status alone."
2486
+ },
2487
+ "quoteSell(uint256)": {
2488
+ "notice": "Public curve price only. A sale additionally requires the caller's own quota."
2489
+ },
2490
+ "releaseStartedAt()": {
2491
+ "notice": "Canonical release start: issuer early-release time if triggered, else migration time."
2492
+ },
2493
+ "sellable(address)": {
2494
+ "notice": "Amount the account can sell back right now: min(quota, wallet balance), 0 when closed."
2495
+ },
2496
+ "startEarlyRelease()": {
2497
+ "notice": "One-time, irreversible issuer trigger; only for issuances frozen with earlyReleaseAllowed."
2498
+ }
2499
+ },
2500
+ "version": 1
2501
+ }
2502
+ },
2503
+ "settings": {
2504
+ "remappings": [
2505
+ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
2506
+ "forge-std/=lib/forge-std/src/"
2507
+ ],
2508
+ "optimizer": {
2509
+ "enabled": true,
2510
+ "runs": 200
2511
+ },
2512
+ "metadata": {
2513
+ "bytecodeHash": "ipfs"
2514
+ },
2515
+ "compilationTarget": {
2516
+ "src/HanaBondQuoteV2.sol": "HanaBondQuoteV2"
2517
+ },
2518
+ "evmVersion": "paris",
2519
+ "libraries": {}
2520
+ },
2521
+ "sources": {
2522
+ "lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol": {
2523
+ "keccak256": "0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7",
2524
+ "urls": [
2525
+ "bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b",
2526
+ "dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"
2527
+ ],
2528
+ "license": "MIT"
2529
+ },
2530
+ "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol": {
2531
+ "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724",
2532
+ "urls": [
2533
+ "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a",
2534
+ "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"
2535
+ ],
2536
+ "license": "MIT"
2537
+ },
2538
+ "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol": {
2539
+ "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c",
2540
+ "urls": [
2541
+ "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba",
2542
+ "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"
2543
+ ],
2544
+ "license": "MIT"
2545
+ },
2546
+ "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
2547
+ "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
2548
+ "urls": [
2549
+ "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
2550
+ "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
2551
+ ],
2552
+ "license": "MIT"
2553
+ },
2554
+ "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": {
2555
+ "keccak256": "0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5",
2556
+ "urls": [
2557
+ "bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508",
2558
+ "dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB"
2559
+ ],
2560
+ "license": "MIT"
2561
+ },
2562
+ "lib/openzeppelin-contracts/contracts/utils/Panic.sol": {
2563
+ "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
2564
+ "urls": [
2565
+ "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
2566
+ "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
2567
+ ],
2568
+ "license": "MIT"
2569
+ },
2570
+ "lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol": {
2571
+ "keccak256": "0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3",
2572
+ "urls": [
2573
+ "bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a",
2574
+ "dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"
2575
+ ],
2576
+ "license": "MIT"
2577
+ },
2578
+ "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
2579
+ "keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8",
2580
+ "urls": [
2581
+ "bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621",
2582
+ "dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"
2583
+ ],
2584
+ "license": "MIT"
2585
+ },
2586
+ "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {
2587
+ "keccak256": "0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6",
2588
+ "urls": [
2589
+ "bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3",
2590
+ "dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"
2591
+ ],
2592
+ "license": "MIT"
2593
+ },
2594
+ "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": {
2595
+ "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54",
2596
+ "urls": [
2597
+ "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8",
2598
+ "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"
2599
+ ],
2600
+ "license": "MIT"
2601
+ },
2602
+ "src/HanaBondQuoteV2.sol": {
2603
+ "keccak256": "0x68b4ab797dc6cd4a647240586595d105908476f6dd1f4fd68fb5d3f3e67802f1",
2604
+ "urls": [
2605
+ "bzz-raw://a347a47725a0781f9e25dfb41e3d79b9f34ecdeeaedf674e2023f71739f5269e",
2606
+ "dweb:/ipfs/QmYatBjqtcjUS9TS3J8KYs3ibJf2VwpjfcQ2NfSmZrGh6W"
2607
+ ],
2608
+ "license": "MIT"
2609
+ },
2610
+ "src/QuoteV2MigrationMath.sol": {
2611
+ "keccak256": "0xa7f4e632458606afde140bad764ebf1490aa9cd5d5a1ef3f7f3830b85fb6b58c",
2612
+ "urls": [
2613
+ "bzz-raw://c0055087d5ab596ce4349d53ba18ae50d6ecda5d88767698ada57dc02102786f",
2614
+ "dweb:/ipfs/QmSdQJZxDvkqRoh7BQVeQgdFWNCv6DAHHD8wf8LBnREQCv"
2615
+ ],
2616
+ "license": "MIT"
2617
+ }
2618
+ },
2619
+ "version": 1
2620
+ },
2621
+ "immutableReferences": {
2622
+ "11811": [
2623
+ {
2624
+ "start": 2399,
2625
+ "length": 32
2626
+ },
2627
+ {
2628
+ "start": 3172,
2629
+ "length": 32
2630
+ },
2631
+ {
2632
+ "start": 3642,
2633
+ "length": 32
2634
+ },
2635
+ {
2636
+ "start": 4717,
2637
+ "length": 32
2638
+ },
2639
+ {
2640
+ "start": 4839,
2641
+ "length": 32
2642
+ },
2643
+ {
2644
+ "start": 4909,
2645
+ "length": 32
2646
+ },
2647
+ {
2648
+ "start": 5927,
2649
+ "length": 32
2650
+ },
2651
+ {
2652
+ "start": 7062,
2653
+ "length": 32
2654
+ },
2655
+ {
2656
+ "start": 8996,
2657
+ "length": 32
2658
+ },
2659
+ {
2660
+ "start": 10977,
2661
+ "length": 32
2662
+ },
2663
+ {
2664
+ "start": 11715,
2665
+ "length": 32
2666
+ },
2667
+ {
2668
+ "start": 12520,
2669
+ "length": 32
2670
+ },
2671
+ {
2672
+ "start": 12826,
2673
+ "length": 32
2674
+ },
2675
+ {
2676
+ "start": 13082,
2677
+ "length": 32
2678
+ },
2679
+ {
2680
+ "start": 13388,
2681
+ "length": 32
2682
+ },
2683
+ {
2684
+ "start": 13850,
2685
+ "length": 32
2686
+ }
2687
+ ],
2688
+ "11813": [
2689
+ {
2690
+ "start": 2767,
2691
+ "length": 32
2692
+ },
2693
+ {
2694
+ "start": 5361,
2695
+ "length": 32
2696
+ },
2697
+ {
2698
+ "start": 8879,
2699
+ "length": 32
2700
+ }
2701
+ ],
2702
+ "11815": [
2703
+ {
2704
+ "start": 2151,
2705
+ "length": 32
2706
+ },
2707
+ {
2708
+ "start": 3350,
2709
+ "length": 32
2710
+ },
2711
+ {
2712
+ "start": 5098,
2713
+ "length": 32
2714
+ },
2715
+ {
2716
+ "start": 5165,
2717
+ "length": 32
2718
+ },
2719
+ {
2720
+ "start": 5285,
2721
+ "length": 32
2722
+ },
2723
+ {
2724
+ "start": 5328,
2725
+ "length": 32
2726
+ },
2727
+ {
2728
+ "start": 5403,
2729
+ "length": 32
2730
+ },
2731
+ {
2732
+ "start": 8246,
2733
+ "length": 32
2734
+ },
2735
+ {
2736
+ "start": 8405,
2737
+ "length": 32
2738
+ },
2739
+ {
2740
+ "start": 8495,
2741
+ "length": 32
2742
+ },
2743
+ {
2744
+ "start": 8626,
2745
+ "length": 32
2746
+ },
2747
+ {
2748
+ "start": 8696,
2749
+ "length": 32
2750
+ },
2751
+ {
2752
+ "start": 8846,
2753
+ "length": 32
2754
+ },
2755
+ {
2756
+ "start": 8921,
2757
+ "length": 32
2758
+ },
2759
+ {
2760
+ "start": 11017,
2761
+ "length": 32
2762
+ },
2763
+ {
2764
+ "start": 11982,
2765
+ "length": 32
2766
+ },
2767
+ {
2768
+ "start": 12595,
2769
+ "length": 32
2770
+ },
2771
+ {
2772
+ "start": 12968,
2773
+ "length": 32
2774
+ },
2775
+ {
2776
+ "start": 13157,
2777
+ "length": 32
2778
+ }
2779
+ ],
2780
+ "11817": [
2781
+ {
2782
+ "start": 2715,
2783
+ "length": 32
2784
+ }
2785
+ ],
2786
+ "11819": [
2787
+ {
2788
+ "start": 2347,
2789
+ "length": 32
2790
+ },
2791
+ {
2792
+ "start": 11100,
2793
+ "length": 32
2794
+ }
2795
+ ],
2796
+ "11821": [
2797
+ {
2798
+ "start": 1893,
2799
+ "length": 32
2800
+ },
2801
+ {
2802
+ "start": 5436,
2803
+ "length": 32
2804
+ },
2805
+ {
2806
+ "start": 8954,
2807
+ "length": 32
2808
+ },
2809
+ {
2810
+ "start": 13115,
2811
+ "length": 32
2812
+ },
2813
+ {
2814
+ "start": 13190,
2815
+ "length": 32
2816
+ }
2817
+ ],
2818
+ "11823": [
2819
+ {
2820
+ "start": 1138,
2821
+ "length": 32
2822
+ },
2823
+ {
2824
+ "start": 3129,
2825
+ "length": 32
2826
+ },
2827
+ {
2828
+ "start": 3304,
2829
+ "length": 32
2830
+ },
2831
+ {
2832
+ "start": 6750,
2833
+ "length": 32
2834
+ },
2835
+ {
2836
+ "start": 9169,
2837
+ "length": 32
2838
+ },
2839
+ {
2840
+ "start": 10373,
2841
+ "length": 32
2842
+ },
2843
+ {
2844
+ "start": 11062,
2845
+ "length": 32
2846
+ },
2847
+ {
2848
+ "start": 11762,
2849
+ "length": 32
2850
+ },
2851
+ {
2852
+ "start": 11934,
2853
+ "length": 32
2854
+ },
2855
+ {
2856
+ "start": 12553,
2857
+ "length": 32
2858
+ },
2859
+ {
2860
+ "start": 12628,
2861
+ "length": 32
2862
+ },
2863
+ {
2864
+ "start": 13274,
2865
+ "length": 32
2866
+ },
2867
+ {
2868
+ "start": 13437,
2869
+ "length": 32
2870
+ },
2871
+ {
2872
+ "start": 13633,
2873
+ "length": 32
2874
+ }
2875
+ ],
2876
+ "11825": [
2877
+ {
2878
+ "start": 1214,
2879
+ "length": 32
2880
+ },
2881
+ {
2882
+ "start": 6077,
2883
+ "length": 32
2884
+ }
2885
+ ],
2886
+ "11827": [
2887
+ {
2888
+ "start": 1067,
2889
+ "length": 32
2890
+ },
2891
+ {
2892
+ "start": 6657,
2893
+ "length": 32
2894
+ }
2895
+ ],
2896
+ "11829": [
2897
+ {
2898
+ "start": 814,
2899
+ "length": 32
2900
+ },
2901
+ {
2902
+ "start": 2663,
2903
+ "length": 32
2904
+ },
2905
+ {
2906
+ "start": 5056,
2907
+ "length": 32
2908
+ },
2909
+ {
2910
+ "start": 8363,
2911
+ "length": 32
2912
+ }
2913
+ ],
2914
+ "11831": [
2915
+ {
2916
+ "start": 2579,
2917
+ "length": 32
2918
+ }
2919
+ ],
2920
+ "11833": [
2921
+ {
2922
+ "start": 1710,
2923
+ "length": 32
2924
+ }
2925
+ ],
2926
+ "11835": [
2927
+ {
2928
+ "start": 1607,
2929
+ "length": 32
2930
+ },
2931
+ {
2932
+ "start": 6140,
2933
+ "length": 32
2934
+ }
2935
+ ],
2936
+ "11838": [
2937
+ {
2938
+ "start": 1841,
2939
+ "length": 32
2940
+ },
2941
+ {
2942
+ "start": 3505,
2943
+ "length": 32
2944
+ },
2945
+ {
2946
+ "start": 13477,
2947
+ "length": 32
2948
+ }
2949
+ ]
2950
+ }
2951
+ }