@ubk-labs/ubk-oracle 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/artifacts/contracts/constants/Constants.sol/Constants.dbg.json +4 -0
  4. package/artifacts/contracts/constants/Constants.sol/Constants.json +141 -0
  5. package/artifacts/contracts/core/UBKOracle.sol/UBKOracle.dbg.json +4 -0
  6. package/artifacts/contracts/core/UBKOracle.sol/UBKOracle.json +1028 -0
  7. package/artifacts/contracts/mocks/MockAggregatorV3.sol/MockAggregatorV3.dbg.json +4 -0
  8. package/artifacts/contracts/mocks/MockAggregatorV3.sol/MockAggregatorV3.json +177 -0
  9. package/artifacts/contracts/mocks/MockERC20.sol/MockERC20.dbg.json +4 -0
  10. package/artifacts/contracts/mocks/MockERC20.sol/MockERC20.json +381 -0
  11. package/artifacts/contracts/mocks/MockERC4626.sol/Mock4626.dbg.json +4 -0
  12. package/artifacts/contracts/mocks/MockERC4626.sol/Mock4626.json +500 -0
  13. package/artifacts/contracts/mocks/MockIERC4626.sol/MockIERC4626.dbg.json +4 -0
  14. package/artifacts/contracts/mocks/MockIERC4626.sol/MockIERC4626.json +99 -0
  15. package/artifacts/interfaces/IUBKOracle.sol/IUBKOracle.dbg.json +4 -0
  16. package/artifacts/interfaces/IUBKOracle.sol/IUBKOracle.json +264 -0
  17. package/contracts/constants/Constants.sol +34 -0
  18. package/contracts/core/UBKOracle.sol +560 -0
  19. package/contracts/errors/Errors.sol +17 -0
  20. package/contracts/mocks/MockAggregatorV3.sol +56 -0
  21. package/contracts/mocks/MockERC20.sol +28 -0
  22. package/contracts/mocks/MockERC4626.sol +74 -0
  23. package/contracts/mocks/MockIERC4626.sol +13 -0
  24. package/interfaces/IUBKOracle.sol +54 -0
  25. package/package.json +41 -0
@@ -0,0 +1,1028 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "UBKOracle",
4
+ "sourceName": "contracts/core/UBKOracle.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_owner",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "vault",
22
+ "type": "address"
23
+ }
24
+ ],
25
+ "name": "InvalidERC4626Vault",
26
+ "type": "error"
27
+ },
28
+ {
29
+ "inputs": [
30
+ {
31
+ "internalType": "address",
32
+ "name": "feed",
33
+ "type": "address"
34
+ }
35
+ ],
36
+ "name": "InvalidFeedContract",
37
+ "type": "error"
38
+ },
39
+ {
40
+ "inputs": [
41
+ {
42
+ "internalType": "address",
43
+ "name": "feed",
44
+ "type": "address"
45
+ },
46
+ {
47
+ "internalType": "uint8",
48
+ "name": "decimals",
49
+ "type": "uint8"
50
+ }
51
+ ],
52
+ "name": "InvalidFeedDecimals",
53
+ "type": "error"
54
+ },
55
+ {
56
+ "inputs": [
57
+ {
58
+ "internalType": "address",
59
+ "name": "token",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "internalType": "uint256",
64
+ "name": "price",
65
+ "type": "uint256"
66
+ }
67
+ ],
68
+ "name": "InvalidManualPrice",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "address",
75
+ "name": "token",
76
+ "type": "address"
77
+ },
78
+ {
79
+ "internalType": "address",
80
+ "name": "feed",
81
+ "type": "address"
82
+ }
83
+ ],
84
+ "name": "InvalidOraclePrice",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [
89
+ {
90
+ "internalType": "uint256",
91
+ "name": "period",
92
+ "type": "uint256"
93
+ }
94
+ ],
95
+ "name": "InvalidStalePeriod",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [
100
+ {
101
+ "internalType": "address",
102
+ "name": "vault",
103
+ "type": "address"
104
+ },
105
+ {
106
+ "internalType": "uint256",
107
+ "name": "minRate",
108
+ "type": "uint256"
109
+ },
110
+ {
111
+ "internalType": "uint256",
112
+ "name": "maxRate",
113
+ "type": "uint256"
114
+ }
115
+ ],
116
+ "name": "InvalidVaultBounds",
117
+ "type": "error"
118
+ },
119
+ {
120
+ "inputs": [
121
+ {
122
+ "internalType": "address",
123
+ "name": "vault",
124
+ "type": "address"
125
+ },
126
+ {
127
+ "internalType": "uint256",
128
+ "name": "rate",
129
+ "type": "uint256"
130
+ }
131
+ ],
132
+ "name": "InvalidVaultExchangeRate",
133
+ "type": "error"
134
+ },
135
+ {
136
+ "inputs": [
137
+ {
138
+ "internalType": "address",
139
+ "name": "token",
140
+ "type": "address"
141
+ }
142
+ ],
143
+ "name": "NoFallbackPrice",
144
+ "type": "error"
145
+ },
146
+ {
147
+ "inputs": [
148
+ {
149
+ "internalType": "address",
150
+ "name": "token",
151
+ "type": "address"
152
+ }
153
+ ],
154
+ "name": "NoPriceFeed",
155
+ "type": "error"
156
+ },
157
+ {
158
+ "inputs": [
159
+ {
160
+ "internalType": "address",
161
+ "name": "oracle",
162
+ "type": "address"
163
+ },
164
+ {
165
+ "internalType": "uint256",
166
+ "name": "timestamp",
167
+ "type": "uint256"
168
+ }
169
+ ],
170
+ "name": "OraclePaused",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [
175
+ {
176
+ "internalType": "address",
177
+ "name": "owner",
178
+ "type": "address"
179
+ }
180
+ ],
181
+ "name": "OwnableInvalidOwner",
182
+ "type": "error"
183
+ },
184
+ {
185
+ "inputs": [
186
+ {
187
+ "internalType": "address",
188
+ "name": "account",
189
+ "type": "address"
190
+ }
191
+ ],
192
+ "name": "OwnableUnauthorizedAccount",
193
+ "type": "error"
194
+ },
195
+ {
196
+ "inputs": [
197
+ {
198
+ "internalType": "address",
199
+ "name": "token",
200
+ "type": "address"
201
+ }
202
+ ],
203
+ "name": "RecursiveResolution",
204
+ "type": "error"
205
+ },
206
+ {
207
+ "inputs": [
208
+ {
209
+ "internalType": "address",
210
+ "name": "token",
211
+ "type": "address"
212
+ }
213
+ ],
214
+ "name": "StaleFallback",
215
+ "type": "error"
216
+ },
217
+ {
218
+ "inputs": [
219
+ {
220
+ "internalType": "address",
221
+ "name": "token",
222
+ "type": "address"
223
+ },
224
+ {
225
+ "internalType": "uint256",
226
+ "name": "updatedAt",
227
+ "type": "uint256"
228
+ },
229
+ {
230
+ "internalType": "uint256",
231
+ "name": "currentTime",
232
+ "type": "uint256"
233
+ }
234
+ ],
235
+ "name": "StalePrice",
236
+ "type": "error"
237
+ },
238
+ {
239
+ "inputs": [
240
+ {
241
+ "internalType": "address",
242
+ "name": "vault",
243
+ "type": "address"
244
+ },
245
+ {
246
+ "internalType": "uint256",
247
+ "name": "rate",
248
+ "type": "uint256"
249
+ }
250
+ ],
251
+ "name": "SuspiciousVaultRate",
252
+ "type": "error"
253
+ },
254
+ {
255
+ "inputs": [
256
+ {
257
+ "internalType": "string",
258
+ "name": "functionName",
259
+ "type": "string"
260
+ },
261
+ {
262
+ "internalType": "string",
263
+ "name": "field",
264
+ "type": "string"
265
+ }
266
+ ],
267
+ "name": "ZeroAddress",
268
+ "type": "error"
269
+ },
270
+ {
271
+ "anonymous": false,
272
+ "inputs": [
273
+ {
274
+ "indexed": true,
275
+ "internalType": "address",
276
+ "name": "token",
277
+ "type": "address"
278
+ },
279
+ {
280
+ "indexed": true,
281
+ "internalType": "address",
282
+ "name": "feed",
283
+ "type": "address"
284
+ }
285
+ ],
286
+ "name": "ChainlinkFeedSet",
287
+ "type": "event"
288
+ },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": true,
294
+ "internalType": "address",
295
+ "name": "vault",
296
+ "type": "address"
297
+ },
298
+ {
299
+ "indexed": true,
300
+ "internalType": "address",
301
+ "name": "underlying",
302
+ "type": "address"
303
+ }
304
+ ],
305
+ "name": "ERC4626Registered",
306
+ "type": "event"
307
+ },
308
+ {
309
+ "anonymous": false,
310
+ "inputs": [
311
+ {
312
+ "indexed": false,
313
+ "internalType": "uint256",
314
+ "name": "newPeriod",
315
+ "type": "uint256"
316
+ }
317
+ ],
318
+ "name": "FallbackStalePeriodUpdated",
319
+ "type": "event"
320
+ },
321
+ {
322
+ "anonymous": false,
323
+ "inputs": [
324
+ {
325
+ "indexed": true,
326
+ "internalType": "address",
327
+ "name": "token",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "uint256",
333
+ "name": "price",
334
+ "type": "uint256"
335
+ },
336
+ {
337
+ "indexed": false,
338
+ "internalType": "uint256",
339
+ "name": "timestamp",
340
+ "type": "uint256"
341
+ }
342
+ ],
343
+ "name": "LastValidPriceUpdated",
344
+ "type": "event"
345
+ },
346
+ {
347
+ "anonymous": false,
348
+ "inputs": [
349
+ {
350
+ "indexed": true,
351
+ "internalType": "address",
352
+ "name": "token",
353
+ "type": "address"
354
+ },
355
+ {
356
+ "indexed": false,
357
+ "internalType": "bool",
358
+ "name": "enabled",
359
+ "type": "bool"
360
+ }
361
+ ],
362
+ "name": "ManualModeEnabled",
363
+ "type": "event"
364
+ },
365
+ {
366
+ "anonymous": false,
367
+ "inputs": [
368
+ {
369
+ "indexed": true,
370
+ "internalType": "address",
371
+ "name": "token",
372
+ "type": "address"
373
+ },
374
+ {
375
+ "indexed": false,
376
+ "internalType": "uint256",
377
+ "name": "price",
378
+ "type": "uint256"
379
+ }
380
+ ],
381
+ "name": "ManualPriceSet",
382
+ "type": "event"
383
+ },
384
+ {
385
+ "anonymous": false,
386
+ "inputs": [
387
+ {
388
+ "indexed": true,
389
+ "internalType": "address",
390
+ "name": "token",
391
+ "type": "address"
392
+ },
393
+ {
394
+ "indexed": false,
395
+ "internalType": "uint256",
396
+ "name": "lastValid",
397
+ "type": "uint256"
398
+ },
399
+ {
400
+ "indexed": false,
401
+ "internalType": "uint256",
402
+ "name": "at",
403
+ "type": "uint256"
404
+ },
405
+ {
406
+ "indexed": false,
407
+ "internalType": "string",
408
+ "name": "reason",
409
+ "type": "string"
410
+ }
411
+ ],
412
+ "name": "OracleFallbackUsed",
413
+ "type": "event"
414
+ },
415
+ {
416
+ "anonymous": false,
417
+ "inputs": [
418
+ {
419
+ "indexed": false,
420
+ "internalType": "enum IUBKOracle.OracleMode",
421
+ "name": "oldMode",
422
+ "type": "uint8"
423
+ },
424
+ {
425
+ "indexed": false,
426
+ "internalType": "enum IUBKOracle.OracleMode",
427
+ "name": "newMode",
428
+ "type": "uint8"
429
+ }
430
+ ],
431
+ "name": "OracleModeChanged",
432
+ "type": "event"
433
+ },
434
+ {
435
+ "anonymous": false,
436
+ "inputs": [
437
+ {
438
+ "indexed": true,
439
+ "internalType": "address",
440
+ "name": "previousOwner",
441
+ "type": "address"
442
+ },
443
+ {
444
+ "indexed": true,
445
+ "internalType": "address",
446
+ "name": "newOwner",
447
+ "type": "address"
448
+ }
449
+ ],
450
+ "name": "OwnershipTransferred",
451
+ "type": "event"
452
+ },
453
+ {
454
+ "anonymous": false,
455
+ "inputs": [
456
+ {
457
+ "indexed": false,
458
+ "internalType": "uint256",
459
+ "name": "newPeriod",
460
+ "type": "uint256"
461
+ }
462
+ ],
463
+ "name": "StalePeriodUpdated",
464
+ "type": "event"
465
+ },
466
+ {
467
+ "anonymous": false,
468
+ "inputs": [
469
+ {
470
+ "indexed": true,
471
+ "internalType": "address",
472
+ "name": "token",
473
+ "type": "address"
474
+ }
475
+ ],
476
+ "name": "TokenSupportAdded",
477
+ "type": "event"
478
+ },
479
+ {
480
+ "anonymous": false,
481
+ "inputs": [
482
+ {
483
+ "indexed": true,
484
+ "internalType": "address",
485
+ "name": "vault",
486
+ "type": "address"
487
+ },
488
+ {
489
+ "indexed": false,
490
+ "internalType": "uint256",
491
+ "name": "minRate",
492
+ "type": "uint256"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "uint256",
497
+ "name": "maxRate",
498
+ "type": "uint256"
499
+ }
500
+ ],
501
+ "name": "VaultRateBoundsSet",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "inputs": [
506
+ {
507
+ "internalType": "address",
508
+ "name": "",
509
+ "type": "address"
510
+ }
511
+ ],
512
+ "name": "chainlinkFeeds",
513
+ "outputs": [
514
+ {
515
+ "internalType": "address",
516
+ "name": "",
517
+ "type": "address"
518
+ }
519
+ ],
520
+ "stateMutability": "view",
521
+ "type": "function"
522
+ },
523
+ {
524
+ "inputs": [
525
+ {
526
+ "internalType": "address",
527
+ "name": "token",
528
+ "type": "address"
529
+ }
530
+ ],
531
+ "name": "disableManualPrice",
532
+ "outputs": [],
533
+ "stateMutability": "nonpayable",
534
+ "type": "function"
535
+ },
536
+ {
537
+ "inputs": [
538
+ {
539
+ "internalType": "address",
540
+ "name": "",
541
+ "type": "address"
542
+ }
543
+ ],
544
+ "name": "erc4626Underlying",
545
+ "outputs": [
546
+ {
547
+ "internalType": "address",
548
+ "name": "",
549
+ "type": "address"
550
+ }
551
+ ],
552
+ "stateMutability": "view",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [],
557
+ "name": "fallbackStalePeriod",
558
+ "outputs": [
559
+ {
560
+ "internalType": "uint256",
561
+ "name": "",
562
+ "type": "uint256"
563
+ }
564
+ ],
565
+ "stateMutability": "view",
566
+ "type": "function"
567
+ },
568
+ {
569
+ "inputs": [
570
+ {
571
+ "internalType": "address",
572
+ "name": "token",
573
+ "type": "address"
574
+ }
575
+ ],
576
+ "name": "fetchAndUpdatePrice",
577
+ "outputs": [
578
+ {
579
+ "internalType": "uint256",
580
+ "name": "",
581
+ "type": "uint256"
582
+ }
583
+ ],
584
+ "stateMutability": "nonpayable",
585
+ "type": "function"
586
+ },
587
+ {
588
+ "inputs": [
589
+ {
590
+ "internalType": "address",
591
+ "name": "token",
592
+ "type": "address"
593
+ },
594
+ {
595
+ "internalType": "uint256",
596
+ "name": "usdAmount",
597
+ "type": "uint256"
598
+ }
599
+ ],
600
+ "name": "fromUSD",
601
+ "outputs": [
602
+ {
603
+ "internalType": "uint256",
604
+ "name": "tokenAmount",
605
+ "type": "uint256"
606
+ }
607
+ ],
608
+ "stateMutability": "view",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [
613
+ {
614
+ "internalType": "address",
615
+ "name": "token",
616
+ "type": "address"
617
+ }
618
+ ],
619
+ "name": "getPrice",
620
+ "outputs": [
621
+ {
622
+ "internalType": "uint256",
623
+ "name": "price",
624
+ "type": "uint256"
625
+ }
626
+ ],
627
+ "stateMutability": "view",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "address",
634
+ "name": "token",
635
+ "type": "address"
636
+ }
637
+ ],
638
+ "name": "getPriceAge",
639
+ "outputs": [
640
+ {
641
+ "internalType": "uint256",
642
+ "name": "age",
643
+ "type": "uint256"
644
+ }
645
+ ],
646
+ "stateMutability": "view",
647
+ "type": "function"
648
+ },
649
+ {
650
+ "inputs": [],
651
+ "name": "getSupportedTokens",
652
+ "outputs": [
653
+ {
654
+ "internalType": "address[]",
655
+ "name": "tokens",
656
+ "type": "address[]"
657
+ }
658
+ ],
659
+ "stateMutability": "view",
660
+ "type": "function"
661
+ },
662
+ {
663
+ "inputs": [
664
+ {
665
+ "internalType": "address",
666
+ "name": "",
667
+ "type": "address"
668
+ }
669
+ ],
670
+ "name": "isManual",
671
+ "outputs": [
672
+ {
673
+ "internalType": "bool",
674
+ "name": "",
675
+ "type": "bool"
676
+ }
677
+ ],
678
+ "stateMutability": "view",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
683
+ {
684
+ "internalType": "address",
685
+ "name": "token",
686
+ "type": "address"
687
+ }
688
+ ],
689
+ "name": "isPriceFresh",
690
+ "outputs": [
691
+ {
692
+ "internalType": "bool",
693
+ "name": "isFresh",
694
+ "type": "bool"
695
+ }
696
+ ],
697
+ "stateMutability": "view",
698
+ "type": "function"
699
+ },
700
+ {
701
+ "inputs": [
702
+ {
703
+ "internalType": "address",
704
+ "name": "",
705
+ "type": "address"
706
+ }
707
+ ],
708
+ "name": "isSupported",
709
+ "outputs": [
710
+ {
711
+ "internalType": "bool",
712
+ "name": "",
713
+ "type": "bool"
714
+ }
715
+ ],
716
+ "stateMutability": "view",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [
721
+ {
722
+ "internalType": "address",
723
+ "name": "",
724
+ "type": "address"
725
+ }
726
+ ],
727
+ "name": "lastValidPrice",
728
+ "outputs": [
729
+ {
730
+ "internalType": "uint256",
731
+ "name": "price",
732
+ "type": "uint256"
733
+ },
734
+ {
735
+ "internalType": "uint256",
736
+ "name": "timestamp",
737
+ "type": "uint256"
738
+ }
739
+ ],
740
+ "stateMutability": "view",
741
+ "type": "function"
742
+ },
743
+ {
744
+ "inputs": [
745
+ {
746
+ "internalType": "address",
747
+ "name": "",
748
+ "type": "address"
749
+ }
750
+ ],
751
+ "name": "manualPrices",
752
+ "outputs": [
753
+ {
754
+ "internalType": "uint256",
755
+ "name": "",
756
+ "type": "uint256"
757
+ }
758
+ ],
759
+ "stateMutability": "view",
760
+ "type": "function"
761
+ },
762
+ {
763
+ "inputs": [],
764
+ "name": "mode",
765
+ "outputs": [
766
+ {
767
+ "internalType": "enum IUBKOracle.OracleMode",
768
+ "name": "",
769
+ "type": "uint8"
770
+ }
771
+ ],
772
+ "stateMutability": "view",
773
+ "type": "function"
774
+ },
775
+ {
776
+ "inputs": [],
777
+ "name": "owner",
778
+ "outputs": [
779
+ {
780
+ "internalType": "address",
781
+ "name": "",
782
+ "type": "address"
783
+ }
784
+ ],
785
+ "stateMutability": "view",
786
+ "type": "function"
787
+ },
788
+ {
789
+ "inputs": [],
790
+ "name": "renounceOwnership",
791
+ "outputs": [],
792
+ "stateMutability": "nonpayable",
793
+ "type": "function"
794
+ },
795
+ {
796
+ "inputs": [
797
+ {
798
+ "internalType": "address",
799
+ "name": "token",
800
+ "type": "address"
801
+ }
802
+ ],
803
+ "name": "resolvePrice",
804
+ "outputs": [
805
+ {
806
+ "internalType": "uint256",
807
+ "name": "price",
808
+ "type": "uint256"
809
+ }
810
+ ],
811
+ "stateMutability": "nonpayable",
812
+ "type": "function"
813
+ },
814
+ {
815
+ "inputs": [
816
+ {
817
+ "internalType": "address",
818
+ "name": "token",
819
+ "type": "address"
820
+ },
821
+ {
822
+ "internalType": "address",
823
+ "name": "feed",
824
+ "type": "address"
825
+ }
826
+ ],
827
+ "name": "setChainlinkFeed",
828
+ "outputs": [],
829
+ "stateMutability": "nonpayable",
830
+ "type": "function"
831
+ },
832
+ {
833
+ "inputs": [
834
+ {
835
+ "internalType": "address",
836
+ "name": "vault",
837
+ "type": "address"
838
+ },
839
+ {
840
+ "internalType": "address",
841
+ "name": "underlying",
842
+ "type": "address"
843
+ }
844
+ ],
845
+ "name": "setERC4626Vault",
846
+ "outputs": [],
847
+ "stateMutability": "nonpayable",
848
+ "type": "function"
849
+ },
850
+ {
851
+ "inputs": [
852
+ {
853
+ "internalType": "uint256",
854
+ "name": "period",
855
+ "type": "uint256"
856
+ }
857
+ ],
858
+ "name": "setFallbackStalePeriod",
859
+ "outputs": [],
860
+ "stateMutability": "nonpayable",
861
+ "type": "function"
862
+ },
863
+ {
864
+ "inputs": [
865
+ {
866
+ "internalType": "address",
867
+ "name": "token",
868
+ "type": "address"
869
+ },
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "price",
873
+ "type": "uint256"
874
+ }
875
+ ],
876
+ "name": "setManualPrice",
877
+ "outputs": [],
878
+ "stateMutability": "nonpayable",
879
+ "type": "function"
880
+ },
881
+ {
882
+ "inputs": [
883
+ {
884
+ "internalType": "enum IUBKOracle.OracleMode",
885
+ "name": "newMode",
886
+ "type": "uint8"
887
+ }
888
+ ],
889
+ "name": "setOracleMode",
890
+ "outputs": [],
891
+ "stateMutability": "nonpayable",
892
+ "type": "function"
893
+ },
894
+ {
895
+ "inputs": [
896
+ {
897
+ "internalType": "uint256",
898
+ "name": "period",
899
+ "type": "uint256"
900
+ }
901
+ ],
902
+ "name": "setStalePeriod",
903
+ "outputs": [],
904
+ "stateMutability": "nonpayable",
905
+ "type": "function"
906
+ },
907
+ {
908
+ "inputs": [
909
+ {
910
+ "internalType": "address",
911
+ "name": "vault",
912
+ "type": "address"
913
+ },
914
+ {
915
+ "internalType": "uint256",
916
+ "name": "minRate",
917
+ "type": "uint256"
918
+ },
919
+ {
920
+ "internalType": "uint256",
921
+ "name": "maxRate",
922
+ "type": "uint256"
923
+ }
924
+ ],
925
+ "name": "setVaultRateBounds",
926
+ "outputs": [],
927
+ "stateMutability": "nonpayable",
928
+ "type": "function"
929
+ },
930
+ {
931
+ "inputs": [],
932
+ "name": "stalePeriod",
933
+ "outputs": [
934
+ {
935
+ "internalType": "uint256",
936
+ "name": "",
937
+ "type": "uint256"
938
+ }
939
+ ],
940
+ "stateMutability": "view",
941
+ "type": "function"
942
+ },
943
+ {
944
+ "inputs": [
945
+ {
946
+ "internalType": "uint256",
947
+ "name": "",
948
+ "type": "uint256"
949
+ }
950
+ ],
951
+ "name": "supportedTokens",
952
+ "outputs": [
953
+ {
954
+ "internalType": "address",
955
+ "name": "",
956
+ "type": "address"
957
+ }
958
+ ],
959
+ "stateMutability": "view",
960
+ "type": "function"
961
+ },
962
+ {
963
+ "inputs": [
964
+ {
965
+ "internalType": "address",
966
+ "name": "token",
967
+ "type": "address"
968
+ },
969
+ {
970
+ "internalType": "uint256",
971
+ "name": "amount",
972
+ "type": "uint256"
973
+ }
974
+ ],
975
+ "name": "toUSD",
976
+ "outputs": [
977
+ {
978
+ "internalType": "uint256",
979
+ "name": "usdValue",
980
+ "type": "uint256"
981
+ }
982
+ ],
983
+ "stateMutability": "view",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "internalType": "address",
990
+ "name": "newOwner",
991
+ "type": "address"
992
+ }
993
+ ],
994
+ "name": "transferOwnership",
995
+ "outputs": [],
996
+ "stateMutability": "nonpayable",
997
+ "type": "function"
998
+ },
999
+ {
1000
+ "inputs": [
1001
+ {
1002
+ "internalType": "address",
1003
+ "name": "",
1004
+ "type": "address"
1005
+ }
1006
+ ],
1007
+ "name": "vaultRateBounds",
1008
+ "outputs": [
1009
+ {
1010
+ "internalType": "uint256",
1011
+ "name": "minRate",
1012
+ "type": "uint256"
1013
+ },
1014
+ {
1015
+ "internalType": "uint256",
1016
+ "name": "maxRate",
1017
+ "type": "uint256"
1018
+ }
1019
+ ],
1020
+ "stateMutability": "view",
1021
+ "type": "function"
1022
+ }
1023
+ ],
1024
+ "bytecode": "0x6080604052610e10600755610e1060026200001b919062000158565b6008556009805460ff191690553480156200003557600080fd5b506040516200251c3803806200251c833981016040819052620000589162000184565b806001600160a01b0381166200008957604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000948162000108565b506001600160a01b0381166200010157604080516374b58fcf60e01b81526004810191909152601260448201527127b930b1b6329d31b7b739ba393ab1ba37b960711b606482015260806024820152600560848201526437bbb732b960d91b60a482015260c40162000080565b50620001b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80820281158282048414176200017e57634e487b7160e01b600052601160045260246000fd5b92915050565b6000602082840312156200019757600080fd5b81516001600160a01b0381168114620001af57600080fd5b9392505050565b61235680620001c66000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612010565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a76400008761202d565b610ac6919061205a565b9050670de0b6b3a7640000610adc84600a612160565b610ae6908361202d565b610af0919061205a565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601960448201527f4f7261636c653a7365745661756c7452617465426f756e64730000000000000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce90612187565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df0919061202d565b610dfa919061205a565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121c5565b8451610e25919061202d565b610e2f919061205a565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612160565b61103c670de0b6b3a76400008661202d565b611046919061205a565b905060006110538661140f565b9050670de0b6b3a7640000610ae6828461202d565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121d8565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061221e565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612264565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff919061229c565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122be565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612160565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122d7565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612160565b611830670de0b6b3a76400008461202d565b61183a919061205a565b9050600061184986600a612160565b61185b670de0b6b3a76400008661202d565b611865919061205a565b905060008161187c670de0b6b3a76400008561202d565b611886919061205a565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a7640000611957868361202d565b611961919061205a565b9b505050505050505050505050600a805490600061197e836122f0565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac3856012612307565b611ace90600a612160565b6001611c16565b9050611b00565b611afd826001611aed601287612307565b611af890600a612160565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c40612044565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601760408201527f4f7261636c653a736574436861696e6c696e6b46656564000000000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601660408201527513dc9858db194e9cd95d115490cd0d8c8d95985d5b1d60521b606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202257600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120b757816000190482111561209d5761209d611e94565b808516156120aa57918102915b93841c9390800290612081565b509250929050565b6000826120ce5750600161059e565b816120db5750600061059e565b81600181146120f157600281146120fb57612117565b600191505061059e565b60ff84111561210c5761210c611e94565b50506001821b61059e565b5060208310610133831016604e8410600b841016171561213a575081810a61059e565b612144838361207c565b806000190482111561215857612158611e94565b029392505050565b600061052060ff8416836120bf565b60058152643a37b5b2b760d91b602082015260400190565b6040815260156040820152744f7261636c653a7365744d616e75616c507269636560581b606082015260806020820152600061059e6080830161216f565b8082018082111561059e5761059e611e94565b60408152601960408201527f4f7261636c653a64697361626c654d616e75616c507269636500000000000000606082015260806020820152600061059e6080830161216f565b60408152601a60408201527f4f7261636c653a6665746368416e645570646174655072696365000000000000606082015260806020820152600061059e6080830161216f565b60408152600f60408201526e4f7261636c653a676574507269636560881b606082015260806020820152600061059e6080830161216f565b6000602082840312156122ae57600080fd5b8151801515811461052057600080fd5b6000600182016122d0576122d0611e94565b5060010190565b6000602082840312156122e957600080fd5b5051919050565b6000816122ff576122ff611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea26469706673582212206120fb84dbbd772d65ac8937c095ed59c532241376576938c2465c6ea467bba064736f6c63430008150033",
1025
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612010565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a76400008761202d565b610ac6919061205a565b9050670de0b6b3a7640000610adc84600a612160565b610ae6908361202d565b610af0919061205a565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601960448201527f4f7261636c653a7365745661756c7452617465426f756e64730000000000000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce90612187565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df0919061202d565b610dfa919061205a565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121c5565b8451610e25919061202d565b610e2f919061205a565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612160565b61103c670de0b6b3a76400008661202d565b611046919061205a565b905060006110538661140f565b9050670de0b6b3a7640000610ae6828461202d565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121d8565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061221e565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612264565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff919061229c565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122be565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612160565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122d7565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612160565b611830670de0b6b3a76400008461202d565b61183a919061205a565b9050600061184986600a612160565b61185b670de0b6b3a76400008661202d565b611865919061205a565b905060008161187c670de0b6b3a76400008561202d565b611886919061205a565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a7640000611957868361202d565b611961919061205a565b9b505050505050505050505050600a805490600061197e836122f0565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac3856012612307565b611ace90600a612160565b6001611c16565b9050611b00565b611afd826001611aed601287612307565b611af890600a612160565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c40612044565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601760408201527f4f7261636c653a736574436861696e6c696e6b46656564000000000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601660408201527513dc9858db194e9cd95d115490cd0d8c8d95985d5b1d60521b606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202257600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120b757816000190482111561209d5761209d611e94565b808516156120aa57918102915b93841c9390800290612081565b509250929050565b6000826120ce5750600161059e565b816120db5750600061059e565b81600181146120f157600281146120fb57612117565b600191505061059e565b60ff84111561210c5761210c611e94565b50506001821b61059e565b5060208310610133831016604e8410600b841016171561213a575081810a61059e565b612144838361207c565b806000190482111561215857612158611e94565b029392505050565b600061052060ff8416836120bf565b60058152643a37b5b2b760d91b602082015260400190565b6040815260156040820152744f7261636c653a7365744d616e75616c507269636560581b606082015260806020820152600061059e6080830161216f565b8082018082111561059e5761059e611e94565b60408152601960408201527f4f7261636c653a64697361626c654d616e75616c507269636500000000000000606082015260806020820152600061059e6080830161216f565b60408152601a60408201527f4f7261636c653a6665746368416e645570646174655072696365000000000000606082015260806020820152600061059e6080830161216f565b60408152600f60408201526e4f7261636c653a676574507269636560881b606082015260806020820152600061059e6080830161216f565b6000602082840312156122ae57600080fd5b8151801515811461052057600080fd5b6000600182016122d0576122d0611e94565b5060010190565b6000602082840312156122e957600080fd5b5051919050565b6000816122ff576122ff611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea26469706673582212206120fb84dbbd772d65ac8937c095ed59c532241376576938c2465c6ea467bba064736f6c63430008150033",
1026
+ "linkReferences": {},
1027
+ "deployedLinkReferences": {}
1028
+ }