@bigmaxwatermelon/sdk 0.4.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.
package/dist/index.js ADDED
@@ -0,0 +1,4802 @@
1
+ // src/sdk/rpc/wallet.ts
2
+ import { ethers } from "ethers";
3
+ var ReadOnlyWallet = class {
4
+ mode = "readonly";
5
+ provider;
6
+ signer = null;
7
+ constructor(rpcUrl) {
8
+ this.provider = new ethers.JsonRpcProvider(rpcUrl);
9
+ }
10
+ getAddress() {
11
+ return Promise.resolve(null);
12
+ }
13
+ isConnected() {
14
+ return false;
15
+ }
16
+ };
17
+ var PrivateKeyWallet = class {
18
+ mode = "privatekey";
19
+ provider;
20
+ signer;
21
+ constructor(rpcUrl, privateKey) {
22
+ this.provider = new ethers.JsonRpcProvider(rpcUrl);
23
+ this.signer = new ethers.Wallet(privateKey, this.provider);
24
+ }
25
+ async getAddress() {
26
+ return this.signer.getAddress();
27
+ }
28
+ isConnected() {
29
+ return true;
30
+ }
31
+ };
32
+ function createWallet(rpcUrl, privateKey) {
33
+ if (privateKey) return new PrivateKeyWallet(rpcUrl, privateKey);
34
+ return new ReadOnlyWallet(rpcUrl);
35
+ }
36
+
37
+ // src/sdk/rpc/contracts.ts
38
+ import { Contract } from "ethers";
39
+
40
+ // src/abis/IsometryPlatform.json
41
+ var IsometryPlatform_default = {
42
+ _format: "hh-sol-artifact-1",
43
+ contractName: "IsometryPlatform",
44
+ sourceName: "contracts/platform/IsometryPlatform.sol",
45
+ abi: [
46
+ {
47
+ inputs: [],
48
+ stateMutability: "nonpayable",
49
+ type: "constructor"
50
+ },
51
+ {
52
+ inputs: [],
53
+ name: "AccessControlBadConfirmation",
54
+ type: "error"
55
+ },
56
+ {
57
+ inputs: [
58
+ {
59
+ internalType: "address",
60
+ name: "account",
61
+ type: "address"
62
+ },
63
+ {
64
+ internalType: "bytes32",
65
+ name: "neededRole",
66
+ type: "bytes32"
67
+ }
68
+ ],
69
+ name: "AccessControlUnauthorizedAccount",
70
+ type: "error"
71
+ },
72
+ {
73
+ inputs: [
74
+ {
75
+ internalType: "address",
76
+ name: "target",
77
+ type: "address"
78
+ }
79
+ ],
80
+ name: "AddressEmptyCode",
81
+ type: "error"
82
+ },
83
+ {
84
+ inputs: [
85
+ {
86
+ internalType: "address",
87
+ name: "implementation",
88
+ type: "address"
89
+ }
90
+ ],
91
+ name: "ERC1967InvalidImplementation",
92
+ type: "error"
93
+ },
94
+ {
95
+ inputs: [],
96
+ name: "ERC1967NonPayable",
97
+ type: "error"
98
+ },
99
+ {
100
+ inputs: [],
101
+ name: "EnforcedPause",
102
+ type: "error"
103
+ },
104
+ {
105
+ inputs: [],
106
+ name: "ExpectedPause",
107
+ type: "error"
108
+ },
109
+ {
110
+ inputs: [],
111
+ name: "FailedCall",
112
+ type: "error"
113
+ },
114
+ {
115
+ inputs: [],
116
+ name: "InvalidInitialization",
117
+ type: "error"
118
+ },
119
+ {
120
+ inputs: [],
121
+ name: "NotInitializing",
122
+ type: "error"
123
+ },
124
+ {
125
+ inputs: [],
126
+ name: "UUPSUnauthorizedCallContext",
127
+ type: "error"
128
+ },
129
+ {
130
+ inputs: [
131
+ {
132
+ internalType: "bytes32",
133
+ name: "slot",
134
+ type: "bytes32"
135
+ }
136
+ ],
137
+ name: "UUPSUnsupportedProxiableUUID",
138
+ type: "error"
139
+ },
140
+ {
141
+ anonymous: false,
142
+ inputs: [
143
+ {
144
+ indexed: true,
145
+ internalType: "address",
146
+ name: "operator",
147
+ type: "address"
148
+ },
149
+ {
150
+ indexed: true,
151
+ internalType: "address",
152
+ name: "account",
153
+ type: "address"
154
+ },
155
+ {
156
+ indexed: false,
157
+ internalType: "string",
158
+ name: "memo",
159
+ type: "string"
160
+ }
161
+ ],
162
+ name: "AccessUserAdded",
163
+ type: "event"
164
+ },
165
+ {
166
+ anonymous: false,
167
+ inputs: [
168
+ {
169
+ indexed: true,
170
+ internalType: "address",
171
+ name: "operator",
172
+ type: "address"
173
+ },
174
+ {
175
+ indexed: true,
176
+ internalType: "address",
177
+ name: "account",
178
+ type: "address"
179
+ },
180
+ {
181
+ indexed: false,
182
+ internalType: "string",
183
+ name: "memo",
184
+ type: "string"
185
+ }
186
+ ],
187
+ name: "AccessUserRemoved",
188
+ type: "event"
189
+ },
190
+ {
191
+ anonymous: false,
192
+ inputs: [
193
+ {
194
+ indexed: true,
195
+ internalType: "address",
196
+ name: "operator",
197
+ type: "address"
198
+ },
199
+ {
200
+ indexed: true,
201
+ internalType: "address",
202
+ name: "account",
203
+ type: "address"
204
+ },
205
+ {
206
+ indexed: false,
207
+ internalType: "string",
208
+ name: "memo",
209
+ type: "string"
210
+ }
211
+ ],
212
+ name: "ApprovedIssuerAdded",
213
+ type: "event"
214
+ },
215
+ {
216
+ anonymous: false,
217
+ inputs: [
218
+ {
219
+ indexed: true,
220
+ internalType: "address",
221
+ name: "operator",
222
+ type: "address"
223
+ },
224
+ {
225
+ indexed: true,
226
+ internalType: "address",
227
+ name: "account",
228
+ type: "address"
229
+ },
230
+ {
231
+ indexed: false,
232
+ internalType: "string",
233
+ name: "memo",
234
+ type: "string"
235
+ }
236
+ ],
237
+ name: "ApprovedIssuerRemoved",
238
+ type: "event"
239
+ },
240
+ {
241
+ anonymous: false,
242
+ inputs: [
243
+ {
244
+ indexed: true,
245
+ internalType: "address",
246
+ name: "operator",
247
+ type: "address"
248
+ },
249
+ {
250
+ indexed: true,
251
+ internalType: "address",
252
+ name: "oldFactory",
253
+ type: "address"
254
+ },
255
+ {
256
+ indexed: true,
257
+ internalType: "address",
258
+ name: "newFactory",
259
+ type: "address"
260
+ }
261
+ ],
262
+ name: "FactorySet",
263
+ type: "event"
264
+ },
265
+ {
266
+ anonymous: false,
267
+ inputs: [
268
+ {
269
+ indexed: false,
270
+ internalType: "uint64",
271
+ name: "version",
272
+ type: "uint64"
273
+ }
274
+ ],
275
+ name: "Initialized",
276
+ type: "event"
277
+ },
278
+ {
279
+ anonymous: false,
280
+ inputs: [
281
+ {
282
+ indexed: false,
283
+ internalType: "address",
284
+ name: "account",
285
+ type: "address"
286
+ }
287
+ ],
288
+ name: "Paused",
289
+ type: "event"
290
+ },
291
+ {
292
+ anonymous: false,
293
+ inputs: [
294
+ {
295
+ indexed: true,
296
+ internalType: "address",
297
+ name: "operator",
298
+ type: "address"
299
+ },
300
+ {
301
+ indexed: true,
302
+ internalType: "address",
303
+ name: "account",
304
+ type: "address"
305
+ },
306
+ {
307
+ indexed: false,
308
+ internalType: "string",
309
+ name: "memo",
310
+ type: "string"
311
+ }
312
+ ],
313
+ name: "PlatformAdminAdded",
314
+ type: "event"
315
+ },
316
+ {
317
+ anonymous: false,
318
+ inputs: [
319
+ {
320
+ indexed: true,
321
+ internalType: "address",
322
+ name: "operator",
323
+ type: "address"
324
+ },
325
+ {
326
+ indexed: true,
327
+ internalType: "address",
328
+ name: "account",
329
+ type: "address"
330
+ },
331
+ {
332
+ indexed: false,
333
+ internalType: "string",
334
+ name: "memo",
335
+ type: "string"
336
+ }
337
+ ],
338
+ name: "PlatformAdminRemoved",
339
+ type: "event"
340
+ },
341
+ {
342
+ anonymous: false,
343
+ inputs: [
344
+ {
345
+ indexed: true,
346
+ internalType: "address",
347
+ name: "account",
348
+ type: "address"
349
+ },
350
+ {
351
+ indexed: false,
352
+ internalType: "string",
353
+ name: "memo",
354
+ type: "string"
355
+ }
356
+ ],
357
+ name: "PlatformPaused",
358
+ type: "event"
359
+ },
360
+ {
361
+ anonymous: false,
362
+ inputs: [
363
+ {
364
+ indexed: true,
365
+ internalType: "address",
366
+ name: "account",
367
+ type: "address"
368
+ },
369
+ {
370
+ indexed: false,
371
+ internalType: "string",
372
+ name: "memo",
373
+ type: "string"
374
+ }
375
+ ],
376
+ name: "PlatformUnpaused",
377
+ type: "event"
378
+ },
379
+ {
380
+ anonymous: false,
381
+ inputs: [
382
+ {
383
+ indexed: true,
384
+ internalType: "bytes32",
385
+ name: "role",
386
+ type: "bytes32"
387
+ },
388
+ {
389
+ indexed: true,
390
+ internalType: "bytes32",
391
+ name: "previousAdminRole",
392
+ type: "bytes32"
393
+ },
394
+ {
395
+ indexed: true,
396
+ internalType: "bytes32",
397
+ name: "newAdminRole",
398
+ type: "bytes32"
399
+ }
400
+ ],
401
+ name: "RoleAdminChanged",
402
+ type: "event"
403
+ },
404
+ {
405
+ anonymous: false,
406
+ inputs: [
407
+ {
408
+ indexed: true,
409
+ internalType: "bytes32",
410
+ name: "role",
411
+ type: "bytes32"
412
+ },
413
+ {
414
+ indexed: true,
415
+ internalType: "address",
416
+ name: "account",
417
+ type: "address"
418
+ },
419
+ {
420
+ indexed: true,
421
+ internalType: "address",
422
+ name: "sender",
423
+ type: "address"
424
+ }
425
+ ],
426
+ name: "RoleGranted",
427
+ type: "event"
428
+ },
429
+ {
430
+ anonymous: false,
431
+ inputs: [
432
+ {
433
+ indexed: true,
434
+ internalType: "bytes32",
435
+ name: "role",
436
+ type: "bytes32"
437
+ },
438
+ {
439
+ indexed: true,
440
+ internalType: "address",
441
+ name: "account",
442
+ type: "address"
443
+ },
444
+ {
445
+ indexed: true,
446
+ internalType: "address",
447
+ name: "sender",
448
+ type: "address"
449
+ }
450
+ ],
451
+ name: "RoleRevoked",
452
+ type: "event"
453
+ },
454
+ {
455
+ anonymous: false,
456
+ inputs: [
457
+ {
458
+ indexed: true,
459
+ internalType: "address",
460
+ name: "operator",
461
+ type: "address"
462
+ },
463
+ {
464
+ indexed: true,
465
+ internalType: "address",
466
+ name: "token",
467
+ type: "address"
468
+ },
469
+ {
470
+ indexed: false,
471
+ internalType: "string",
472
+ name: "name",
473
+ type: "string"
474
+ },
475
+ {
476
+ indexed: false,
477
+ internalType: "string",
478
+ name: "symbol",
479
+ type: "string"
480
+ },
481
+ {
482
+ indexed: false,
483
+ internalType: "string",
484
+ name: "memo",
485
+ type: "string"
486
+ }
487
+ ],
488
+ name: "TokenRegistered",
489
+ type: "event"
490
+ },
491
+ {
492
+ anonymous: false,
493
+ inputs: [
494
+ {
495
+ indexed: false,
496
+ internalType: "address",
497
+ name: "account",
498
+ type: "address"
499
+ }
500
+ ],
501
+ name: "Unpaused",
502
+ type: "event"
503
+ },
504
+ {
505
+ anonymous: false,
506
+ inputs: [
507
+ {
508
+ indexed: true,
509
+ internalType: "address",
510
+ name: "implementation",
511
+ type: "address"
512
+ }
513
+ ],
514
+ name: "Upgraded",
515
+ type: "event"
516
+ },
517
+ {
518
+ inputs: [],
519
+ name: "ACCESS_USER_ROLE",
520
+ outputs: [
521
+ {
522
+ internalType: "bytes32",
523
+ name: "",
524
+ type: "bytes32"
525
+ }
526
+ ],
527
+ stateMutability: "view",
528
+ type: "function"
529
+ },
530
+ {
531
+ inputs: [],
532
+ name: "APPROVED_ISSUER_ROLE",
533
+ outputs: [
534
+ {
535
+ internalType: "bytes32",
536
+ name: "",
537
+ type: "bytes32"
538
+ }
539
+ ],
540
+ stateMutability: "view",
541
+ type: "function"
542
+ },
543
+ {
544
+ inputs: [],
545
+ name: "DEFAULT_ADMIN_ROLE",
546
+ outputs: [
547
+ {
548
+ internalType: "bytes32",
549
+ name: "",
550
+ type: "bytes32"
551
+ }
552
+ ],
553
+ stateMutability: "view",
554
+ type: "function"
555
+ },
556
+ {
557
+ inputs: [],
558
+ name: "PLATFORM_ADMIN_ROLE",
559
+ outputs: [
560
+ {
561
+ internalType: "bytes32",
562
+ name: "",
563
+ type: "bytes32"
564
+ }
565
+ ],
566
+ stateMutability: "view",
567
+ type: "function"
568
+ },
569
+ {
570
+ inputs: [],
571
+ name: "UPGRADE_INTERFACE_VERSION",
572
+ outputs: [
573
+ {
574
+ internalType: "string",
575
+ name: "",
576
+ type: "string"
577
+ }
578
+ ],
579
+ stateMutability: "view",
580
+ type: "function"
581
+ },
582
+ {
583
+ inputs: [
584
+ {
585
+ internalType: "uint256",
586
+ name: "",
587
+ type: "uint256"
588
+ }
589
+ ],
590
+ name: "accessUserList",
591
+ outputs: [
592
+ {
593
+ internalType: "address",
594
+ name: "",
595
+ type: "address"
596
+ }
597
+ ],
598
+ stateMutability: "view",
599
+ type: "function"
600
+ },
601
+ {
602
+ inputs: [
603
+ {
604
+ internalType: "address",
605
+ name: "account",
606
+ type: "address"
607
+ },
608
+ {
609
+ internalType: "string",
610
+ name: "memo",
611
+ type: "string"
612
+ }
613
+ ],
614
+ name: "addAccessUser",
615
+ outputs: [],
616
+ stateMutability: "nonpayable",
617
+ type: "function"
618
+ },
619
+ {
620
+ inputs: [
621
+ {
622
+ internalType: "address",
623
+ name: "account",
624
+ type: "address"
625
+ },
626
+ {
627
+ internalType: "string",
628
+ name: "memo",
629
+ type: "string"
630
+ }
631
+ ],
632
+ name: "addApprovedIssuer",
633
+ outputs: [],
634
+ stateMutability: "nonpayable",
635
+ type: "function"
636
+ },
637
+ {
638
+ inputs: [
639
+ {
640
+ internalType: "address",
641
+ name: "account",
642
+ type: "address"
643
+ },
644
+ {
645
+ internalType: "string",
646
+ name: "memo",
647
+ type: "string"
648
+ }
649
+ ],
650
+ name: "addPlatformAdmin",
651
+ outputs: [],
652
+ stateMutability: "nonpayable",
653
+ type: "function"
654
+ },
655
+ {
656
+ inputs: [
657
+ {
658
+ internalType: "uint256",
659
+ name: "",
660
+ type: "uint256"
661
+ }
662
+ ],
663
+ name: "approvedIssuerList",
664
+ outputs: [
665
+ {
666
+ internalType: "address",
667
+ name: "",
668
+ type: "address"
669
+ }
670
+ ],
671
+ stateMutability: "view",
672
+ type: "function"
673
+ },
674
+ {
675
+ inputs: [],
676
+ name: "factory",
677
+ outputs: [
678
+ {
679
+ internalType: "address",
680
+ name: "",
681
+ type: "address"
682
+ }
683
+ ],
684
+ stateMutability: "view",
685
+ type: "function"
686
+ },
687
+ {
688
+ inputs: [
689
+ {
690
+ internalType: "uint256",
691
+ name: "index",
692
+ type: "uint256"
693
+ }
694
+ ],
695
+ name: "getAccessUser",
696
+ outputs: [
697
+ {
698
+ internalType: "address",
699
+ name: "",
700
+ type: "address"
701
+ }
702
+ ],
703
+ stateMutability: "view",
704
+ type: "function"
705
+ },
706
+ {
707
+ inputs: [],
708
+ name: "getAccessUserCount",
709
+ outputs: [
710
+ {
711
+ internalType: "uint256",
712
+ name: "",
713
+ type: "uint256"
714
+ }
715
+ ],
716
+ stateMutability: "view",
717
+ type: "function"
718
+ },
719
+ {
720
+ inputs: [],
721
+ name: "getAllAccessUsers",
722
+ outputs: [
723
+ {
724
+ internalType: "address[]",
725
+ name: "",
726
+ type: "address[]"
727
+ }
728
+ ],
729
+ stateMutability: "view",
730
+ type: "function"
731
+ },
732
+ {
733
+ inputs: [],
734
+ name: "getAllApprovedIssuers",
735
+ outputs: [
736
+ {
737
+ internalType: "address[]",
738
+ name: "",
739
+ type: "address[]"
740
+ }
741
+ ],
742
+ stateMutability: "view",
743
+ type: "function"
744
+ },
745
+ {
746
+ inputs: [],
747
+ name: "getAllPlatformAdmins",
748
+ outputs: [
749
+ {
750
+ internalType: "address[]",
751
+ name: "",
752
+ type: "address[]"
753
+ }
754
+ ],
755
+ stateMutability: "view",
756
+ type: "function"
757
+ },
758
+ {
759
+ inputs: [],
760
+ name: "getAllTokens",
761
+ outputs: [
762
+ {
763
+ internalType: "address[]",
764
+ name: "",
765
+ type: "address[]"
766
+ }
767
+ ],
768
+ stateMutability: "view",
769
+ type: "function"
770
+ },
771
+ {
772
+ inputs: [
773
+ {
774
+ internalType: "uint256",
775
+ name: "index",
776
+ type: "uint256"
777
+ }
778
+ ],
779
+ name: "getApprovedIssuer",
780
+ outputs: [
781
+ {
782
+ internalType: "address",
783
+ name: "",
784
+ type: "address"
785
+ }
786
+ ],
787
+ stateMutability: "view",
788
+ type: "function"
789
+ },
790
+ {
791
+ inputs: [],
792
+ name: "getApprovedIssuerCount",
793
+ outputs: [
794
+ {
795
+ internalType: "uint256",
796
+ name: "",
797
+ type: "uint256"
798
+ }
799
+ ],
800
+ stateMutability: "view",
801
+ type: "function"
802
+ },
803
+ {
804
+ inputs: [
805
+ {
806
+ internalType: "uint256",
807
+ name: "index",
808
+ type: "uint256"
809
+ }
810
+ ],
811
+ name: "getPlatformAdmin",
812
+ outputs: [
813
+ {
814
+ internalType: "address",
815
+ name: "",
816
+ type: "address"
817
+ }
818
+ ],
819
+ stateMutability: "view",
820
+ type: "function"
821
+ },
822
+ {
823
+ inputs: [],
824
+ name: "getPlatformAdminCount",
825
+ outputs: [
826
+ {
827
+ internalType: "uint256",
828
+ name: "",
829
+ type: "uint256"
830
+ }
831
+ ],
832
+ stateMutability: "view",
833
+ type: "function"
834
+ },
835
+ {
836
+ inputs: [
837
+ {
838
+ internalType: "bytes32",
839
+ name: "role",
840
+ type: "bytes32"
841
+ }
842
+ ],
843
+ name: "getRoleAdmin",
844
+ outputs: [
845
+ {
846
+ internalType: "bytes32",
847
+ name: "",
848
+ type: "bytes32"
849
+ }
850
+ ],
851
+ stateMutability: "view",
852
+ type: "function"
853
+ },
854
+ {
855
+ inputs: [],
856
+ name: "getTokenCount",
857
+ outputs: [
858
+ {
859
+ internalType: "uint256",
860
+ name: "",
861
+ type: "uint256"
862
+ }
863
+ ],
864
+ stateMutability: "view",
865
+ type: "function"
866
+ },
867
+ {
868
+ inputs: [
869
+ {
870
+ internalType: "bytes32",
871
+ name: "role",
872
+ type: "bytes32"
873
+ },
874
+ {
875
+ internalType: "address",
876
+ name: "account",
877
+ type: "address"
878
+ }
879
+ ],
880
+ name: "grantRole",
881
+ outputs: [],
882
+ stateMutability: "nonpayable",
883
+ type: "function"
884
+ },
885
+ {
886
+ inputs: [
887
+ {
888
+ internalType: "bytes32",
889
+ name: "role",
890
+ type: "bytes32"
891
+ },
892
+ {
893
+ internalType: "address",
894
+ name: "account",
895
+ type: "address"
896
+ }
897
+ ],
898
+ name: "hasRole",
899
+ outputs: [
900
+ {
901
+ internalType: "bool",
902
+ name: "",
903
+ type: "bool"
904
+ }
905
+ ],
906
+ stateMutability: "view",
907
+ type: "function"
908
+ },
909
+ {
910
+ inputs: [],
911
+ name: "initialize",
912
+ outputs: [],
913
+ stateMutability: "nonpayable",
914
+ type: "function"
915
+ },
916
+ {
917
+ inputs: [
918
+ {
919
+ internalType: "address",
920
+ name: "account",
921
+ type: "address"
922
+ }
923
+ ],
924
+ name: "isAccessUser",
925
+ outputs: [
926
+ {
927
+ internalType: "bool",
928
+ name: "",
929
+ type: "bool"
930
+ }
931
+ ],
932
+ stateMutability: "view",
933
+ type: "function"
934
+ },
935
+ {
936
+ inputs: [
937
+ {
938
+ internalType: "address",
939
+ name: "account",
940
+ type: "address"
941
+ }
942
+ ],
943
+ name: "isApprovedIssuer",
944
+ outputs: [
945
+ {
946
+ internalType: "bool",
947
+ name: "",
948
+ type: "bool"
949
+ }
950
+ ],
951
+ stateMutability: "view",
952
+ type: "function"
953
+ },
954
+ {
955
+ inputs: [
956
+ {
957
+ internalType: "address",
958
+ name: "account",
959
+ type: "address"
960
+ }
961
+ ],
962
+ name: "isOwner",
963
+ outputs: [
964
+ {
965
+ internalType: "bool",
966
+ name: "",
967
+ type: "bool"
968
+ }
969
+ ],
970
+ stateMutability: "view",
971
+ type: "function"
972
+ },
973
+ {
974
+ inputs: [
975
+ {
976
+ internalType: "address",
977
+ name: "account",
978
+ type: "address"
979
+ }
980
+ ],
981
+ name: "isPlatformAdmin",
982
+ outputs: [
983
+ {
984
+ internalType: "bool",
985
+ name: "",
986
+ type: "bool"
987
+ }
988
+ ],
989
+ stateMutability: "view",
990
+ type: "function"
991
+ },
992
+ {
993
+ inputs: [
994
+ {
995
+ internalType: "string",
996
+ name: "memo",
997
+ type: "string"
998
+ }
999
+ ],
1000
+ name: "pause",
1001
+ outputs: [],
1002
+ stateMutability: "nonpayable",
1003
+ type: "function"
1004
+ },
1005
+ {
1006
+ inputs: [],
1007
+ name: "paused",
1008
+ outputs: [
1009
+ {
1010
+ internalType: "bool",
1011
+ name: "",
1012
+ type: "bool"
1013
+ }
1014
+ ],
1015
+ stateMutability: "view",
1016
+ type: "function"
1017
+ },
1018
+ {
1019
+ inputs: [
1020
+ {
1021
+ internalType: "uint256",
1022
+ name: "",
1023
+ type: "uint256"
1024
+ }
1025
+ ],
1026
+ name: "platformAdminList",
1027
+ outputs: [
1028
+ {
1029
+ internalType: "address",
1030
+ name: "",
1031
+ type: "address"
1032
+ }
1033
+ ],
1034
+ stateMutability: "view",
1035
+ type: "function"
1036
+ },
1037
+ {
1038
+ inputs: [],
1039
+ name: "proxiableUUID",
1040
+ outputs: [
1041
+ {
1042
+ internalType: "bytes32",
1043
+ name: "",
1044
+ type: "bytes32"
1045
+ }
1046
+ ],
1047
+ stateMutability: "view",
1048
+ type: "function"
1049
+ },
1050
+ {
1051
+ inputs: [
1052
+ {
1053
+ internalType: "address",
1054
+ name: "tokenAddress",
1055
+ type: "address"
1056
+ },
1057
+ {
1058
+ internalType: "string",
1059
+ name: "name",
1060
+ type: "string"
1061
+ },
1062
+ {
1063
+ internalType: "string",
1064
+ name: "symbol",
1065
+ type: "string"
1066
+ },
1067
+ {
1068
+ internalType: "string",
1069
+ name: "memo",
1070
+ type: "string"
1071
+ }
1072
+ ],
1073
+ name: "registerToken",
1074
+ outputs: [],
1075
+ stateMutability: "nonpayable",
1076
+ type: "function"
1077
+ },
1078
+ {
1079
+ inputs: [
1080
+ {
1081
+ internalType: "address",
1082
+ name: "",
1083
+ type: "address"
1084
+ },
1085
+ {
1086
+ internalType: "address",
1087
+ name: "tokenAddress",
1088
+ type: "address"
1089
+ },
1090
+ {
1091
+ internalType: "string",
1092
+ name: "name",
1093
+ type: "string"
1094
+ },
1095
+ {
1096
+ internalType: "string",
1097
+ name: "symbol",
1098
+ type: "string"
1099
+ },
1100
+ {
1101
+ internalType: "string",
1102
+ name: "memo",
1103
+ type: "string"
1104
+ }
1105
+ ],
1106
+ name: "registerTokenFor",
1107
+ outputs: [],
1108
+ stateMutability: "nonpayable",
1109
+ type: "function"
1110
+ },
1111
+ {
1112
+ inputs: [
1113
+ {
1114
+ internalType: "address",
1115
+ name: "",
1116
+ type: "address"
1117
+ }
1118
+ ],
1119
+ name: "registeredTokens",
1120
+ outputs: [
1121
+ {
1122
+ internalType: "address",
1123
+ name: "tokenAddress",
1124
+ type: "address"
1125
+ },
1126
+ {
1127
+ internalType: "string",
1128
+ name: "name",
1129
+ type: "string"
1130
+ },
1131
+ {
1132
+ internalType: "string",
1133
+ name: "symbol",
1134
+ type: "string"
1135
+ }
1136
+ ],
1137
+ stateMutability: "view",
1138
+ type: "function"
1139
+ },
1140
+ {
1141
+ inputs: [
1142
+ {
1143
+ internalType: "address",
1144
+ name: "account",
1145
+ type: "address"
1146
+ },
1147
+ {
1148
+ internalType: "string",
1149
+ name: "memo",
1150
+ type: "string"
1151
+ }
1152
+ ],
1153
+ name: "removeAccessUser",
1154
+ outputs: [],
1155
+ stateMutability: "nonpayable",
1156
+ type: "function"
1157
+ },
1158
+ {
1159
+ inputs: [
1160
+ {
1161
+ internalType: "address",
1162
+ name: "account",
1163
+ type: "address"
1164
+ },
1165
+ {
1166
+ internalType: "string",
1167
+ name: "memo",
1168
+ type: "string"
1169
+ }
1170
+ ],
1171
+ name: "removeApprovedIssuer",
1172
+ outputs: [],
1173
+ stateMutability: "nonpayable",
1174
+ type: "function"
1175
+ },
1176
+ {
1177
+ inputs: [
1178
+ {
1179
+ internalType: "address",
1180
+ name: "account",
1181
+ type: "address"
1182
+ },
1183
+ {
1184
+ internalType: "string",
1185
+ name: "memo",
1186
+ type: "string"
1187
+ }
1188
+ ],
1189
+ name: "removePlatformAdmin",
1190
+ outputs: [],
1191
+ stateMutability: "nonpayable",
1192
+ type: "function"
1193
+ },
1194
+ {
1195
+ inputs: [
1196
+ {
1197
+ internalType: "bytes32",
1198
+ name: "role",
1199
+ type: "bytes32"
1200
+ },
1201
+ {
1202
+ internalType: "address",
1203
+ name: "callerConfirmation",
1204
+ type: "address"
1205
+ }
1206
+ ],
1207
+ name: "renounceRole",
1208
+ outputs: [],
1209
+ stateMutability: "nonpayable",
1210
+ type: "function"
1211
+ },
1212
+ {
1213
+ inputs: [
1214
+ {
1215
+ internalType: "bytes32",
1216
+ name: "role",
1217
+ type: "bytes32"
1218
+ },
1219
+ {
1220
+ internalType: "address",
1221
+ name: "account",
1222
+ type: "address"
1223
+ }
1224
+ ],
1225
+ name: "revokeRole",
1226
+ outputs: [],
1227
+ stateMutability: "nonpayable",
1228
+ type: "function"
1229
+ },
1230
+ {
1231
+ inputs: [
1232
+ {
1233
+ internalType: "address",
1234
+ name: "_factory",
1235
+ type: "address"
1236
+ }
1237
+ ],
1238
+ name: "setFactory",
1239
+ outputs: [],
1240
+ stateMutability: "nonpayable",
1241
+ type: "function"
1242
+ },
1243
+ {
1244
+ inputs: [
1245
+ {
1246
+ internalType: "bytes4",
1247
+ name: "interfaceId",
1248
+ type: "bytes4"
1249
+ }
1250
+ ],
1251
+ name: "supportsInterface",
1252
+ outputs: [
1253
+ {
1254
+ internalType: "bool",
1255
+ name: "",
1256
+ type: "bool"
1257
+ }
1258
+ ],
1259
+ stateMutability: "view",
1260
+ type: "function"
1261
+ },
1262
+ {
1263
+ inputs: [
1264
+ {
1265
+ internalType: "uint256",
1266
+ name: "",
1267
+ type: "uint256"
1268
+ }
1269
+ ],
1270
+ name: "tokenList",
1271
+ outputs: [
1272
+ {
1273
+ internalType: "address",
1274
+ name: "",
1275
+ type: "address"
1276
+ }
1277
+ ],
1278
+ stateMutability: "view",
1279
+ type: "function"
1280
+ },
1281
+ {
1282
+ inputs: [
1283
+ {
1284
+ internalType: "string",
1285
+ name: "memo",
1286
+ type: "string"
1287
+ }
1288
+ ],
1289
+ name: "unpause",
1290
+ outputs: [],
1291
+ stateMutability: "nonpayable",
1292
+ type: "function"
1293
+ },
1294
+ {
1295
+ inputs: [
1296
+ {
1297
+ internalType: "address",
1298
+ name: "newImplementation",
1299
+ type: "address"
1300
+ },
1301
+ {
1302
+ internalType: "bytes",
1303
+ name: "data",
1304
+ type: "bytes"
1305
+ }
1306
+ ],
1307
+ name: "upgradeToAndCall",
1308
+ outputs: [],
1309
+ stateMutability: "payable",
1310
+ type: "function"
1311
+ }
1312
+ ],
1313
+ bytecode: "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125ab62000104600039600081816118da015281816119030152611a4701526125ab6000f3fe6080604052600436106102885760003560e01c80638129fc1c1161015a578063a217fddf116100c1578063cf3a18131161007a578063cf3a1813146107a9578063d51eb68e146107c9578063d547741f146107e9578063e79faa5814610809578063eb7d61fe14610829578063f91838541461084957600080fd5b8063a217fddf146106e1578063a75623c5146106f6578063ad3cb1cc14610716578063b018114714610754578063c45a015514610769578063c92ca21f1461078957600080fd5b806397d4eaec1161011357806397d4eaec1461061f57806398cf5ecf1461063f5780639cf9613c1461065f5780639e1138521461067f5780639ead72221461069f5780639f437c9e146106bf57600080fd5b80638129fc1c146105645780638247e0ac1461057957806383aa79d81461058e5780638a143617146105b05780638c0bd916146105d057806391d14854146105ff57600080fd5b806346ee51bb116101fe578063685d34ff116101b7578063685d34ff146104ad5780636a0af06d146104cf5780636da66355146104ef57806378a895671461050f5780637d11d546146105245780637eb74bfc1461054457600080fd5b806346ee51bb146103f35780634f1ef2861461040857806352d1902d1461041b5780635bb47808146104305780635c975abb146104505780636430c3271461047557600080fd5b8063294595d211610250578063294595d2146103545780632a5c792a146103695780632f2ff15d1461037e5780632f54bf6e1461039e57806332889cd3146103be57806336568abe146103d357600080fd5b806301ffc9a71461028d5780630c48da2d146102c257806310ae2f1a146102e457806319a6178314610306578063248a9ca314610326575b600080fd5b34801561029957600080fd5b506102ad6102a8366004611df3565b610869565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102e26102dd366004611ee5565b6108a0565b005b3480156102f057600080fd5b506102f9610938565b6040516102b99190611f7e565b34801561031257600080fd5b506102e2610321366004611fcb565b61099a565b34801561033257600080fd5b50610346610341366004612019565b610a52565b6040519081526020016102b9565b34801561036057600080fd5b50600354610346565b34801561037557600080fd5b506102f9610a74565b34801561038a57600080fd5b506102e2610399366004612032565b610ad4565b3480156103aa57600080fd5b506102ad6103b936600461205e565b610af0565b3480156103ca57600080fd5b506102f9610afc565b3480156103df57600080fd5b506102e26103ee366004612032565b610b5c565b3480156103ff57600080fd5b50600254610346565b6102e2610416366004612079565b610b94565b34801561042757600080fd5b50610346610bb3565b34801561043c57600080fd5b506102e261044b36600461205e565b610bd0565b34801561045c57600080fd5b506000805160206125368339815191525460ff166102ad565b34801561048157600080fd5b50610495610490366004612019565b610c75565b6040516001600160a01b0390911681526020016102b9565b3480156104b957600080fd5b506103466000805160206124f683398151915281565b3480156104db57600080fd5b506102e26104ea366004611fcb565b610c9f565b3480156104fb57600080fd5b506102e261050a3660046120d1565b610d4b565b34801561051b57600080fd5b50600154610346565b34801561053057600080fd5b5061049561053f366004612019565b610da3565b34801561055057600080fd5b506102ad61055f36600461205e565b610df5565b34801561057057600080fd5b506102e2610e0f565b34801561058557600080fd5b50600454610346565b34801561059a57600080fd5b5061034660008051602061255683398151915281565b3480156105bc57600080fd5b506104956105cb366004612019565b610f21565b3480156105dc57600080fd5b506105f06105eb36600461205e565b610f31565b6040516102b99392919061215e565b34801561060b57600080fd5b506102ad61061a366004612032565b61106e565b34801561062b57600080fd5b506102ad61063a36600461205e565b6110a6565b34801561064b57600080fd5b506102e261065a366004611fcb565b6110c0565b34801561066b57600080fd5b506102e261067a366004611fcb565b61116c565b34801561068b57600080fd5b5061049561069a366004612019565b611218565b3480156106ab57600080fd5b506104956106ba366004612019565b611228565b3480156106cb57600080fd5b506103466000805160206124b683398151915281565b3480156106ed57600080fd5b50610346600081565b34801561070257600080fd5b50610495610711366004612019565b611238565b34801561072257600080fd5b50610747604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102b9919061219e565b34801561076057600080fd5b506102f961126f565b34801561077557600080fd5b50600554610495906001600160a01b031681565b34801561079557600080fd5b506102e26107a4366004611fcb565b6112cf565b3480156107b557600080fd5b506104956107c4366004612019565b61134d565b3480156107d557600080fd5b506102e26107e4366004611fcb565b611384565b3480156107f557600080fd5b506102e2610804366004612032565b6113f5565b34801561081557600080fd5b506102e26108243660046120d1565b611411565b34801561083557600080fd5b506102e26108443660046121b1565b61145d565b34801561085557600080fd5b506102ad61086436600461205e565b6114e6565b60006001600160e01b03198216637965db0b60e01b148061089a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6108a8611500565b6005546001600160a01b03163314610926576108d26000805160206124b68339815191523361106e565b806108e357506108e360003361106e565b8061090157506109016000805160206124f68339815191523361106e565b6109265760405162461bcd60e51b815260040161091d9061225b565b60405180910390fd5b61093284848484611533565b50505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561099057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610972575b5050505050905090565b6109a560003361106e565b806109c357506109c36000805160206124f68339815191523361106e565b6109df5760405162461bcd60e51b815260040161091d9061225b565b6109f76000805160206124b6833981519152836116a2565b50610a03600383611728565b816001600160a01b0316336001600160a01b03167f741d4f16d5a79c37b8fd050639cffd4eaf417445424059c69664cbb70d2a5f6c83604051610a46919061219e565b60405180910390a35050565b6000908152600080516020612516833981519152602052604090206001015490565b60606001805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b610add82610a52565b610ae681611827565b6109328383611834565b600061089a818361106e565b60606003805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b6001600160a01b0381163314610b855760405163334bd91960e11b815260040160405180910390fd5b610b8f82826116a2565b505050565b610b9c6118cf565b610ba582611974565b610baf828261197f565b5050565b6000610bbd611a3c565b506000805160206124d683398151915290565b6000610bdb81611827565b6001600160a01b038216610c205760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161091d565b600580546001600160a01b038481166001600160a01b03198316811790935560405191169190829033907fcc847c84c8074a8da04b48d623a4b38e263572c16fa0fc823d79bf7361dee31d90600090a4505050565b60048181548110610c8557600080fd5b6000918252602090912001546001600160a01b0316905081565b610caa60003361106e565b80610cc85750610cc86000805160206124f68339815191523361106e565b610ce45760405162461bcd60e51b815260040161091d9061225b565b610cfc60008051602061255683398151915283611834565b50610d08600483611a85565b816001600160a01b0316336001600160a01b03167fbcc7857902b063c09d0cf80588b949fa234255dfe327b962c5d1dc38fe1aba4083604051610a46919061219e565b6000610d5681611827565b610d5e611b09565b336001600160a01b03167f0633b518f7e228cea84c7b36264537a16387cd16109f97ff871f587d7238481d83604051610d97919061219e565b60405180910390a25050565b6002546000908210610dc75760405162461bcd60e51b815260040161091d90612283565b60028281548110610dda57610dda6122b0565b6000918252602090912001546001600160a01b031692915050565b600061089a6000805160206124b68339815191528361106e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610e9e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ec857845460ff60401b1916600160401b1785555b610ed3600033611834565b508315610f1a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60038181548110610c8557600080fd5b600060208190529081526040902080546001820180546001600160a01b039092169291610f5d906122c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f89906122c6565b8015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b505050505090806002018054610feb906122c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611017906122c6565b80156110645780601f1061103957610100808354040283529160200191611064565b820191906000526020600020905b81548152906001019060200180831161104757829003601f168201915b5050505050905083565b6000918252600080516020612516833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061089a6000805160206125568339815191528361106e565b6110cb60003361106e565b806110e957506110e96000805160206124f68339815191523361106e565b6111055760405162461bcd60e51b815260040161091d9061225b565b61111d600080516020612556833981519152836116a2565b50611129600483611728565b816001600160a01b0316336001600160a01b03167f88d45a6aa07125447b55f107bd5737025ef5e3f116de4950e8e090a1023ff4a483604051610a46919061219e565b61117760003361106e565b8061119557506111956000805160206124f68339815191523361106e565b6111b15760405162461bcd60e51b815260040161091d9061225b565b6111c96000805160206124b683398151915283611834565b506111d5600383611a85565b816001600160a01b0316336001600160a01b03167fb2fc27990e77bd54811bcaa01cd65f1a5cb5af811ef16cad4f7778a4df5126a083604051610a46919061219e565b60028181548110610c8557600080fd5b60018181548110610c8557600080fd5b600454600090821061125c5760405162461bcd60e51b815260040161091d90612283565b60048281548110610dda57610dda6122b0565b60606004805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b60006112da81611827565b6112f26000805160206124f6833981519152846113f5565b6112fd600284611728565b826001600160a01b0316336001600160a01b03167fdedab8f5d11d718dc27471cc695fcea1a096dbaf743fc629e9ce0bb1a39333af84604051611340919061219e565b60405180910390a3505050565b60035460009082106113715760405162461bcd60e51b815260040161091d90612283565b60038281548110610dda57610dda6122b0565b600061138f81611827565b6113a76000805160206124f683398151915284610ad4565b6113b2600284611a85565b826001600160a01b0316336001600160a01b03167f8cc31bbe73dc10848165c847a4c370cd881743121d2eee9836ca4e607ca4819f84604051611340919061219e565b6113fe82610a52565b61140781611827565b61093283836116a2565b600061141c81611827565b611424611b6c565b336001600160a01b03167f02ac1745f320508b54f59ac6b59d2fc262da33b72598237b29a916cfb5fd519383604051610d97919061219e565b611465611500565b6005546001600160a01b031633146114da5761148f6000805160206124b68339815191523361106e565b806114a057506114a060003361106e565b806114be57506114be6000805160206124f68339815191523361106e565b6114da5760405162461bcd60e51b815260040161091d9061225b565b610f1a84848484611533565b600061089a6000805160206124f68339815191528361106e565b6000805160206125368339815191525460ff16156115315760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b03848116600090815260208190526040902054161561159b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20616c726561647920726567697374657265640000000000000000604482015260640161091d565b604080516060810182526001600160a01b038681168083526020808401888152848601889052600092835290829052939020825181546001600160a01b0319169216919091178155915190919060018201906115f79082612350565b506040820151600282019061160c9082612350565b50506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b03871690811790915560405190915033907fec82a4a358c202e0580890ad5ae52df93af69e508cbbd07e2766ab1e2fd4d3df9061169490879087908790612410565b60405180910390a350505050565b60006000805160206125168339815191526116bd848461106e565b1561171e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061089a565b600091505061089a565b60005b8254811015610b8f57816001600160a01b0316838281548110611750576117506122b0565b6000918252602090912001546001600160a01b03160361181f578254839061177a90600190612449565b8154811061178a5761178a6122b0565b9060005260206000200160009054906101000a90046001600160a01b03168382815481106117ba576117ba6122b0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806117f8576117f861246a565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b60010161172b565b6118318133611bb2565b50565b600060008051602061251683398151915261184f848461106e565b61171e576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118853390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061089a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061195657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661194a6000805160206124d6833981519152546001600160a01b031690565b6001600160a01b031614155b156115315760405163703e46dd60e11b815260040160405180910390fd5b6000610baf81611827565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119d9575060408051601f3d908101601f191682019092526119d691810190612480565b60015b611a0157604051634c9c8ce360e01b81526001600160a01b038316600482015260240161091d565b6000805160206124d68339815191528114611a3257604051632a87526960e21b81526004810182905260240161091d565b610b8f8383611beb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115315760405163703e46dd60e11b815260040160405180910390fd5b60005b8254811015611ad457816001600160a01b0316838281548110611aad57611aad6122b0565b6000918252602090912001546001600160a01b031603611acc57505050565b600101611a88565b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055565b611b11611500565b600080516020612536833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b611b74611c41565b600080516020612536833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611b4e565b611bbc828261106e565b610baf5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161091d565b611bf482611c71565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611c3957610b8f8282611cd6565b610baf611d4c565b6000805160206125368339815191525460ff1661153157604051638dfc202b60e01b815260040160405180910390fd5b806001600160a01b03163b600003611ca757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161091d565b6000805160206124d683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611cf39190612499565b600060405180830381855af49150503d8060008114611d2e576040519150601f19603f3d011682016040523d82523d6000602084013e611d33565b606091505b5091509150611d43858383611d6b565b95945050505050565b34156115315760405163b398979f60e01b815260040160405180910390fd5b606082611d8057611d7b82611dca565b611dc3565b8151158015611d9757506001600160a01b0384163b155b15611dc057604051639996b31560e01b81526001600160a01b038516600482015260240161091d565b50805b9392505050565b805115611dda5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215611e0557600080fd5b81356001600160e01b031981168114611dc357600080fd5b80356001600160a01b0381168114611e3457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611e6a57611e6a611e39565b604051601f8501601f19908116603f01168101908282118183101715611e9257611e92611e39565b81604052809350858152868686011115611eab57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611ed657600080fd5b611dc383833560208501611e4f565b60008060008060808587031215611efb57600080fd5b611f0485611e1d565b9350602085013567ffffffffffffffff80821115611f2157600080fd5b611f2d88838901611ec5565b94506040870135915080821115611f4357600080fd5b611f4f88838901611ec5565b93506060870135915080821115611f6557600080fd5b50611f7287828801611ec5565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015611fbf5783516001600160a01b031683529284019291840191600101611f9a565b50909695505050505050565b60008060408385031215611fde57600080fd5b611fe783611e1d565b9150602083013567ffffffffffffffff81111561200357600080fd5b61200f85828601611ec5565b9150509250929050565b60006020828403121561202b57600080fd5b5035919050565b6000806040838503121561204557600080fd5b8235915061205560208401611e1d565b90509250929050565b60006020828403121561207057600080fd5b611dc382611e1d565b6000806040838503121561208c57600080fd5b61209583611e1d565b9150602083013567ffffffffffffffff8111156120b157600080fd5b8301601f810185136120c257600080fd5b61200f85823560208401611e4f565b6000602082840312156120e357600080fd5b813567ffffffffffffffff8111156120fa57600080fd5b61210684828501611ec5565b949350505050565b60005b83811015612129578181015183820152602001612111565b50506000910152565b6000815180845261214a81602086016020860161210e565b601f01601f19169290920160200192915050565b6001600160a01b038416815260606020820181905260009061218290830185612132565b82810360408401526121948185612132565b9695505050505050565b602081526000611dc36020830184612132565b600080600080600060a086880312156121c957600080fd5b6121d286611e1d565b94506121e060208701611e1d565b9350604086013567ffffffffffffffff808211156121fd57600080fd5b61220989838a01611ec5565b9450606088013591508082111561221f57600080fd5b61222b89838a01611ec5565b9350608088013591508082111561224157600080fd5b5061224e88828901611ec5565b9150509295509295909350565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806122da57607f821691505b6020821081036122fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b8f576000816000526020600020601f850160051c810160208610156123295750805b601f850160051c820191505b8181101561234857828155600101612335565b505050505050565b815167ffffffffffffffff81111561236a5761236a611e39565b61237e8161237884546122c6565b84612300565b602080601f8311600181146123b3576000841561239b5750858301515b600019600386901b1c1916600185901b178555612348565b600085815260208120601f198616915b828110156123e2578886015182559484019460019091019084016123c3565b50858210156124005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6060815260006124236060830186612132565b82810360208401526124358186612132565b905082810360408401526121948185612132565b8181038181111561089a57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561249257600080fd5b5051919050565b600082516124ab81846020870161210e565b919091019291505056fe0a865fb3417fc4a7d7373d42317aff592f595a0093d7332ffae098db733cd11b360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5246556c0ab216b5b325ad7c539bfbd1a07c768773cdf810fecd3c3375c2740702dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033000364bafb595aebf30e64edfca374c8e6e68a01fdc0bab55d3d02600374a378cba264697066735822122082858869d5afb1ec8b6456b51167b4198d15ab64193c6f5be2762887c5178a1c64736f6c63430008160033",
1314
+ deployedBytecode: "0x6080604052600436106102885760003560e01c80638129fc1c1161015a578063a217fddf116100c1578063cf3a18131161007a578063cf3a1813146107a9578063d51eb68e146107c9578063d547741f146107e9578063e79faa5814610809578063eb7d61fe14610829578063f91838541461084957600080fd5b8063a217fddf146106e1578063a75623c5146106f6578063ad3cb1cc14610716578063b018114714610754578063c45a015514610769578063c92ca21f1461078957600080fd5b806397d4eaec1161011357806397d4eaec1461061f57806398cf5ecf1461063f5780639cf9613c1461065f5780639e1138521461067f5780639ead72221461069f5780639f437c9e146106bf57600080fd5b80638129fc1c146105645780638247e0ac1461057957806383aa79d81461058e5780638a143617146105b05780638c0bd916146105d057806391d14854146105ff57600080fd5b806346ee51bb116101fe578063685d34ff116101b7578063685d34ff146104ad5780636a0af06d146104cf5780636da66355146104ef57806378a895671461050f5780637d11d546146105245780637eb74bfc1461054457600080fd5b806346ee51bb146103f35780634f1ef2861461040857806352d1902d1461041b5780635bb47808146104305780635c975abb146104505780636430c3271461047557600080fd5b8063294595d211610250578063294595d2146103545780632a5c792a146103695780632f2ff15d1461037e5780632f54bf6e1461039e57806332889cd3146103be57806336568abe146103d357600080fd5b806301ffc9a71461028d5780630c48da2d146102c257806310ae2f1a146102e457806319a6178314610306578063248a9ca314610326575b600080fd5b34801561029957600080fd5b506102ad6102a8366004611df3565b610869565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102e26102dd366004611ee5565b6108a0565b005b3480156102f057600080fd5b506102f9610938565b6040516102b99190611f7e565b34801561031257600080fd5b506102e2610321366004611fcb565b61099a565b34801561033257600080fd5b50610346610341366004612019565b610a52565b6040519081526020016102b9565b34801561036057600080fd5b50600354610346565b34801561037557600080fd5b506102f9610a74565b34801561038a57600080fd5b506102e2610399366004612032565b610ad4565b3480156103aa57600080fd5b506102ad6103b936600461205e565b610af0565b3480156103ca57600080fd5b506102f9610afc565b3480156103df57600080fd5b506102e26103ee366004612032565b610b5c565b3480156103ff57600080fd5b50600254610346565b6102e2610416366004612079565b610b94565b34801561042757600080fd5b50610346610bb3565b34801561043c57600080fd5b506102e261044b36600461205e565b610bd0565b34801561045c57600080fd5b506000805160206125368339815191525460ff166102ad565b34801561048157600080fd5b50610495610490366004612019565b610c75565b6040516001600160a01b0390911681526020016102b9565b3480156104b957600080fd5b506103466000805160206124f683398151915281565b3480156104db57600080fd5b506102e26104ea366004611fcb565b610c9f565b3480156104fb57600080fd5b506102e261050a3660046120d1565b610d4b565b34801561051b57600080fd5b50600154610346565b34801561053057600080fd5b5061049561053f366004612019565b610da3565b34801561055057600080fd5b506102ad61055f36600461205e565b610df5565b34801561057057600080fd5b506102e2610e0f565b34801561058557600080fd5b50600454610346565b34801561059a57600080fd5b5061034660008051602061255683398151915281565b3480156105bc57600080fd5b506104956105cb366004612019565b610f21565b3480156105dc57600080fd5b506105f06105eb36600461205e565b610f31565b6040516102b99392919061215e565b34801561060b57600080fd5b506102ad61061a366004612032565b61106e565b34801561062b57600080fd5b506102ad61063a36600461205e565b6110a6565b34801561064b57600080fd5b506102e261065a366004611fcb565b6110c0565b34801561066b57600080fd5b506102e261067a366004611fcb565b61116c565b34801561068b57600080fd5b5061049561069a366004612019565b611218565b3480156106ab57600080fd5b506104956106ba366004612019565b611228565b3480156106cb57600080fd5b506103466000805160206124b683398151915281565b3480156106ed57600080fd5b50610346600081565b34801561070257600080fd5b50610495610711366004612019565b611238565b34801561072257600080fd5b50610747604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102b9919061219e565b34801561076057600080fd5b506102f961126f565b34801561077557600080fd5b50600554610495906001600160a01b031681565b34801561079557600080fd5b506102e26107a4366004611fcb565b6112cf565b3480156107b557600080fd5b506104956107c4366004612019565b61134d565b3480156107d557600080fd5b506102e26107e4366004611fcb565b611384565b3480156107f557600080fd5b506102e2610804366004612032565b6113f5565b34801561081557600080fd5b506102e26108243660046120d1565b611411565b34801561083557600080fd5b506102e26108443660046121b1565b61145d565b34801561085557600080fd5b506102ad61086436600461205e565b6114e6565b60006001600160e01b03198216637965db0b60e01b148061089a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6108a8611500565b6005546001600160a01b03163314610926576108d26000805160206124b68339815191523361106e565b806108e357506108e360003361106e565b8061090157506109016000805160206124f68339815191523361106e565b6109265760405162461bcd60e51b815260040161091d9061225b565b60405180910390fd5b61093284848484611533565b50505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561099057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610972575b5050505050905090565b6109a560003361106e565b806109c357506109c36000805160206124f68339815191523361106e565b6109df5760405162461bcd60e51b815260040161091d9061225b565b6109f76000805160206124b6833981519152836116a2565b50610a03600383611728565b816001600160a01b0316336001600160a01b03167f741d4f16d5a79c37b8fd050639cffd4eaf417445424059c69664cbb70d2a5f6c83604051610a46919061219e565b60405180910390a35050565b6000908152600080516020612516833981519152602052604090206001015490565b60606001805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b610add82610a52565b610ae681611827565b6109328383611834565b600061089a818361106e565b60606003805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b6001600160a01b0381163314610b855760405163334bd91960e11b815260040160405180910390fd5b610b8f82826116a2565b505050565b610b9c6118cf565b610ba582611974565b610baf828261197f565b5050565b6000610bbd611a3c565b506000805160206124d683398151915290565b6000610bdb81611827565b6001600160a01b038216610c205760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161091d565b600580546001600160a01b038481166001600160a01b03198316811790935560405191169190829033907fcc847c84c8074a8da04b48d623a4b38e263572c16fa0fc823d79bf7361dee31d90600090a4505050565b60048181548110610c8557600080fd5b6000918252602090912001546001600160a01b0316905081565b610caa60003361106e565b80610cc85750610cc86000805160206124f68339815191523361106e565b610ce45760405162461bcd60e51b815260040161091d9061225b565b610cfc60008051602061255683398151915283611834565b50610d08600483611a85565b816001600160a01b0316336001600160a01b03167fbcc7857902b063c09d0cf80588b949fa234255dfe327b962c5d1dc38fe1aba4083604051610a46919061219e565b6000610d5681611827565b610d5e611b09565b336001600160a01b03167f0633b518f7e228cea84c7b36264537a16387cd16109f97ff871f587d7238481d83604051610d97919061219e565b60405180910390a25050565b6002546000908210610dc75760405162461bcd60e51b815260040161091d90612283565b60028281548110610dda57610dda6122b0565b6000918252602090912001546001600160a01b031692915050565b600061089a6000805160206124b68339815191528361106e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610e9e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ec857845460ff60401b1916600160401b1785555b610ed3600033611834565b508315610f1a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60038181548110610c8557600080fd5b600060208190529081526040902080546001820180546001600160a01b039092169291610f5d906122c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f89906122c6565b8015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b505050505090806002018054610feb906122c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611017906122c6565b80156110645780601f1061103957610100808354040283529160200191611064565b820191906000526020600020905b81548152906001019060200180831161104757829003601f168201915b5050505050905083565b6000918252600080516020612516833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061089a6000805160206125568339815191528361106e565b6110cb60003361106e565b806110e957506110e96000805160206124f68339815191523361106e565b6111055760405162461bcd60e51b815260040161091d9061225b565b61111d600080516020612556833981519152836116a2565b50611129600483611728565b816001600160a01b0316336001600160a01b03167f88d45a6aa07125447b55f107bd5737025ef5e3f116de4950e8e090a1023ff4a483604051610a46919061219e565b61117760003361106e565b8061119557506111956000805160206124f68339815191523361106e565b6111b15760405162461bcd60e51b815260040161091d9061225b565b6111c96000805160206124b683398151915283611834565b506111d5600383611a85565b816001600160a01b0316336001600160a01b03167fb2fc27990e77bd54811bcaa01cd65f1a5cb5af811ef16cad4f7778a4df5126a083604051610a46919061219e565b60028181548110610c8557600080fd5b60018181548110610c8557600080fd5b600454600090821061125c5760405162461bcd60e51b815260040161091d90612283565b60048281548110610dda57610dda6122b0565b60606004805480602002602001604051908101604052809291908181526020018280548015610990576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610972575050505050905090565b60006112da81611827565b6112f26000805160206124f6833981519152846113f5565b6112fd600284611728565b826001600160a01b0316336001600160a01b03167fdedab8f5d11d718dc27471cc695fcea1a096dbaf743fc629e9ce0bb1a39333af84604051611340919061219e565b60405180910390a3505050565b60035460009082106113715760405162461bcd60e51b815260040161091d90612283565b60038281548110610dda57610dda6122b0565b600061138f81611827565b6113a76000805160206124f683398151915284610ad4565b6113b2600284611a85565b826001600160a01b0316336001600160a01b03167f8cc31bbe73dc10848165c847a4c370cd881743121d2eee9836ca4e607ca4819f84604051611340919061219e565b6113fe82610a52565b61140781611827565b61093283836116a2565b600061141c81611827565b611424611b6c565b336001600160a01b03167f02ac1745f320508b54f59ac6b59d2fc262da33b72598237b29a916cfb5fd519383604051610d97919061219e565b611465611500565b6005546001600160a01b031633146114da5761148f6000805160206124b68339815191523361106e565b806114a057506114a060003361106e565b806114be57506114be6000805160206124f68339815191523361106e565b6114da5760405162461bcd60e51b815260040161091d9061225b565b610f1a84848484611533565b600061089a6000805160206124f68339815191528361106e565b6000805160206125368339815191525460ff16156115315760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b03848116600090815260208190526040902054161561159b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20616c726561647920726567697374657265640000000000000000604482015260640161091d565b604080516060810182526001600160a01b038681168083526020808401888152848601889052600092835290829052939020825181546001600160a01b0319169216919091178155915190919060018201906115f79082612350565b506040820151600282019061160c9082612350565b50506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b03871690811790915560405190915033907fec82a4a358c202e0580890ad5ae52df93af69e508cbbd07e2766ab1e2fd4d3df9061169490879087908790612410565b60405180910390a350505050565b60006000805160206125168339815191526116bd848461106e565b1561171e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061089a565b600091505061089a565b60005b8254811015610b8f57816001600160a01b0316838281548110611750576117506122b0565b6000918252602090912001546001600160a01b03160361181f578254839061177a90600190612449565b8154811061178a5761178a6122b0565b9060005260206000200160009054906101000a90046001600160a01b03168382815481106117ba576117ba6122b0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806117f8576117f861246a565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b60010161172b565b6118318133611bb2565b50565b600060008051602061251683398151915261184f848461106e565b61171e576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118853390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061089a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061195657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661194a6000805160206124d6833981519152546001600160a01b031690565b6001600160a01b031614155b156115315760405163703e46dd60e11b815260040160405180910390fd5b6000610baf81611827565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119d9575060408051601f3d908101601f191682019092526119d691810190612480565b60015b611a0157604051634c9c8ce360e01b81526001600160a01b038316600482015260240161091d565b6000805160206124d68339815191528114611a3257604051632a87526960e21b81526004810182905260240161091d565b610b8f8383611beb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115315760405163703e46dd60e11b815260040160405180910390fd5b60005b8254811015611ad457816001600160a01b0316838281548110611aad57611aad6122b0565b6000918252602090912001546001600160a01b031603611acc57505050565b600101611a88565b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055565b611b11611500565b600080516020612536833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b611b74611c41565b600080516020612536833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611b4e565b611bbc828261106e565b610baf5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161091d565b611bf482611c71565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611c3957610b8f8282611cd6565b610baf611d4c565b6000805160206125368339815191525460ff1661153157604051638dfc202b60e01b815260040160405180910390fd5b806001600160a01b03163b600003611ca757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161091d565b6000805160206124d683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611cf39190612499565b600060405180830381855af49150503d8060008114611d2e576040519150601f19603f3d011682016040523d82523d6000602084013e611d33565b606091505b5091509150611d43858383611d6b565b95945050505050565b34156115315760405163b398979f60e01b815260040160405180910390fd5b606082611d8057611d7b82611dca565b611dc3565b8151158015611d9757506001600160a01b0384163b155b15611dc057604051639996b31560e01b81526001600160a01b038516600482015260240161091d565b50805b9392505050565b805115611dda5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215611e0557600080fd5b81356001600160e01b031981168114611dc357600080fd5b80356001600160a01b0381168114611e3457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611e6a57611e6a611e39565b604051601f8501601f19908116603f01168101908282118183101715611e9257611e92611e39565b81604052809350858152868686011115611eab57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611ed657600080fd5b611dc383833560208501611e4f565b60008060008060808587031215611efb57600080fd5b611f0485611e1d565b9350602085013567ffffffffffffffff80821115611f2157600080fd5b611f2d88838901611ec5565b94506040870135915080821115611f4357600080fd5b611f4f88838901611ec5565b93506060870135915080821115611f6557600080fd5b50611f7287828801611ec5565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015611fbf5783516001600160a01b031683529284019291840191600101611f9a565b50909695505050505050565b60008060408385031215611fde57600080fd5b611fe783611e1d565b9150602083013567ffffffffffffffff81111561200357600080fd5b61200f85828601611ec5565b9150509250929050565b60006020828403121561202b57600080fd5b5035919050565b6000806040838503121561204557600080fd5b8235915061205560208401611e1d565b90509250929050565b60006020828403121561207057600080fd5b611dc382611e1d565b6000806040838503121561208c57600080fd5b61209583611e1d565b9150602083013567ffffffffffffffff8111156120b157600080fd5b8301601f810185136120c257600080fd5b61200f85823560208401611e4f565b6000602082840312156120e357600080fd5b813567ffffffffffffffff8111156120fa57600080fd5b61210684828501611ec5565b949350505050565b60005b83811015612129578181015183820152602001612111565b50506000910152565b6000815180845261214a81602086016020860161210e565b601f01601f19169290920160200192915050565b6001600160a01b038416815260606020820181905260009061218290830185612132565b82810360408401526121948185612132565b9695505050505050565b602081526000611dc36020830184612132565b600080600080600060a086880312156121c957600080fd5b6121d286611e1d565b94506121e060208701611e1d565b9350604086013567ffffffffffffffff808211156121fd57600080fd5b61220989838a01611ec5565b9450606088013591508082111561221f57600080fd5b61222b89838a01611ec5565b9350608088013591508082111561224157600080fd5b5061224e88828901611ec5565b9150509295509295909350565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806122da57607f821691505b6020821081036122fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b8f576000816000526020600020601f850160051c810160208610156123295750805b601f850160051c820191505b8181101561234857828155600101612335565b505050505050565b815167ffffffffffffffff81111561236a5761236a611e39565b61237e8161237884546122c6565b84612300565b602080601f8311600181146123b3576000841561239b5750858301515b600019600386901b1c1916600185901b178555612348565b600085815260208120601f198616915b828110156123e2578886015182559484019460019091019084016123c3565b50858210156124005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6060815260006124236060830186612132565b82810360208401526124358186612132565b905082810360408401526121948185612132565b8181038181111561089a57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561249257600080fd5b5051919050565b600082516124ab81846020870161210e565b919091019291505056fe0a865fb3417fc4a7d7373d42317aff592f595a0093d7332ffae098db733cd11b360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5246556c0ab216b5b325ad7c539bfbd1a07c768773cdf810fecd3c3375c2740702dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033000364bafb595aebf30e64edfca374c8e6e68a01fdc0bab55d3d02600374a378cba264697066735822122082858869d5afb1ec8b6456b51167b4198d15ab64193c6f5be2762887c5178a1c64736f6c63430008160033",
1315
+ linkReferences: {},
1316
+ deployedLinkReferences: {}
1317
+ };
1318
+
1319
+ // src/abis/StableCoinFactory.json
1320
+ var StableCoinFactory_default = {
1321
+ _format: "hh-sol-artifact-1",
1322
+ contractName: "StableCoinFactory",
1323
+ sourceName: "contracts/platform/StableCoinFactory.sol",
1324
+ abi: [
1325
+ {
1326
+ inputs: [],
1327
+ stateMutability: "nonpayable",
1328
+ type: "constructor"
1329
+ },
1330
+ {
1331
+ inputs: [],
1332
+ name: "InvalidInitialization",
1333
+ type: "error"
1334
+ },
1335
+ {
1336
+ inputs: [],
1337
+ name: "NotInitializing",
1338
+ type: "error"
1339
+ },
1340
+ {
1341
+ anonymous: false,
1342
+ inputs: [
1343
+ {
1344
+ indexed: true,
1345
+ internalType: "address",
1346
+ name: "operator",
1347
+ type: "address"
1348
+ },
1349
+ {
1350
+ indexed: true,
1351
+ internalType: "address",
1352
+ name: "oldBeacon",
1353
+ type: "address"
1354
+ },
1355
+ {
1356
+ indexed: true,
1357
+ internalType: "address",
1358
+ name: "newBeacon",
1359
+ type: "address"
1360
+ },
1361
+ {
1362
+ indexed: false,
1363
+ internalType: "string",
1364
+ name: "memo",
1365
+ type: "string"
1366
+ }
1367
+ ],
1368
+ name: "BeaconSet",
1369
+ type: "event"
1370
+ },
1371
+ {
1372
+ anonymous: false,
1373
+ inputs: [
1374
+ {
1375
+ indexed: false,
1376
+ internalType: "uint64",
1377
+ name: "version",
1378
+ type: "uint64"
1379
+ }
1380
+ ],
1381
+ name: "Initialized",
1382
+ type: "event"
1383
+ },
1384
+ {
1385
+ anonymous: false,
1386
+ inputs: [
1387
+ {
1388
+ indexed: true,
1389
+ internalType: "address",
1390
+ name: "operator",
1391
+ type: "address"
1392
+ },
1393
+ {
1394
+ indexed: true,
1395
+ internalType: "address",
1396
+ name: "token",
1397
+ type: "address"
1398
+ },
1399
+ {
1400
+ indexed: true,
1401
+ internalType: "address",
1402
+ name: "owner",
1403
+ type: "address"
1404
+ },
1405
+ {
1406
+ indexed: false,
1407
+ internalType: "string",
1408
+ name: "name",
1409
+ type: "string"
1410
+ },
1411
+ {
1412
+ indexed: false,
1413
+ internalType: "string",
1414
+ name: "symbol",
1415
+ type: "string"
1416
+ },
1417
+ {
1418
+ indexed: false,
1419
+ internalType: "string",
1420
+ name: "memo",
1421
+ type: "string"
1422
+ }
1423
+ ],
1424
+ name: "StableCoinCreated",
1425
+ type: "event"
1426
+ },
1427
+ {
1428
+ inputs: [],
1429
+ name: "beacon",
1430
+ outputs: [
1431
+ {
1432
+ internalType: "address",
1433
+ name: "",
1434
+ type: "address"
1435
+ }
1436
+ ],
1437
+ stateMutability: "view",
1438
+ type: "function"
1439
+ },
1440
+ {
1441
+ inputs: [
1442
+ {
1443
+ internalType: "string",
1444
+ name: "name",
1445
+ type: "string"
1446
+ },
1447
+ {
1448
+ internalType: "string",
1449
+ name: "symbol",
1450
+ type: "string"
1451
+ },
1452
+ {
1453
+ internalType: "string",
1454
+ name: "memo",
1455
+ type: "string"
1456
+ }
1457
+ ],
1458
+ name: "createStableCoin",
1459
+ outputs: [
1460
+ {
1461
+ internalType: "address",
1462
+ name: "",
1463
+ type: "address"
1464
+ }
1465
+ ],
1466
+ stateMutability: "nonpayable",
1467
+ type: "function"
1468
+ },
1469
+ {
1470
+ inputs: [
1471
+ {
1472
+ internalType: "address",
1473
+ name: "_platform",
1474
+ type: "address"
1475
+ },
1476
+ {
1477
+ internalType: "address",
1478
+ name: "_beacon",
1479
+ type: "address"
1480
+ }
1481
+ ],
1482
+ name: "initialize",
1483
+ outputs: [],
1484
+ stateMutability: "nonpayable",
1485
+ type: "function"
1486
+ },
1487
+ {
1488
+ inputs: [],
1489
+ name: "platform",
1490
+ outputs: [
1491
+ {
1492
+ internalType: "contract IsometryPlatform",
1493
+ name: "",
1494
+ type: "address"
1495
+ }
1496
+ ],
1497
+ stateMutability: "view",
1498
+ type: "function"
1499
+ },
1500
+ {
1501
+ inputs: [
1502
+ {
1503
+ internalType: "address",
1504
+ name: "_beacon",
1505
+ type: "address"
1506
+ },
1507
+ {
1508
+ internalType: "string",
1509
+ name: "memo",
1510
+ type: "string"
1511
+ }
1512
+ ],
1513
+ name: "setBeacon",
1514
+ outputs: [],
1515
+ stateMutability: "nonpayable",
1516
+ type: "function"
1517
+ }
1518
+ ],
1519
+ bytecode: "0x608060405234801561001057600080fd5b5061001961001e565b6100d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561006e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100cd5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610fb8806100df6000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063098536c914620000635780631b0132fc1462000096578063485cc95514620000af5780634bde38c814620000c657806359659e9014620000da575b600080fd5b6200007a62000074366004620006ec565b620000ee565b6040516001600160a01b03909116815260200160405180910390f35b620000ad620000a73660046200079b565b62000309565b005b620000ad620000c0366004620007ef565b62000468565b6000546200007a906001600160a01b031681565b6001546200007a906001600160a01b031681565b60008054604051631fadd2ff60e21b81523360048201526001600160a01b0390911690637eb74bfc90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e919062000827565b620001a65760405162461bcd60e51b81526020600482015260136024820152722737ba1030b8383937bb32b21034b9b9bab2b960691b60448201526064015b60405180910390fd5b6000848433604051602401620001bf939291906200089a565b60408051601f198184030181529181526020820180516001600160e01b03166303bf912560e11b17905260015490519192506000916001600160a01b039091169083906200020d9062000633565b6200021a929190620008dc565b604051809103906000f08015801562000237573d6000803e3d6000fd5b50600054604051630c48da2d60e01b81529192506001600160a01b031690630c48da2d90620002719084908a908a908a906004016200090a565b600060405180830381600087803b1580156200028c57600080fd5b505af1158015620002a1573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316336001600160a01b03167ffa647b50a7cf0b005f2303f5f0ddbbecba9894502a17ee7c6dd37e8d229e303f898989604051620002f89392919062000965565b60405180910390a495945050505050565b6001600160a01b038216620003505760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064016200019d565b6000546040516317aa5fb760e11b81523360048201526001600160a01b0390911690632f54bf6e90602401602060405180830381865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000827565b620004025760405162461bcd60e51b81526020600482015260126024820152712737ba10383630ba3337b9369037bbb732b960711b60448201526064016200019d565b600180546001600160a01b038481166001600160a01b03198316811790935560405191169190829033907ffa7c8f8714320b76f47d87fecf2bccb6d900fa65371f92772adb217b8bbb6f8c906200045b908790620009ae565b60405180910390a4505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015620004af5750825b905060008267ffffffffffffffff166001148015620004cd5750303b155b905081158015620004dc575080155b15620004fb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200052657845460ff60401b1916600160401b1785555b6001600160a01b0387166200056d5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064016200019d565b6001600160a01b038616620005b35760405162461bcd60e51b815260206004820152600b60248201526a2d32b937903132b0b1b7b760a91b60448201526064016200019d565b600080546001600160a01b03808a166001600160a01b031992831617909255600180549289169290911691909117905583156200062a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6105bf80620009c483390190565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200066957600080fd5b813567ffffffffffffffff8082111562000687576200068762000641565b604051601f8301601f19908116603f01168101908282118183101715620006b257620006b262000641565b81604052838152866020858801011115620006cc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156200070257600080fd5b833567ffffffffffffffff808211156200071b57600080fd5b620007298783880162000657565b945060208601359150808211156200074057600080fd5b6200074e8783880162000657565b935060408601359150808211156200076557600080fd5b50620007748682870162000657565b9150509250925092565b80356001600160a01b03811681146200079657600080fd5b919050565b60008060408385031215620007af57600080fd5b620007ba836200077e565b9150602083013567ffffffffffffffff811115620007d757600080fd5b620007e58582860162000657565b9150509250929050565b600080604083850312156200080357600080fd5b6200080e836200077e565b91506200081e602084016200077e565b90509250929050565b6000602082840312156200083a57600080fd5b815180151581146200084b57600080fd5b9392505050565b6000815180845260005b818110156200087a576020818501810151868301820152016200085c565b506000602082860101526020601f19601f83011685010191505092915050565b606081526000620008af606083018662000852565b8281036020840152620008c3818662000852565b91505060018060a01b0383166040830152949350505050565b6001600160a01b0383168152604060208201819052600090620009029083018462000852565b949350505050565b6001600160a01b0385168152608060208201819052600090620009309083018662000852565b828103604084015262000944818662000852565b905082810360608401526200095a818562000852565b979650505050505050565b6060815260006200097a606083018662000852565b82810360208401526200098e818662000852565b90508281036040840152620009a4818562000852565b9695505050505050565b6020815260006200084b60208301846200085256fe60a06040526040516105bf3803806105bf83398101604081905261002291610387565b61002c828261003e565b506001600160a01b031660805261047e565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e79190610447565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190610447565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610462565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b03808211156103c057600080fd5b818501915085601f8301126103d457600080fd5b8151818111156103e6576103e661034d565b604051601f8201601f19908116603f0116810190838211818310171561040e5761040e61034d565b8160405282815288602084870101111561042757600080fd5b610438836020830160208801610363565b80955050505050509250929050565b60006020828403121561045957600080fd5b61030182610331565b60008251610474818460208701610363565b9190910192915050565b6080516101276104986000396000601e01526101276000f3fe6080604052600a600c565b005b60186014601a565b60a0565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156079573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190609b919060c3565b905090565b3660008037600080366000845af43d6000803e80801560be573d6000f35b3d6000fd5b60006020828403121560d457600080fd5b81516001600160a01b038116811460ea57600080fd5b939250505056fea2646970667358221220f10d2777754d2e8a1a5e045964e727ef3eaeecc804aad22a40233e60583a84a764736f6c63430008160033a2646970667358221220df9c6e53a6ab93efece86685164d82a115df8eb46cd1c91c9c6a4203ec774a6864736f6c63430008160033",
1520
+ deployedBytecode: "0x60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063098536c914620000635780631b0132fc1462000096578063485cc95514620000af5780634bde38c814620000c657806359659e9014620000da575b600080fd5b6200007a62000074366004620006ec565b620000ee565b6040516001600160a01b03909116815260200160405180910390f35b620000ad620000a73660046200079b565b62000309565b005b620000ad620000c0366004620007ef565b62000468565b6000546200007a906001600160a01b031681565b6001546200007a906001600160a01b031681565b60008054604051631fadd2ff60e21b81523360048201526001600160a01b0390911690637eb74bfc90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e919062000827565b620001a65760405162461bcd60e51b81526020600482015260136024820152722737ba1030b8383937bb32b21034b9b9bab2b960691b60448201526064015b60405180910390fd5b6000848433604051602401620001bf939291906200089a565b60408051601f198184030181529181526020820180516001600160e01b03166303bf912560e11b17905260015490519192506000916001600160a01b039091169083906200020d9062000633565b6200021a929190620008dc565b604051809103906000f08015801562000237573d6000803e3d6000fd5b50600054604051630c48da2d60e01b81529192506001600160a01b031690630c48da2d90620002719084908a908a908a906004016200090a565b600060405180830381600087803b1580156200028c57600080fd5b505af1158015620002a1573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316336001600160a01b03167ffa647b50a7cf0b005f2303f5f0ddbbecba9894502a17ee7c6dd37e8d229e303f898989604051620002f89392919062000965565b60405180910390a495945050505050565b6001600160a01b038216620003505760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064016200019d565b6000546040516317aa5fb760e11b81523360048201526001600160a01b0390911690632f54bf6e90602401602060405180830381865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000827565b620004025760405162461bcd60e51b81526020600482015260126024820152712737ba10383630ba3337b9369037bbb732b960711b60448201526064016200019d565b600180546001600160a01b038481166001600160a01b03198316811790935560405191169190829033907ffa7c8f8714320b76f47d87fecf2bccb6d900fa65371f92772adb217b8bbb6f8c906200045b908790620009ae565b60405180910390a4505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015620004af5750825b905060008267ffffffffffffffff166001148015620004cd5750303b155b905081158015620004dc575080155b15620004fb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200052657845460ff60401b1916600160401b1785555b6001600160a01b0387166200056d5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064016200019d565b6001600160a01b038616620005b35760405162461bcd60e51b815260206004820152600b60248201526a2d32b937903132b0b1b7b760a91b60448201526064016200019d565b600080546001600160a01b03808a166001600160a01b031992831617909255600180549289169290911691909117905583156200062a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6105bf80620009c483390190565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200066957600080fd5b813567ffffffffffffffff8082111562000687576200068762000641565b604051601f8301601f19908116603f01168101908282118183101715620006b257620006b262000641565b81604052838152866020858801011115620006cc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156200070257600080fd5b833567ffffffffffffffff808211156200071b57600080fd5b620007298783880162000657565b945060208601359150808211156200074057600080fd5b6200074e8783880162000657565b935060408601359150808211156200076557600080fd5b50620007748682870162000657565b9150509250925092565b80356001600160a01b03811681146200079657600080fd5b919050565b60008060408385031215620007af57600080fd5b620007ba836200077e565b9150602083013567ffffffffffffffff811115620007d757600080fd5b620007e58582860162000657565b9150509250929050565b600080604083850312156200080357600080fd5b6200080e836200077e565b91506200081e602084016200077e565b90509250929050565b6000602082840312156200083a57600080fd5b815180151581146200084b57600080fd5b9392505050565b6000815180845260005b818110156200087a576020818501810151868301820152016200085c565b506000602082860101526020601f19601f83011685010191505092915050565b606081526000620008af606083018662000852565b8281036020840152620008c3818662000852565b91505060018060a01b0383166040830152949350505050565b6001600160a01b0383168152604060208201819052600090620009029083018462000852565b949350505050565b6001600160a01b0385168152608060208201819052600090620009309083018662000852565b828103604084015262000944818662000852565b905082810360608401526200095a818562000852565b979650505050505050565b6060815260006200097a606083018662000852565b82810360208401526200098e818662000852565b90508281036040840152620009a4818562000852565b9695505050505050565b6020815260006200084b60208301846200085256fe60a06040526040516105bf3803806105bf83398101604081905261002291610387565b61002c828261003e565b506001600160a01b031660805261047e565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e79190610447565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190610447565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610462565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b03808211156103c057600080fd5b818501915085601f8301126103d457600080fd5b8151818111156103e6576103e661034d565b604051601f8201601f19908116603f0116810190838211818310171561040e5761040e61034d565b8160405282815288602084870101111561042757600080fd5b610438836020830160208801610363565b80955050505050509250929050565b60006020828403121561045957600080fd5b61030182610331565b60008251610474818460208701610363565b9190910192915050565b6080516101276104986000396000601e01526101276000f3fe6080604052600a600c565b005b60186014601a565b60a0565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156079573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190609b919060c3565b905090565b3660008037600080366000845af43d6000803e80801560be573d6000f35b3d6000fd5b60006020828403121560d457600080fd5b81516001600160a01b038116811460ea57600080fd5b939250505056fea2646970667358221220f10d2777754d2e8a1a5e045964e727ef3eaeecc804aad22a40233e60583a84a764736f6c63430008160033a2646970667358221220df9c6e53a6ab93efece86685164d82a115df8eb46cd1c91c9c6a4203ec774a6864736f6c63430008160033",
1521
+ linkReferences: {},
1522
+ deployedLinkReferences: {}
1523
+ };
1524
+
1525
+ // src/abis/StableCoin.json
1526
+ var StableCoin_default = {
1527
+ _format: "hh-sol-artifact-1",
1528
+ contractName: "StableCoin",
1529
+ sourceName: "contracts/token/StableCoin.sol",
1530
+ abi: [
1531
+ {
1532
+ inputs: [],
1533
+ stateMutability: "nonpayable",
1534
+ type: "constructor"
1535
+ },
1536
+ {
1537
+ inputs: [],
1538
+ name: "AccessControlBadConfirmation",
1539
+ type: "error"
1540
+ },
1541
+ {
1542
+ inputs: [
1543
+ {
1544
+ internalType: "address",
1545
+ name: "account",
1546
+ type: "address"
1547
+ },
1548
+ {
1549
+ internalType: "bytes32",
1550
+ name: "neededRole",
1551
+ type: "bytes32"
1552
+ }
1553
+ ],
1554
+ name: "AccessControlUnauthorizedAccount",
1555
+ type: "error"
1556
+ },
1557
+ {
1558
+ inputs: [
1559
+ {
1560
+ internalType: "address",
1561
+ name: "target",
1562
+ type: "address"
1563
+ }
1564
+ ],
1565
+ name: "AddressEmptyCode",
1566
+ type: "error"
1567
+ },
1568
+ {
1569
+ inputs: [
1570
+ {
1571
+ internalType: "address",
1572
+ name: "implementation",
1573
+ type: "address"
1574
+ }
1575
+ ],
1576
+ name: "ERC1967InvalidImplementation",
1577
+ type: "error"
1578
+ },
1579
+ {
1580
+ inputs: [],
1581
+ name: "ERC1967NonPayable",
1582
+ type: "error"
1583
+ },
1584
+ {
1585
+ inputs: [
1586
+ {
1587
+ internalType: "address",
1588
+ name: "spender",
1589
+ type: "address"
1590
+ },
1591
+ {
1592
+ internalType: "uint256",
1593
+ name: "allowance",
1594
+ type: "uint256"
1595
+ },
1596
+ {
1597
+ internalType: "uint256",
1598
+ name: "needed",
1599
+ type: "uint256"
1600
+ }
1601
+ ],
1602
+ name: "ERC20InsufficientAllowance",
1603
+ type: "error"
1604
+ },
1605
+ {
1606
+ inputs: [
1607
+ {
1608
+ internalType: "address",
1609
+ name: "sender",
1610
+ type: "address"
1611
+ },
1612
+ {
1613
+ internalType: "uint256",
1614
+ name: "balance",
1615
+ type: "uint256"
1616
+ },
1617
+ {
1618
+ internalType: "uint256",
1619
+ name: "needed",
1620
+ type: "uint256"
1621
+ }
1622
+ ],
1623
+ name: "ERC20InsufficientBalance",
1624
+ type: "error"
1625
+ },
1626
+ {
1627
+ inputs: [
1628
+ {
1629
+ internalType: "address",
1630
+ name: "approver",
1631
+ type: "address"
1632
+ }
1633
+ ],
1634
+ name: "ERC20InvalidApprover",
1635
+ type: "error"
1636
+ },
1637
+ {
1638
+ inputs: [
1639
+ {
1640
+ internalType: "address",
1641
+ name: "receiver",
1642
+ type: "address"
1643
+ }
1644
+ ],
1645
+ name: "ERC20InvalidReceiver",
1646
+ type: "error"
1647
+ },
1648
+ {
1649
+ inputs: [
1650
+ {
1651
+ internalType: "address",
1652
+ name: "sender",
1653
+ type: "address"
1654
+ }
1655
+ ],
1656
+ name: "ERC20InvalidSender",
1657
+ type: "error"
1658
+ },
1659
+ {
1660
+ inputs: [
1661
+ {
1662
+ internalType: "address",
1663
+ name: "spender",
1664
+ type: "address"
1665
+ }
1666
+ ],
1667
+ name: "ERC20InvalidSpender",
1668
+ type: "error"
1669
+ },
1670
+ {
1671
+ inputs: [],
1672
+ name: "EnforcedPause",
1673
+ type: "error"
1674
+ },
1675
+ {
1676
+ inputs: [],
1677
+ name: "ExpectedPause",
1678
+ type: "error"
1679
+ },
1680
+ {
1681
+ inputs: [],
1682
+ name: "FailedCall",
1683
+ type: "error"
1684
+ },
1685
+ {
1686
+ inputs: [],
1687
+ name: "InvalidInitialization",
1688
+ type: "error"
1689
+ },
1690
+ {
1691
+ inputs: [],
1692
+ name: "NotInitializing",
1693
+ type: "error"
1694
+ },
1695
+ {
1696
+ inputs: [],
1697
+ name: "UUPSUnauthorizedCallContext",
1698
+ type: "error"
1699
+ },
1700
+ {
1701
+ inputs: [
1702
+ {
1703
+ internalType: "bytes32",
1704
+ name: "slot",
1705
+ type: "bytes32"
1706
+ }
1707
+ ],
1708
+ name: "UUPSUnsupportedProxiableUUID",
1709
+ type: "error"
1710
+ },
1711
+ {
1712
+ anonymous: false,
1713
+ inputs: [
1714
+ {
1715
+ indexed: true,
1716
+ internalType: "address",
1717
+ name: "operator",
1718
+ type: "address"
1719
+ },
1720
+ {
1721
+ indexed: true,
1722
+ internalType: "address",
1723
+ name: "minter",
1724
+ type: "address"
1725
+ },
1726
+ {
1727
+ indexed: false,
1728
+ internalType: "uint256",
1729
+ name: "newAllowance",
1730
+ type: "uint256"
1731
+ },
1732
+ {
1733
+ indexed: false,
1734
+ internalType: "string",
1735
+ name: "memo",
1736
+ type: "string"
1737
+ }
1738
+ ],
1739
+ name: "AllowanceUpdated",
1740
+ type: "event"
1741
+ },
1742
+ {
1743
+ anonymous: false,
1744
+ inputs: [
1745
+ {
1746
+ indexed: true,
1747
+ internalType: "address",
1748
+ name: "owner",
1749
+ type: "address"
1750
+ },
1751
+ {
1752
+ indexed: true,
1753
+ internalType: "address",
1754
+ name: "spender",
1755
+ type: "address"
1756
+ },
1757
+ {
1758
+ indexed: false,
1759
+ internalType: "uint256",
1760
+ name: "value",
1761
+ type: "uint256"
1762
+ }
1763
+ ],
1764
+ name: "Approval",
1765
+ type: "event"
1766
+ },
1767
+ {
1768
+ anonymous: false,
1769
+ inputs: [
1770
+ {
1771
+ indexed: true,
1772
+ internalType: "address",
1773
+ name: "operator",
1774
+ type: "address"
1775
+ },
1776
+ {
1777
+ indexed: true,
1778
+ internalType: "address",
1779
+ name: "account",
1780
+ type: "address"
1781
+ },
1782
+ {
1783
+ indexed: false,
1784
+ internalType: "string",
1785
+ name: "memo",
1786
+ type: "string"
1787
+ }
1788
+ ],
1789
+ name: "BlacklistManagerAdded",
1790
+ type: "event"
1791
+ },
1792
+ {
1793
+ anonymous: false,
1794
+ inputs: [
1795
+ {
1796
+ indexed: true,
1797
+ internalType: "address",
1798
+ name: "operator",
1799
+ type: "address"
1800
+ },
1801
+ {
1802
+ indexed: true,
1803
+ internalType: "address",
1804
+ name: "account",
1805
+ type: "address"
1806
+ },
1807
+ {
1808
+ indexed: false,
1809
+ internalType: "string",
1810
+ name: "memo",
1811
+ type: "string"
1812
+ }
1813
+ ],
1814
+ name: "BlacklistManagerRemoved",
1815
+ type: "event"
1816
+ },
1817
+ {
1818
+ anonymous: false,
1819
+ inputs: [
1820
+ {
1821
+ indexed: true,
1822
+ internalType: "address",
1823
+ name: "operator",
1824
+ type: "address"
1825
+ },
1826
+ {
1827
+ indexed: true,
1828
+ internalType: "address",
1829
+ name: "user",
1830
+ type: "address"
1831
+ },
1832
+ {
1833
+ indexed: false,
1834
+ internalType: "string",
1835
+ name: "memo",
1836
+ type: "string"
1837
+ }
1838
+ ],
1839
+ name: "Blacklisted",
1840
+ type: "event"
1841
+ },
1842
+ {
1843
+ anonymous: false,
1844
+ inputs: [
1845
+ {
1846
+ indexed: true,
1847
+ internalType: "address",
1848
+ name: "operator",
1849
+ type: "address"
1850
+ },
1851
+ {
1852
+ indexed: true,
1853
+ internalType: "address",
1854
+ name: "from",
1855
+ type: "address"
1856
+ },
1857
+ {
1858
+ indexed: false,
1859
+ internalType: "uint256",
1860
+ name: "amount",
1861
+ type: "uint256"
1862
+ },
1863
+ {
1864
+ indexed: false,
1865
+ internalType: "string",
1866
+ name: "memo",
1867
+ type: "string"
1868
+ }
1869
+ ],
1870
+ name: "Burn",
1871
+ type: "event"
1872
+ },
1873
+ {
1874
+ anonymous: false,
1875
+ inputs: [
1876
+ {
1877
+ indexed: false,
1878
+ internalType: "uint64",
1879
+ name: "version",
1880
+ type: "uint64"
1881
+ }
1882
+ ],
1883
+ name: "Initialized",
1884
+ type: "event"
1885
+ },
1886
+ {
1887
+ anonymous: false,
1888
+ inputs: [
1889
+ {
1890
+ indexed: true,
1891
+ internalType: "address",
1892
+ name: "operator",
1893
+ type: "address"
1894
+ },
1895
+ {
1896
+ indexed: true,
1897
+ internalType: "address",
1898
+ name: "account",
1899
+ type: "address"
1900
+ },
1901
+ {
1902
+ indexed: false,
1903
+ internalType: "string",
1904
+ name: "memo",
1905
+ type: "string"
1906
+ }
1907
+ ],
1908
+ name: "MasterMinterAdded",
1909
+ type: "event"
1910
+ },
1911
+ {
1912
+ anonymous: false,
1913
+ inputs: [
1914
+ {
1915
+ indexed: true,
1916
+ internalType: "address",
1917
+ name: "operator",
1918
+ type: "address"
1919
+ },
1920
+ {
1921
+ indexed: true,
1922
+ internalType: "address",
1923
+ name: "account",
1924
+ type: "address"
1925
+ },
1926
+ {
1927
+ indexed: false,
1928
+ internalType: "string",
1929
+ name: "memo",
1930
+ type: "string"
1931
+ }
1932
+ ],
1933
+ name: "MasterMinterRemoved",
1934
+ type: "event"
1935
+ },
1936
+ {
1937
+ anonymous: false,
1938
+ inputs: [
1939
+ {
1940
+ indexed: true,
1941
+ internalType: "address",
1942
+ name: "operator",
1943
+ type: "address"
1944
+ },
1945
+ {
1946
+ indexed: true,
1947
+ internalType: "address",
1948
+ name: "account",
1949
+ type: "address"
1950
+ },
1951
+ {
1952
+ indexed: false,
1953
+ internalType: "string",
1954
+ name: "memo",
1955
+ type: "string"
1956
+ }
1957
+ ],
1958
+ name: "MasterStatusAdded",
1959
+ type: "event"
1960
+ },
1961
+ {
1962
+ anonymous: false,
1963
+ inputs: [
1964
+ {
1965
+ indexed: true,
1966
+ internalType: "address",
1967
+ name: "operator",
1968
+ type: "address"
1969
+ },
1970
+ {
1971
+ indexed: true,
1972
+ internalType: "address",
1973
+ name: "account",
1974
+ type: "address"
1975
+ },
1976
+ {
1977
+ indexed: false,
1978
+ internalType: "string",
1979
+ name: "memo",
1980
+ type: "string"
1981
+ }
1982
+ ],
1983
+ name: "MasterStatusRemoved",
1984
+ type: "event"
1985
+ },
1986
+ {
1987
+ anonymous: false,
1988
+ inputs: [
1989
+ {
1990
+ indexed: true,
1991
+ internalType: "address",
1992
+ name: "operator",
1993
+ type: "address"
1994
+ },
1995
+ {
1996
+ indexed: true,
1997
+ internalType: "address",
1998
+ name: "to",
1999
+ type: "address"
2000
+ },
2001
+ {
2002
+ indexed: false,
2003
+ internalType: "uint256",
2004
+ name: "amount",
2005
+ type: "uint256"
2006
+ },
2007
+ {
2008
+ indexed: false,
2009
+ internalType: "string",
2010
+ name: "memo",
2011
+ type: "string"
2012
+ }
2013
+ ],
2014
+ name: "Mint",
2015
+ type: "event"
2016
+ },
2017
+ {
2018
+ anonymous: false,
2019
+ inputs: [
2020
+ {
2021
+ indexed: true,
2022
+ internalType: "address",
2023
+ name: "operator",
2024
+ type: "address"
2025
+ },
2026
+ {
2027
+ indexed: true,
2028
+ internalType: "address",
2029
+ name: "minter",
2030
+ type: "address"
2031
+ },
2032
+ {
2033
+ indexed: false,
2034
+ internalType: "uint256",
2035
+ name: "allowance",
2036
+ type: "uint256"
2037
+ },
2038
+ {
2039
+ indexed: false,
2040
+ internalType: "string",
2041
+ name: "memo",
2042
+ type: "string"
2043
+ }
2044
+ ],
2045
+ name: "MinterAdded",
2046
+ type: "event"
2047
+ },
2048
+ {
2049
+ anonymous: false,
2050
+ inputs: [
2051
+ {
2052
+ indexed: true,
2053
+ internalType: "address",
2054
+ name: "operator",
2055
+ type: "address"
2056
+ },
2057
+ {
2058
+ indexed: true,
2059
+ internalType: "address",
2060
+ name: "minter",
2061
+ type: "address"
2062
+ },
2063
+ {
2064
+ indexed: false,
2065
+ internalType: "string",
2066
+ name: "memo",
2067
+ type: "string"
2068
+ }
2069
+ ],
2070
+ name: "MinterRemoved",
2071
+ type: "event"
2072
+ },
2073
+ {
2074
+ anonymous: false,
2075
+ inputs: [
2076
+ {
2077
+ indexed: false,
2078
+ internalType: "address",
2079
+ name: "account",
2080
+ type: "address"
2081
+ }
2082
+ ],
2083
+ name: "Paused",
2084
+ type: "event"
2085
+ },
2086
+ {
2087
+ anonymous: false,
2088
+ inputs: [
2089
+ {
2090
+ indexed: true,
2091
+ internalType: "address",
2092
+ name: "account",
2093
+ type: "address"
2094
+ },
2095
+ {
2096
+ indexed: false,
2097
+ internalType: "string",
2098
+ name: "memo",
2099
+ type: "string"
2100
+ }
2101
+ ],
2102
+ name: "PausedByOwner",
2103
+ type: "event"
2104
+ },
2105
+ {
2106
+ anonymous: false,
2107
+ inputs: [
2108
+ {
2109
+ indexed: true,
2110
+ internalType: "bytes32",
2111
+ name: "role",
2112
+ type: "bytes32"
2113
+ },
2114
+ {
2115
+ indexed: true,
2116
+ internalType: "bytes32",
2117
+ name: "previousAdminRole",
2118
+ type: "bytes32"
2119
+ },
2120
+ {
2121
+ indexed: true,
2122
+ internalType: "bytes32",
2123
+ name: "newAdminRole",
2124
+ type: "bytes32"
2125
+ }
2126
+ ],
2127
+ name: "RoleAdminChanged",
2128
+ type: "event"
2129
+ },
2130
+ {
2131
+ anonymous: false,
2132
+ inputs: [
2133
+ {
2134
+ indexed: true,
2135
+ internalType: "bytes32",
2136
+ name: "role",
2137
+ type: "bytes32"
2138
+ },
2139
+ {
2140
+ indexed: true,
2141
+ internalType: "address",
2142
+ name: "account",
2143
+ type: "address"
2144
+ },
2145
+ {
2146
+ indexed: true,
2147
+ internalType: "address",
2148
+ name: "sender",
2149
+ type: "address"
2150
+ }
2151
+ ],
2152
+ name: "RoleGranted",
2153
+ type: "event"
2154
+ },
2155
+ {
2156
+ anonymous: false,
2157
+ inputs: [
2158
+ {
2159
+ indexed: true,
2160
+ internalType: "bytes32",
2161
+ name: "role",
2162
+ type: "bytes32"
2163
+ },
2164
+ {
2165
+ indexed: true,
2166
+ internalType: "address",
2167
+ name: "account",
2168
+ type: "address"
2169
+ },
2170
+ {
2171
+ indexed: true,
2172
+ internalType: "address",
2173
+ name: "sender",
2174
+ type: "address"
2175
+ }
2176
+ ],
2177
+ name: "RoleRevoked",
2178
+ type: "event"
2179
+ },
2180
+ {
2181
+ anonymous: false,
2182
+ inputs: [
2183
+ {
2184
+ indexed: true,
2185
+ internalType: "address",
2186
+ name: "from",
2187
+ type: "address"
2188
+ },
2189
+ {
2190
+ indexed: true,
2191
+ internalType: "address",
2192
+ name: "to",
2193
+ type: "address"
2194
+ },
2195
+ {
2196
+ indexed: false,
2197
+ internalType: "uint256",
2198
+ name: "value",
2199
+ type: "uint256"
2200
+ }
2201
+ ],
2202
+ name: "Transfer",
2203
+ type: "event"
2204
+ },
2205
+ {
2206
+ anonymous: false,
2207
+ inputs: [
2208
+ {
2209
+ indexed: true,
2210
+ internalType: "address",
2211
+ name: "operator",
2212
+ type: "address"
2213
+ },
2214
+ {
2215
+ indexed: true,
2216
+ internalType: "address",
2217
+ name: "user",
2218
+ type: "address"
2219
+ },
2220
+ {
2221
+ indexed: false,
2222
+ internalType: "string",
2223
+ name: "memo",
2224
+ type: "string"
2225
+ }
2226
+ ],
2227
+ name: "UnBlacklisted",
2228
+ type: "event"
2229
+ },
2230
+ {
2231
+ anonymous: false,
2232
+ inputs: [
2233
+ {
2234
+ indexed: false,
2235
+ internalType: "address",
2236
+ name: "account",
2237
+ type: "address"
2238
+ }
2239
+ ],
2240
+ name: "Unpaused",
2241
+ type: "event"
2242
+ },
2243
+ {
2244
+ anonymous: false,
2245
+ inputs: [
2246
+ {
2247
+ indexed: true,
2248
+ internalType: "address",
2249
+ name: "account",
2250
+ type: "address"
2251
+ },
2252
+ {
2253
+ indexed: false,
2254
+ internalType: "string",
2255
+ name: "memo",
2256
+ type: "string"
2257
+ }
2258
+ ],
2259
+ name: "UnpausedByOwner",
2260
+ type: "event"
2261
+ },
2262
+ {
2263
+ anonymous: false,
2264
+ inputs: [
2265
+ {
2266
+ indexed: true,
2267
+ internalType: "address",
2268
+ name: "implementation",
2269
+ type: "address"
2270
+ }
2271
+ ],
2272
+ name: "Upgraded",
2273
+ type: "event"
2274
+ },
2275
+ {
2276
+ inputs: [],
2277
+ name: "BLACKLIST_MANAGER_ROLE",
2278
+ outputs: [
2279
+ {
2280
+ internalType: "bytes32",
2281
+ name: "",
2282
+ type: "bytes32"
2283
+ }
2284
+ ],
2285
+ stateMutability: "view",
2286
+ type: "function"
2287
+ },
2288
+ {
2289
+ inputs: [],
2290
+ name: "DEFAULT_ADMIN_ROLE",
2291
+ outputs: [
2292
+ {
2293
+ internalType: "bytes32",
2294
+ name: "",
2295
+ type: "bytes32"
2296
+ }
2297
+ ],
2298
+ stateMutability: "view",
2299
+ type: "function"
2300
+ },
2301
+ {
2302
+ inputs: [],
2303
+ name: "MASTER_MINTER_ROLE",
2304
+ outputs: [
2305
+ {
2306
+ internalType: "bytes32",
2307
+ name: "",
2308
+ type: "bytes32"
2309
+ }
2310
+ ],
2311
+ stateMutability: "view",
2312
+ type: "function"
2313
+ },
2314
+ {
2315
+ inputs: [],
2316
+ name: "MASTER_STATUS_ROLE",
2317
+ outputs: [
2318
+ {
2319
+ internalType: "bytes32",
2320
+ name: "",
2321
+ type: "bytes32"
2322
+ }
2323
+ ],
2324
+ stateMutability: "view",
2325
+ type: "function"
2326
+ },
2327
+ {
2328
+ inputs: [],
2329
+ name: "MINTER_ROLE",
2330
+ outputs: [
2331
+ {
2332
+ internalType: "bytes32",
2333
+ name: "",
2334
+ type: "bytes32"
2335
+ }
2336
+ ],
2337
+ stateMutability: "view",
2338
+ type: "function"
2339
+ },
2340
+ {
2341
+ inputs: [],
2342
+ name: "TOKEN_OWNER_ROLE",
2343
+ outputs: [
2344
+ {
2345
+ internalType: "bytes32",
2346
+ name: "",
2347
+ type: "bytes32"
2348
+ }
2349
+ ],
2350
+ stateMutability: "view",
2351
+ type: "function"
2352
+ },
2353
+ {
2354
+ inputs: [],
2355
+ name: "UPGRADE_INTERFACE_VERSION",
2356
+ outputs: [
2357
+ {
2358
+ internalType: "string",
2359
+ name: "",
2360
+ type: "string"
2361
+ }
2362
+ ],
2363
+ stateMutability: "view",
2364
+ type: "function"
2365
+ },
2366
+ {
2367
+ inputs: [
2368
+ {
2369
+ internalType: "address",
2370
+ name: "account",
2371
+ type: "address"
2372
+ },
2373
+ {
2374
+ internalType: "string",
2375
+ name: "memo",
2376
+ type: "string"
2377
+ }
2378
+ ],
2379
+ name: "addBlacklistManager",
2380
+ outputs: [],
2381
+ stateMutability: "nonpayable",
2382
+ type: "function"
2383
+ },
2384
+ {
2385
+ inputs: [
2386
+ {
2387
+ internalType: "address",
2388
+ name: "account",
2389
+ type: "address"
2390
+ },
2391
+ {
2392
+ internalType: "string",
2393
+ name: "memo",
2394
+ type: "string"
2395
+ }
2396
+ ],
2397
+ name: "addMasterMinter",
2398
+ outputs: [],
2399
+ stateMutability: "nonpayable",
2400
+ type: "function"
2401
+ },
2402
+ {
2403
+ inputs: [
2404
+ {
2405
+ internalType: "address",
2406
+ name: "account",
2407
+ type: "address"
2408
+ },
2409
+ {
2410
+ internalType: "string",
2411
+ name: "memo",
2412
+ type: "string"
2413
+ }
2414
+ ],
2415
+ name: "addMasterStatus",
2416
+ outputs: [],
2417
+ stateMutability: "nonpayable",
2418
+ type: "function"
2419
+ },
2420
+ {
2421
+ inputs: [
2422
+ {
2423
+ internalType: "address",
2424
+ name: "minter",
2425
+ type: "address"
2426
+ },
2427
+ {
2428
+ internalType: "uint256",
2429
+ name: "allowance",
2430
+ type: "uint256"
2431
+ },
2432
+ {
2433
+ internalType: "string",
2434
+ name: "memo",
2435
+ type: "string"
2436
+ }
2437
+ ],
2438
+ name: "addMinter",
2439
+ outputs: [],
2440
+ stateMutability: "nonpayable",
2441
+ type: "function"
2442
+ },
2443
+ {
2444
+ inputs: [
2445
+ {
2446
+ internalType: "address",
2447
+ name: "owner",
2448
+ type: "address"
2449
+ },
2450
+ {
2451
+ internalType: "address",
2452
+ name: "spender",
2453
+ type: "address"
2454
+ }
2455
+ ],
2456
+ name: "allowance",
2457
+ outputs: [
2458
+ {
2459
+ internalType: "uint256",
2460
+ name: "",
2461
+ type: "uint256"
2462
+ }
2463
+ ],
2464
+ stateMutability: "view",
2465
+ type: "function"
2466
+ },
2467
+ {
2468
+ inputs: [
2469
+ {
2470
+ internalType: "address",
2471
+ name: "spender",
2472
+ type: "address"
2473
+ },
2474
+ {
2475
+ internalType: "uint256",
2476
+ name: "amount",
2477
+ type: "uint256"
2478
+ }
2479
+ ],
2480
+ name: "approve",
2481
+ outputs: [
2482
+ {
2483
+ internalType: "bool",
2484
+ name: "",
2485
+ type: "bool"
2486
+ }
2487
+ ],
2488
+ stateMutability: "nonpayable",
2489
+ type: "function"
2490
+ },
2491
+ {
2492
+ inputs: [
2493
+ {
2494
+ internalType: "address",
2495
+ name: "account",
2496
+ type: "address"
2497
+ }
2498
+ ],
2499
+ name: "balanceOf",
2500
+ outputs: [
2501
+ {
2502
+ internalType: "uint256",
2503
+ name: "",
2504
+ type: "uint256"
2505
+ }
2506
+ ],
2507
+ stateMutability: "view",
2508
+ type: "function"
2509
+ },
2510
+ {
2511
+ inputs: [
2512
+ {
2513
+ internalType: "address",
2514
+ name: "user",
2515
+ type: "address"
2516
+ },
2517
+ {
2518
+ internalType: "string",
2519
+ name: "memo",
2520
+ type: "string"
2521
+ }
2522
+ ],
2523
+ name: "blacklist",
2524
+ outputs: [],
2525
+ stateMutability: "nonpayable",
2526
+ type: "function"
2527
+ },
2528
+ {
2529
+ inputs: [
2530
+ {
2531
+ internalType: "uint256",
2532
+ name: "",
2533
+ type: "uint256"
2534
+ }
2535
+ ],
2536
+ name: "blacklistList",
2537
+ outputs: [
2538
+ {
2539
+ internalType: "address",
2540
+ name: "",
2541
+ type: "address"
2542
+ }
2543
+ ],
2544
+ stateMutability: "view",
2545
+ type: "function"
2546
+ },
2547
+ {
2548
+ inputs: [
2549
+ {
2550
+ internalType: "uint256",
2551
+ name: "",
2552
+ type: "uint256"
2553
+ }
2554
+ ],
2555
+ name: "blacklistManagerList",
2556
+ outputs: [
2557
+ {
2558
+ internalType: "address",
2559
+ name: "",
2560
+ type: "address"
2561
+ }
2562
+ ],
2563
+ stateMutability: "view",
2564
+ type: "function"
2565
+ },
2566
+ {
2567
+ inputs: [
2568
+ {
2569
+ internalType: "address",
2570
+ name: "",
2571
+ type: "address"
2572
+ }
2573
+ ],
2574
+ name: "blacklisted",
2575
+ outputs: [
2576
+ {
2577
+ internalType: "bool",
2578
+ name: "",
2579
+ type: "bool"
2580
+ }
2581
+ ],
2582
+ stateMutability: "view",
2583
+ type: "function"
2584
+ },
2585
+ {
2586
+ inputs: [
2587
+ {
2588
+ internalType: "uint256",
2589
+ name: "amount",
2590
+ type: "uint256"
2591
+ },
2592
+ {
2593
+ internalType: "string",
2594
+ name: "memo",
2595
+ type: "string"
2596
+ }
2597
+ ],
2598
+ name: "burn",
2599
+ outputs: [],
2600
+ stateMutability: "nonpayable",
2601
+ type: "function"
2602
+ },
2603
+ {
2604
+ inputs: [],
2605
+ name: "decimals",
2606
+ outputs: [
2607
+ {
2608
+ internalType: "uint8",
2609
+ name: "",
2610
+ type: "uint8"
2611
+ }
2612
+ ],
2613
+ stateMutability: "view",
2614
+ type: "function"
2615
+ },
2616
+ {
2617
+ inputs: [],
2618
+ name: "getAllBlacklist",
2619
+ outputs: [
2620
+ {
2621
+ internalType: "address[]",
2622
+ name: "",
2623
+ type: "address[]"
2624
+ }
2625
+ ],
2626
+ stateMutability: "view",
2627
+ type: "function"
2628
+ },
2629
+ {
2630
+ inputs: [],
2631
+ name: "getAllBlacklistManagers",
2632
+ outputs: [
2633
+ {
2634
+ internalType: "address[]",
2635
+ name: "",
2636
+ type: "address[]"
2637
+ }
2638
+ ],
2639
+ stateMutability: "view",
2640
+ type: "function"
2641
+ },
2642
+ {
2643
+ inputs: [],
2644
+ name: "getAllMasterMinters",
2645
+ outputs: [
2646
+ {
2647
+ internalType: "address[]",
2648
+ name: "",
2649
+ type: "address[]"
2650
+ }
2651
+ ],
2652
+ stateMutability: "view",
2653
+ type: "function"
2654
+ },
2655
+ {
2656
+ inputs: [],
2657
+ name: "getAllMasterStatus",
2658
+ outputs: [
2659
+ {
2660
+ internalType: "address[]",
2661
+ name: "",
2662
+ type: "address[]"
2663
+ }
2664
+ ],
2665
+ stateMutability: "view",
2666
+ type: "function"
2667
+ },
2668
+ {
2669
+ inputs: [],
2670
+ name: "getAllMinterItems",
2671
+ outputs: [
2672
+ {
2673
+ components: [
2674
+ {
2675
+ internalType: "address",
2676
+ name: "minter",
2677
+ type: "address"
2678
+ },
2679
+ {
2680
+ internalType: "uint256",
2681
+ name: "allowance",
2682
+ type: "uint256"
2683
+ },
2684
+ {
2685
+ internalType: "uint256",
2686
+ name: "minted",
2687
+ type: "uint256"
2688
+ },
2689
+ {
2690
+ internalType: "uint256",
2691
+ name: "remaining",
2692
+ type: "uint256"
2693
+ }
2694
+ ],
2695
+ internalType: "struct StableCoin.MinterItem[]",
2696
+ name: "",
2697
+ type: "tuple[]"
2698
+ }
2699
+ ],
2700
+ stateMutability: "view",
2701
+ type: "function"
2702
+ },
2703
+ {
2704
+ inputs: [],
2705
+ name: "getAllMinters",
2706
+ outputs: [
2707
+ {
2708
+ internalType: "address[]",
2709
+ name: "",
2710
+ type: "address[]"
2711
+ }
2712
+ ],
2713
+ stateMutability: "view",
2714
+ type: "function"
2715
+ },
2716
+ {
2717
+ inputs: [],
2718
+ name: "getBlacklistCount",
2719
+ outputs: [
2720
+ {
2721
+ internalType: "uint256",
2722
+ name: "",
2723
+ type: "uint256"
2724
+ }
2725
+ ],
2726
+ stateMutability: "view",
2727
+ type: "function"
2728
+ },
2729
+ {
2730
+ inputs: [
2731
+ {
2732
+ internalType: "uint256",
2733
+ name: "index",
2734
+ type: "uint256"
2735
+ }
2736
+ ],
2737
+ name: "getBlacklistManager",
2738
+ outputs: [
2739
+ {
2740
+ internalType: "address",
2741
+ name: "",
2742
+ type: "address"
2743
+ }
2744
+ ],
2745
+ stateMutability: "view",
2746
+ type: "function"
2747
+ },
2748
+ {
2749
+ inputs: [],
2750
+ name: "getBlacklistManagerCount",
2751
+ outputs: [
2752
+ {
2753
+ internalType: "uint256",
2754
+ name: "",
2755
+ type: "uint256"
2756
+ }
2757
+ ],
2758
+ stateMutability: "view",
2759
+ type: "function"
2760
+ },
2761
+ {
2762
+ inputs: [
2763
+ {
2764
+ internalType: "uint256",
2765
+ name: "index",
2766
+ type: "uint256"
2767
+ }
2768
+ ],
2769
+ name: "getBlacklistUser",
2770
+ outputs: [
2771
+ {
2772
+ internalType: "address",
2773
+ name: "",
2774
+ type: "address"
2775
+ }
2776
+ ],
2777
+ stateMutability: "view",
2778
+ type: "function"
2779
+ },
2780
+ {
2781
+ inputs: [
2782
+ {
2783
+ internalType: "uint256",
2784
+ name: "index",
2785
+ type: "uint256"
2786
+ }
2787
+ ],
2788
+ name: "getMasterMinter",
2789
+ outputs: [
2790
+ {
2791
+ internalType: "address",
2792
+ name: "",
2793
+ type: "address"
2794
+ }
2795
+ ],
2796
+ stateMutability: "view",
2797
+ type: "function"
2798
+ },
2799
+ {
2800
+ inputs: [],
2801
+ name: "getMasterMinterCount",
2802
+ outputs: [
2803
+ {
2804
+ internalType: "uint256",
2805
+ name: "",
2806
+ type: "uint256"
2807
+ }
2808
+ ],
2809
+ stateMutability: "view",
2810
+ type: "function"
2811
+ },
2812
+ {
2813
+ inputs: [
2814
+ {
2815
+ internalType: "uint256",
2816
+ name: "index",
2817
+ type: "uint256"
2818
+ }
2819
+ ],
2820
+ name: "getMasterStatus",
2821
+ outputs: [
2822
+ {
2823
+ internalType: "address",
2824
+ name: "",
2825
+ type: "address"
2826
+ }
2827
+ ],
2828
+ stateMutability: "view",
2829
+ type: "function"
2830
+ },
2831
+ {
2832
+ inputs: [],
2833
+ name: "getMasterStatusCount",
2834
+ outputs: [
2835
+ {
2836
+ internalType: "uint256",
2837
+ name: "",
2838
+ type: "uint256"
2839
+ }
2840
+ ],
2841
+ stateMutability: "view",
2842
+ type: "function"
2843
+ },
2844
+ {
2845
+ inputs: [
2846
+ {
2847
+ internalType: "uint256",
2848
+ name: "index",
2849
+ type: "uint256"
2850
+ }
2851
+ ],
2852
+ name: "getMinter",
2853
+ outputs: [
2854
+ {
2855
+ internalType: "address",
2856
+ name: "",
2857
+ type: "address"
2858
+ }
2859
+ ],
2860
+ stateMutability: "view",
2861
+ type: "function"
2862
+ },
2863
+ {
2864
+ inputs: [],
2865
+ name: "getMinterCount",
2866
+ outputs: [
2867
+ {
2868
+ internalType: "uint256",
2869
+ name: "",
2870
+ type: "uint256"
2871
+ }
2872
+ ],
2873
+ stateMutability: "view",
2874
+ type: "function"
2875
+ },
2876
+ {
2877
+ inputs: [
2878
+ {
2879
+ internalType: "address",
2880
+ name: "minter",
2881
+ type: "address"
2882
+ }
2883
+ ],
2884
+ name: "getMinterInfo",
2885
+ outputs: [
2886
+ {
2887
+ internalType: "uint256",
2888
+ name: "allowance",
2889
+ type: "uint256"
2890
+ },
2891
+ {
2892
+ internalType: "uint256",
2893
+ name: "minted",
2894
+ type: "uint256"
2895
+ },
2896
+ {
2897
+ internalType: "uint256",
2898
+ name: "remaining",
2899
+ type: "uint256"
2900
+ }
2901
+ ],
2902
+ stateMutability: "view",
2903
+ type: "function"
2904
+ },
2905
+ {
2906
+ inputs: [
2907
+ {
2908
+ internalType: "bytes32",
2909
+ name: "role",
2910
+ type: "bytes32"
2911
+ }
2912
+ ],
2913
+ name: "getRoleAdmin",
2914
+ outputs: [
2915
+ {
2916
+ internalType: "bytes32",
2917
+ name: "",
2918
+ type: "bytes32"
2919
+ }
2920
+ ],
2921
+ stateMutability: "view",
2922
+ type: "function"
2923
+ },
2924
+ {
2925
+ inputs: [
2926
+ {
2927
+ internalType: "bytes32",
2928
+ name: "role",
2929
+ type: "bytes32"
2930
+ },
2931
+ {
2932
+ internalType: "address",
2933
+ name: "account",
2934
+ type: "address"
2935
+ }
2936
+ ],
2937
+ name: "grantRole",
2938
+ outputs: [],
2939
+ stateMutability: "nonpayable",
2940
+ type: "function"
2941
+ },
2942
+ {
2943
+ inputs: [
2944
+ {
2945
+ internalType: "bytes32",
2946
+ name: "role",
2947
+ type: "bytes32"
2948
+ },
2949
+ {
2950
+ internalType: "address",
2951
+ name: "account",
2952
+ type: "address"
2953
+ }
2954
+ ],
2955
+ name: "hasRole",
2956
+ outputs: [
2957
+ {
2958
+ internalType: "bool",
2959
+ name: "",
2960
+ type: "bool"
2961
+ }
2962
+ ],
2963
+ stateMutability: "view",
2964
+ type: "function"
2965
+ },
2966
+ {
2967
+ inputs: [],
2968
+ name: "holdersTotal",
2969
+ outputs: [
2970
+ {
2971
+ internalType: "uint256",
2972
+ name: "",
2973
+ type: "uint256"
2974
+ }
2975
+ ],
2976
+ stateMutability: "view",
2977
+ type: "function"
2978
+ },
2979
+ {
2980
+ inputs: [
2981
+ {
2982
+ internalType: "string",
2983
+ name: "_name",
2984
+ type: "string"
2985
+ },
2986
+ {
2987
+ internalType: "string",
2988
+ name: "_symbol",
2989
+ type: "string"
2990
+ },
2991
+ {
2992
+ internalType: "address",
2993
+ name: "_owner",
2994
+ type: "address"
2995
+ }
2996
+ ],
2997
+ name: "initialize",
2998
+ outputs: [],
2999
+ stateMutability: "nonpayable",
3000
+ type: "function"
3001
+ },
3002
+ {
3003
+ inputs: [
3004
+ {
3005
+ internalType: "address",
3006
+ name: "account",
3007
+ type: "address"
3008
+ }
3009
+ ],
3010
+ name: "isBlacklistManager",
3011
+ outputs: [
3012
+ {
3013
+ internalType: "bool",
3014
+ name: "",
3015
+ type: "bool"
3016
+ }
3017
+ ],
3018
+ stateMutability: "view",
3019
+ type: "function"
3020
+ },
3021
+ {
3022
+ inputs: [
3023
+ {
3024
+ internalType: "address",
3025
+ name: "user",
3026
+ type: "address"
3027
+ }
3028
+ ],
3029
+ name: "isBlacklisted",
3030
+ outputs: [
3031
+ {
3032
+ internalType: "bool",
3033
+ name: "",
3034
+ type: "bool"
3035
+ }
3036
+ ],
3037
+ stateMutability: "view",
3038
+ type: "function"
3039
+ },
3040
+ {
3041
+ inputs: [
3042
+ {
3043
+ internalType: "uint256",
3044
+ name: "",
3045
+ type: "uint256"
3046
+ }
3047
+ ],
3048
+ name: "masterMinterList",
3049
+ outputs: [
3050
+ {
3051
+ internalType: "address",
3052
+ name: "",
3053
+ type: "address"
3054
+ }
3055
+ ],
3056
+ stateMutability: "view",
3057
+ type: "function"
3058
+ },
3059
+ {
3060
+ inputs: [
3061
+ {
3062
+ internalType: "uint256",
3063
+ name: "",
3064
+ type: "uint256"
3065
+ }
3066
+ ],
3067
+ name: "masterStatusList",
3068
+ outputs: [
3069
+ {
3070
+ internalType: "address",
3071
+ name: "",
3072
+ type: "address"
3073
+ }
3074
+ ],
3075
+ stateMutability: "view",
3076
+ type: "function"
3077
+ },
3078
+ {
3079
+ inputs: [
3080
+ {
3081
+ internalType: "address",
3082
+ name: "to",
3083
+ type: "address"
3084
+ },
3085
+ {
3086
+ internalType: "uint256",
3087
+ name: "amount",
3088
+ type: "uint256"
3089
+ },
3090
+ {
3091
+ internalType: "string",
3092
+ name: "memo",
3093
+ type: "string"
3094
+ }
3095
+ ],
3096
+ name: "mint",
3097
+ outputs: [],
3098
+ stateMutability: "nonpayable",
3099
+ type: "function"
3100
+ },
3101
+ {
3102
+ inputs: [
3103
+ {
3104
+ internalType: "address",
3105
+ name: "",
3106
+ type: "address"
3107
+ }
3108
+ ],
3109
+ name: "minterAllowance",
3110
+ outputs: [
3111
+ {
3112
+ internalType: "uint256",
3113
+ name: "",
3114
+ type: "uint256"
3115
+ }
3116
+ ],
3117
+ stateMutability: "view",
3118
+ type: "function"
3119
+ },
3120
+ {
3121
+ inputs: [
3122
+ {
3123
+ internalType: "uint256",
3124
+ name: "",
3125
+ type: "uint256"
3126
+ }
3127
+ ],
3128
+ name: "minterList",
3129
+ outputs: [
3130
+ {
3131
+ internalType: "address",
3132
+ name: "",
3133
+ type: "address"
3134
+ }
3135
+ ],
3136
+ stateMutability: "view",
3137
+ type: "function"
3138
+ },
3139
+ {
3140
+ inputs: [
3141
+ {
3142
+ internalType: "address",
3143
+ name: "",
3144
+ type: "address"
3145
+ }
3146
+ ],
3147
+ name: "minterMinted",
3148
+ outputs: [
3149
+ {
3150
+ internalType: "uint256",
3151
+ name: "",
3152
+ type: "uint256"
3153
+ }
3154
+ ],
3155
+ stateMutability: "view",
3156
+ type: "function"
3157
+ },
3158
+ {
3159
+ inputs: [],
3160
+ name: "name",
3161
+ outputs: [
3162
+ {
3163
+ internalType: "string",
3164
+ name: "",
3165
+ type: "string"
3166
+ }
3167
+ ],
3168
+ stateMutability: "view",
3169
+ type: "function"
3170
+ },
3171
+ {
3172
+ inputs: [
3173
+ {
3174
+ internalType: "string",
3175
+ name: "memo",
3176
+ type: "string"
3177
+ }
3178
+ ],
3179
+ name: "pause",
3180
+ outputs: [],
3181
+ stateMutability: "nonpayable",
3182
+ type: "function"
3183
+ },
3184
+ {
3185
+ inputs: [],
3186
+ name: "paused",
3187
+ outputs: [
3188
+ {
3189
+ internalType: "bool",
3190
+ name: "",
3191
+ type: "bool"
3192
+ }
3193
+ ],
3194
+ stateMutability: "view",
3195
+ type: "function"
3196
+ },
3197
+ {
3198
+ inputs: [],
3199
+ name: "proxiableUUID",
3200
+ outputs: [
3201
+ {
3202
+ internalType: "bytes32",
3203
+ name: "",
3204
+ type: "bytes32"
3205
+ }
3206
+ ],
3207
+ stateMutability: "view",
3208
+ type: "function"
3209
+ },
3210
+ {
3211
+ inputs: [
3212
+ {
3213
+ internalType: "address",
3214
+ name: "account",
3215
+ type: "address"
3216
+ },
3217
+ {
3218
+ internalType: "string",
3219
+ name: "memo",
3220
+ type: "string"
3221
+ }
3222
+ ],
3223
+ name: "removeBlacklistManager",
3224
+ outputs: [],
3225
+ stateMutability: "nonpayable",
3226
+ type: "function"
3227
+ },
3228
+ {
3229
+ inputs: [
3230
+ {
3231
+ internalType: "address",
3232
+ name: "account",
3233
+ type: "address"
3234
+ },
3235
+ {
3236
+ internalType: "string",
3237
+ name: "memo",
3238
+ type: "string"
3239
+ }
3240
+ ],
3241
+ name: "removeMasterMinter",
3242
+ outputs: [],
3243
+ stateMutability: "nonpayable",
3244
+ type: "function"
3245
+ },
3246
+ {
3247
+ inputs: [
3248
+ {
3249
+ internalType: "address",
3250
+ name: "account",
3251
+ type: "address"
3252
+ },
3253
+ {
3254
+ internalType: "string",
3255
+ name: "memo",
3256
+ type: "string"
3257
+ }
3258
+ ],
3259
+ name: "removeMasterStatus",
3260
+ outputs: [],
3261
+ stateMutability: "nonpayable",
3262
+ type: "function"
3263
+ },
3264
+ {
3265
+ inputs: [
3266
+ {
3267
+ internalType: "address",
3268
+ name: "minter",
3269
+ type: "address"
3270
+ },
3271
+ {
3272
+ internalType: "string",
3273
+ name: "memo",
3274
+ type: "string"
3275
+ }
3276
+ ],
3277
+ name: "removeMinter",
3278
+ outputs: [],
3279
+ stateMutability: "nonpayable",
3280
+ type: "function"
3281
+ },
3282
+ {
3283
+ inputs: [
3284
+ {
3285
+ internalType: "bytes32",
3286
+ name: "role",
3287
+ type: "bytes32"
3288
+ },
3289
+ {
3290
+ internalType: "address",
3291
+ name: "callerConfirmation",
3292
+ type: "address"
3293
+ }
3294
+ ],
3295
+ name: "renounceRole",
3296
+ outputs: [],
3297
+ stateMutability: "nonpayable",
3298
+ type: "function"
3299
+ },
3300
+ {
3301
+ inputs: [
3302
+ {
3303
+ internalType: "bytes32",
3304
+ name: "role",
3305
+ type: "bytes32"
3306
+ },
3307
+ {
3308
+ internalType: "address",
3309
+ name: "account",
3310
+ type: "address"
3311
+ }
3312
+ ],
3313
+ name: "revokeRole",
3314
+ outputs: [],
3315
+ stateMutability: "nonpayable",
3316
+ type: "function"
3317
+ },
3318
+ {
3319
+ inputs: [
3320
+ {
3321
+ internalType: "address",
3322
+ name: "minter",
3323
+ type: "address"
3324
+ },
3325
+ {
3326
+ internalType: "uint256",
3327
+ name: "newAllowance",
3328
+ type: "uint256"
3329
+ },
3330
+ {
3331
+ internalType: "string",
3332
+ name: "memo",
3333
+ type: "string"
3334
+ }
3335
+ ],
3336
+ name: "setMinterAllowance",
3337
+ outputs: [],
3338
+ stateMutability: "nonpayable",
3339
+ type: "function"
3340
+ },
3341
+ {
3342
+ inputs: [
3343
+ {
3344
+ internalType: "bytes4",
3345
+ name: "interfaceId",
3346
+ type: "bytes4"
3347
+ }
3348
+ ],
3349
+ name: "supportsInterface",
3350
+ outputs: [
3351
+ {
3352
+ internalType: "bool",
3353
+ name: "",
3354
+ type: "bool"
3355
+ }
3356
+ ],
3357
+ stateMutability: "view",
3358
+ type: "function"
3359
+ },
3360
+ {
3361
+ inputs: [],
3362
+ name: "symbol",
3363
+ outputs: [
3364
+ {
3365
+ internalType: "string",
3366
+ name: "",
3367
+ type: "string"
3368
+ }
3369
+ ],
3370
+ stateMutability: "view",
3371
+ type: "function"
3372
+ },
3373
+ {
3374
+ inputs: [],
3375
+ name: "totalAllowance",
3376
+ outputs: [
3377
+ {
3378
+ internalType: "uint256",
3379
+ name: "",
3380
+ type: "uint256"
3381
+ }
3382
+ ],
3383
+ stateMutability: "view",
3384
+ type: "function"
3385
+ },
3386
+ {
3387
+ inputs: [],
3388
+ name: "totalBurned",
3389
+ outputs: [
3390
+ {
3391
+ internalType: "uint256",
3392
+ name: "",
3393
+ type: "uint256"
3394
+ }
3395
+ ],
3396
+ stateMutability: "view",
3397
+ type: "function"
3398
+ },
3399
+ {
3400
+ inputs: [],
3401
+ name: "totalMinted",
3402
+ outputs: [
3403
+ {
3404
+ internalType: "uint256",
3405
+ name: "",
3406
+ type: "uint256"
3407
+ }
3408
+ ],
3409
+ stateMutability: "view",
3410
+ type: "function"
3411
+ },
3412
+ {
3413
+ inputs: [],
3414
+ name: "totalSupply",
3415
+ outputs: [
3416
+ {
3417
+ internalType: "uint256",
3418
+ name: "",
3419
+ type: "uint256"
3420
+ }
3421
+ ],
3422
+ stateMutability: "view",
3423
+ type: "function"
3424
+ },
3425
+ {
3426
+ inputs: [
3427
+ {
3428
+ internalType: "address",
3429
+ name: "to",
3430
+ type: "address"
3431
+ },
3432
+ {
3433
+ internalType: "uint256",
3434
+ name: "amount",
3435
+ type: "uint256"
3436
+ }
3437
+ ],
3438
+ name: "transfer",
3439
+ outputs: [
3440
+ {
3441
+ internalType: "bool",
3442
+ name: "",
3443
+ type: "bool"
3444
+ }
3445
+ ],
3446
+ stateMutability: "nonpayable",
3447
+ type: "function"
3448
+ },
3449
+ {
3450
+ inputs: [
3451
+ {
3452
+ internalType: "address",
3453
+ name: "from",
3454
+ type: "address"
3455
+ },
3456
+ {
3457
+ internalType: "address",
3458
+ name: "to",
3459
+ type: "address"
3460
+ },
3461
+ {
3462
+ internalType: "uint256",
3463
+ name: "amount",
3464
+ type: "uint256"
3465
+ }
3466
+ ],
3467
+ name: "transferFrom",
3468
+ outputs: [
3469
+ {
3470
+ internalType: "bool",
3471
+ name: "",
3472
+ type: "bool"
3473
+ }
3474
+ ],
3475
+ stateMutability: "nonpayable",
3476
+ type: "function"
3477
+ },
3478
+ {
3479
+ inputs: [
3480
+ {
3481
+ internalType: "address",
3482
+ name: "user",
3483
+ type: "address"
3484
+ },
3485
+ {
3486
+ internalType: "string",
3487
+ name: "memo",
3488
+ type: "string"
3489
+ }
3490
+ ],
3491
+ name: "unBlacklist",
3492
+ outputs: [],
3493
+ stateMutability: "nonpayable",
3494
+ type: "function"
3495
+ },
3496
+ {
3497
+ inputs: [
3498
+ {
3499
+ internalType: "string",
3500
+ name: "memo",
3501
+ type: "string"
3502
+ }
3503
+ ],
3504
+ name: "unpause",
3505
+ outputs: [],
3506
+ stateMutability: "nonpayable",
3507
+ type: "function"
3508
+ },
3509
+ {
3510
+ inputs: [
3511
+ {
3512
+ internalType: "address",
3513
+ name: "newImplementation",
3514
+ type: "address"
3515
+ },
3516
+ {
3517
+ internalType: "bytes",
3518
+ name: "data",
3519
+ type: "bytes"
3520
+ }
3521
+ ],
3522
+ name: "upgradeToAndCall",
3523
+ outputs: [],
3524
+ stateMutability: "payable",
3525
+ type: "function"
3526
+ }
3527
+ ],
3528
+ bytecode: "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161402c62000104600039600081816129b8015281816129e10152612c78015261402c6000f3fe60806040526004361061041a5760003560e01c80638a1851131161021e578063c847056911610123578063ddf579ff116100ab578063f1c5faae1161007a578063f1c5faae14610c89578063f5f167e514610ca9578063f864aa4714610cbe578063fe17fbd114610cde578063fe575a8714610cfe57600080fd5b8063ddf579ff14610bf9578063e79faa5814610c19578063e860cb8f14610c39578063f09b220314610c4e57600080fd5b8063d5391393116100f2578063d539139314610b51578063d547741f14610b73578063d89135cd14610b93578063dbac26e914610ba9578063dd62ed3e14610bd957600080fd5b8063c847056914610ada578063cb52a88b14610afc578063cc821f0d14610b11578063d3fc986414610b3157600080fd5b8063a217fddf116101a6578063a9059cbb11610175578063a9059cbb14610a34578063ad3cb1cc14610a54578063b135824a14610a85578063ba6256a814610a9a578063c780f66314610aba57600080fd5b8063a217fddf146109bc578063a2309ff8146109d1578063a40fa11b146109e7578063a6d55d0814610a1457600080fd5b806391a64e5f116101ed57806391a64e5f1461093a57806391d148541461095c57806395d89b411461097c578063a045442c14610991578063a15ea064146109a657600080fd5b80638a185113146108b65780638a6db9c3146108d85780638cd9317d146109055780638dbb94eb1461092557600080fd5b8063313ce567116103245780635407a7cb116102ac578063650e448a1161027b578063650e448a146108215780636da663551461083657806370a08231146108565780637641e6f3146108765780638090a6e01461089657600080fd5b80635407a7cb1461079c578063582f3eba146107bc5780635b7121f8146107dc5780635c975abb146107fc57600080fd5b8063410b2424116102f3578063410b2424146107125780634f1ef2861461073457806350ee165714610747578063523681861461076757806352d1902d1461078757600080fd5b8063313ce5671461069657806336568abe146106b257806339c5fe5b146106d25780633ac722eb146106f257600080fd5b806319fac5f9116103a757806326e3208d1161037657806326e3208d1461060b578063279ad7ab146106215780632b543ccc146106415780632ba5981f146106565780632f2ff15d1461067657600080fd5b806319fac5f9146105945780631a59a995146105b657806323b872dd146105cb578063248a9ca3146105eb57600080fd5b8063077f224a116103ee578063077f224a146104c8578063095ea7b3146104e85780630b71051114610508578063104e087f1461054057806318160ddd1461056057600080fd5b8062e04c841461041f57806301ffc9a71461044157806302f3cdb91461047657806306fdde03146104a6575b600080fd5b34801561042b57600080fd5b5061043f61043a366004613820565b610d37565b005b34801561044d57600080fd5b5061046161045c36600461386e565b610e0f565b60405190151581526020015b60405180910390f35b34801561048257600080fd5b50610498600080516020613f9783398151915281565b60405190815260200161046d565b3480156104b257600080fd5b506104bb610e46565b60405161046d91906138e8565b3480156104d457600080fd5b5061043f6104e33660046138fb565b610f09565b3480156104f457600080fd5b5061046161050336600461396f565b611190565b34801561051457600080fd5b50610528610523366004613999565b6111ab565b6040516001600160a01b03909116815260200161046d565b34801561054c57600080fd5b5061052861055b366004613999565b611206565b34801561056c57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610498565b3480156105a057600080fd5b506105a961123d565b60405161046d91906139b2565b3480156105c257600080fd5b50600454610498565b3480156105d757600080fd5b506104616105e63660046139ff565b61129f565b3480156105f757600080fd5b50610498610606366004613999565b61131a565b34801561061757600080fd5b5061049860025481565b34801561062d57600080fd5b5061052861063c366004613999565b61133c565b34801561064d57600080fd5b506105a9611366565b34801561066257600080fd5b50610528610671366004613999565b6113c6565b34801561068257600080fd5b5061043f610691366004613a3b565b6113d6565b3480156106a257600080fd5b506040516012815260200161046d565b3480156106be57600080fd5b5061043f6106cd366004613a3b565b6113f8565b3480156106de57600080fd5b506104616106ed366004613a67565b611430565b3480156106fe57600080fd5b5061043f61070d366004613820565b61144a565b34801561071e57600080fd5b50610498600080516020613ef783398151915281565b61043f610742366004613a82565b61152e565b34801561075357600080fd5b5061043f610762366004613ada565b61154d565b34801561077357600080fd5b5061043f610782366004613820565b6116b2565b34801561079357600080fd5b506104986117b2565b3480156107a857600080fd5b506105286107b7366004613999565b6117cf565b3480156107c857600080fd5b506105286107d7366004613999565b6117df565b3480156107e857600080fd5b506105286107f7366004613999565b6117ef565b34801561080857600080fd5b50600080516020613fd78339815191525460ff16610461565b34801561082d57600080fd5b50600554610498565b34801561084257600080fd5b5061043f610851366004613b31565b611826565b34801561086257600080fd5b50610498610871366004613a67565b61188b565b34801561088257600080fd5b5061043f610891366004613b66565b6118b3565b3480156108a257600080fd5b5061043f6108b1366004613820565b611996565b3480156108c257600080fd5b50610498600080516020613f1783398151915281565b3480156108e457600080fd5b506104986108f3366004613a67565b60006020819052908152604090205481565b34801561091157600080fd5b5061043f610920366004613820565b611a39565b34801561093157600080fd5b50600354610498565b34801561094657600080fd5b50610498600080516020613f3783398151915281565b34801561096857600080fd5b50610461610977366004613a3b565b611b39565b34801561098857600080fd5b506104bb611b71565b34801561099d57600080fd5b506105a9611bb0565b3480156109b257600080fd5b5061049860095481565b3480156109c857600080fd5b50610498600081565b3480156109dd57600080fd5b50610498600a5481565b3480156109f357600080fd5b50610498610a02366004613a67565b60016020526000908152604090205481565b348015610a2057600080fd5b50610528610a2f366004613999565b611c10565b348015610a4057600080fd5b50610461610a4f36600461396f565b611c20565b348015610a6057600080fd5b506104bb604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a9157600080fd5b506105a9611c89565b348015610aa657600080fd5b5061043f610ab5366004613ada565b611ce9565b348015610ac657600080fd5b5061043f610ad5366004613820565b611ddf565b348015610ae657600080fd5b50610aef611eb6565b60405161046d9190613b97565b348015610b0857600080fd5b506105a9611fe6565b348015610b1d57600080fd5b50610528610b2c366004613999565b612046565b348015610b3d57600080fd5b5061043f610b4c366004613ada565b61207d565b348015610b5d57600080fd5b50610498600080516020613f7783398151915281565b348015610b7f57600080fd5b5061043f610b8e366004613a3b565b61221c565b348015610b9f57600080fd5b50610498600b5481565b348015610bb557600080fd5b50610461610bc4366004613a67565b60066020526000908152604090205460ff1681565b348015610be557600080fd5b50610498610bf4366004613c04565b612238565b348015610c0557600080fd5b5061043f610c14366004613820565b612282565b348015610c2557600080fd5b5061043f610c34366004613b31565b6123b6565b348015610c4557600080fd5b50600754610498565b348015610c5a57600080fd5b50610c6e610c69366004613a67565b61240f565b6040805193845260208401929092529082015260600161046d565b348015610c9557600080fd5b5061043f610ca4366004613820565b612445565b348015610cb557600080fd5b50600854610498565b348015610cca57600080fd5b50610528610cd9366004613999565b612576565b348015610cea57600080fd5b5061043f610cf9366004613820565b6125ad565b348015610d0a57600080fd5b50610461610d19366004613a67565b6001600160a01b031660009081526006602052604090205460ff1690565b600080516020613f37833981519152610d4f8161262a565b6001600160a01b0383166000908152602081905260409020548015610d78576002805482900390555b6001600160a01b0384166000908152602081815260408083208390556001909152812055610db4600080516020613f7783398151915285612637565b50610dbe846126bd565b836001600160a01b0316336001600160a01b03167f46a3bcda1dc0aaf87b1ae498a00c06de1741168a4756a49b3371b9f5bfffbfff85604051610e0191906138e8565b60405180910390a350505050565b60006001600160e01b03198216637965db0b60e01b1480610e4057506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020613ed783398151915291610e8590613c2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb190613c2e565b8015610efe5780601f10610ed357610100808354040283529160200191610efe565b820191906000526020600020905b815481529060010190602001808311610ee157829003601f168201915b505050505091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610f4f5750825b905060008267ffffffffffffffff166001148015610f6c5750303b155b905081158015610f7a575080155b15610f985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fc257845460ff60401b1916600160401b1785555b610fcc88886127ba565b610fd76000876127cc565b50610ff0600080516020613f17833981519152876127cc565b50611009600080516020613f37833981519152876127cc565b50611022600080516020613f77833981519152876127cc565b5061103b600080516020613ef7833981519152876127cc565b50611054600080516020613f97833981519152876127cc565b506003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0389166001600160a01b03199182168117909255600480548085019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054821683179055600580548085019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180548216831790556008805493840181556000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39092018054909216179055831561118657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600061119a612867565b6111a4838361289a565b9392505050565b60085460009082106111d85760405162461bcd60e51b81526004016111cf90613c68565b60405180910390fd5b600882815481106111eb576111eb613c95565b6000918252602090912001546001600160a01b031692915050565b600554600090821061122a5760405162461bcd60e51b81526004016111cf90613c68565b600582815481106111eb576111eb613c95565b6060600580548060200260200160405190810160405280929190818152602001828054801561129557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611277575b5050505050905090565b60006112a9612867565b6001600160a01b03841660009081526006602052604090205460ff161580156112eb57506001600160a01b03831660009081526006602052604090205460ff16155b6113075760405162461bcd60e51b81526004016111cf90613cab565b6113128484846128b2565b949350505050565b6000908152600080516020613fb7833981519152602052604090206001015490565b6003818154811061134c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60606004805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b6007818154811061134c57600080fd5b6113df8261131a565b6113e88161262a565b6113f283836127cc565b50505050565b6001600160a01b03811633146114215760405163334bd91960e11b815260040160405180910390fd5b61142b8282612637565b505050565b6000610e40600080516020613ef783398151915283611b39565b600080516020613f178339815191526114628161262a565b61147a600080516020613f9783398151915284611b39565b6114bc5760405162461bcd60e51b81526020600482015260136024820152724e6f742061206d61737465722073746174757360681b60448201526064016111cf565b6114d4600080516020613f9783398151915284612637565b506114de836128d6565b826001600160a01b0316336001600160a01b03167f51141af7edd82b81899f3a893000cb2e1c6f47358ca77dae02f1de844db3f0b68460405161152191906138e8565b60405180910390a3505050565b6115366129ad565b61153f82612a52565b6115498282612a6a565b5050565b600080516020613f378339815191526115658161262a565b6001600160a01b03841661158b5760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03841660009081526006602052604090205460ff16156115c45760405162461bcd60e51b81526004016111cf90613cab565b60006115de600080516020613f7783398151915286611b39565b1590508015611616576115ff600080516020613f77833981519152866127cc565b5061160985612b27565b6002805485019055611654565b6001600160a01b038516600090815260208190526040902054808511156116465760028054828703019055611652565b60028054868303900390555b505b6001600160a01b038516600081815260208190526040908190208690555133907f127e8015e3ed084165ebcfb6636e0347c3b088218d00989d964c69e434105e5f906116a39088908890613cf6565b60405180910390a35050505050565b600080516020613f178339815191526116ca8161262a565b6001600160a01b0383166116f05760405162461bcd60e51b81526004016111cf90613cd0565b611708600080516020613f9783398151915284611b39565b1561174d5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479206d61737465722073746174757360581b60448201526064016111cf565b611765600080516020613f97833981519152846127cc565b5061176f83612bca565b826001600160a01b0316336001600160a01b03167fd4fd8a370d3fbfae728fd173b1afaeda261c2f6b541ea3a5ec62fa787ab8c7468460405161152191906138e8565b60006117bc612c6d565b50600080516020613f5783398151915290565b6004818154811061134c57600080fd5b6008818154811061134c57600080fd5b60035460009082106118135760405162461bcd60e51b81526004016111cf90613c68565b600382815481106111eb576111eb613c95565b600080516020613f9783398151915261183e8161262a565b611846612cb6565b336001600160a01b03167fa0e83b3d54befde8bdbd53ba97df1aca1fd54ffe2cf64e134912105cfffcaed08360405161187f91906138e8565b60405180910390a25050565b6001600160a01b03166000908152600080516020613ed7833981519152602052604090205490565b600080516020613f778339815191526118cb8161262a565b6118d3612867565b33301461190a573360009081526006602052604090205460ff161561190a5760405162461bcd60e51b81526004016111cf90613cab565b60006119153361188b565b905083600b60008282546119299190613d25565b9091555061193990503385612d19565b6119438482613d38565b600003611960576009805490600061195a83613d4b565b91905055505b604051339081907feab88a0b2198f2928ade5fb787115a9a6ffbbf3705277143953a7c26769157ff90610e019088908890613cf6565b600080516020613f178339815191526119ae8161262a565b6001600160a01b0383166119d45760405162461bcd60e51b81526004016111cf90613cd0565b6119ec600080516020613ef7833981519152846127cc565b506119f683612d4f565b826001600160a01b0316336001600160a01b03167fa9d7450555f9f903f431808251e9b529e0e5dfcc06f78669e335aa3247bed7868460405161152191906138e8565b600080516020613f17833981519152611a518161262a565b6001600160a01b038316611a775760405162461bcd60e51b81526004016111cf90613cd0565b611a8f600080516020613f3783398151915284611b39565b15611ad45760405162461bcd60e51b815260206004820152601560248201527420b63932b0b23c9036b0b9ba32b91036b4b73a32b960591b60448201526064016111cf565b611aec600080516020613f37833981519152846127cc565b50611af683612df2565b826001600160a01b0316336001600160a01b03167f3ab206680c8c27d75c62054a01ac77c5873e81ffe65c180fdb58d971b96d34388460405161152191906138e8565b6000918252600080516020613fb7833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020613ed783398151915291610e8590613c2e565b60606003805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b6005818154811061134c57600080fd5b6000611c2a612867565b3360009081526006602052604090205460ff16158015611c6357506001600160a01b03831660009081526006602052604090205460ff16155b611c7f5760405162461bcd60e51b81526004016111cf90613cab565b6111a48383612e95565b60606008805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b600080516020613f37833981519152611d018161262a565b611d19600080516020613f7783398151915285611b39565b611d545760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b4b73a32b960a11b60448201526064016111cf565b6001600160a01b03841660009081526020819052604090205480841115611d845760028054828603019055611d90565b60028054858303900390555b6001600160a01b038516600081815260208190526040908190208690555133907f2780d98c888fdc59ac7c8628a0bf62a14752d79fbeb234e1f0c76c9b6ce6f542906116a39088908890613cf6565b600080516020613f17833981519152611df78161262a565b611e0f600080516020613f3783398151915284611b39565b611e515760405162461bcd60e51b81526020600482015260136024820152722737ba10309036b0b9ba32b91036b4b73a32b960691b60448201526064016111cf565b611e69600080516020613f3783398151915284612637565b50611e7383612ea3565b826001600160a01b0316336001600160a01b03167f60763ff2f9b370bde86d1d96810ad6ab33c839c6e79c45227314714a3f2686298460405161152191906138e8565b60035460609060008167ffffffffffffffff811115611ed757611ed7613774565b604051908082528060200260200182016040528015611f3c57816020015b611f29604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b815260200190600190039081611ef55790505b50905060005b82811015611fdf57600060038281548110611f5f57611f5f613c95565b60009182526020808320909101546001600160a01b031680835282825260408084205460018452938190205481516080810183528381529384018590529083018190529093509060608101611fb48385613d38565b815250858581518110611fc957611fc9613c95565b6020908102919091010152505050600101611f42565b5092915050565b60606007805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b600754600090821061206a5760405162461bcd60e51b81526004016111cf90613c68565b600782815481106111eb576111eb613c95565b600080516020613f778339815191526120958161262a565b61209d612867565b6001600160a01b0384166120c35760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03841660009081526006602052604090205460ff16156120fc5760405162461bcd60e51b81526004016111cf90613cab565b3360009081526020818152604080832054600190925290912054612121908590613d25565b11156121645760405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b60448201526064016111cf565b3360009081526001602052604081208054859290612183908490613d25565b9250508190555082600a600082825461219c9190613d25565b90915550600090506121ad8561188b565b90506121b98585612f7a565b806000036121d757600980549060006121d183613d62565b91905055505b846001600160a01b0316336001600160a01b03167f0a379200ca4d32ac7f1351005f51ef6d49dae15616e15e868f304fc5469e6d0a86866040516116a3929190613cf6565b6122258261131a565b61222e8161262a565b6113f28383612637565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b600080516020613ef783398151915261229a8161262a565b6001600160a01b0383166122c05760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03831660009081526006602052604090205460ff161561231f5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b60448201526064016111cf565b6001600160a01b038316600081815260066020526040808220805460ff191660019081179091556007805491820181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180546001600160a01b031916831790555133907f41758605cde3a25b22ccad82f1492c23842cbf7039dc5984bbe579d1b8293556906115219086906138e8565b600080516020613f978339815191526123ce8161262a565b6123d6612fb0565b336001600160a01b03167f85b554d52672b7715dcfb02957fc048d23758df2ff9f9946236523fffd0d2e8f8360405161187f91906138e8565b6001600160a01b038116600090815260208181526040808320546001909252822054909161243d8284613d38565b929491935050565b6001600160a01b03821660009081526006602052604090205460ff1661249f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd08189b1858dadb1a5cdd1959608a1b60448201526064016111cf565b6124b7600080516020613ef783398151915233611b39565b806124c157503033145b6124fe5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016111cf565b6001600160a01b0382166000908152600660205260409020805460ff1916905561252782612ff6565b816001600160a01b0316336001600160a01b03167fc58878141048f74383ecb83bd329e1a7329a1270e6e1edcaf6d3f8cfa893049c8360405161256a91906138e8565b60405180910390a35050565b600454600090821061259a5760405162461bcd60e51b81526004016111cf90613c68565b600482815481106111eb576111eb613c95565b600080516020613f178339815191526125c58161262a565b6125dd600080516020613ef783398151915284612637565b506125e7836130cd565b826001600160a01b0316336001600160a01b03167fddb0e0cb0c3574277c61848220221fdba7fec4d9a9677e8de5f605412ec11b8c8460405161152191906138e8565b61263481336131a4565b50565b6000600080516020613fb78339815191526126528484611b39565b156126b3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e40565b6000915050610e40565b60005b60035481101561154957816001600160a01b0316600382815481106126e7576126e7613c95565b6000918252602090912001546001600160a01b0316036127b2576003805461271190600190613d38565b8154811061272157612721613c95565b600091825260209091200154600380546001600160a01b03909216918390811061274d5761274d613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600380548061278c5761278c613d7b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001016126c0565b6127c26131dd565b6115498282613226565b6000600080516020613fb78339815191526127e78484611b39565b6126b3576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561281d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e40565b600080516020613fd78339815191525460ff16156128985760405163d93c066560e01b815260040160405180910390fd5b565b6000336128a8818585613277565b5060019392505050565b6000336128c0858285613284565b6128cb8585856132e5565b506001949350505050565b60005b60055481101561154957816001600160a01b03166005828154811061290057612900613c95565b6000918252602090912001546001600160a01b0316036129a5576005805461292a90600190613d38565b8154811061293a5761293a613c95565b600091825260209091200154600580546001600160a01b03909216918390811061296657612966613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600580548061278c5761278c613d7b565b6001016128d9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a3457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a28600080516020613f57833981519152546001600160a01b031690565b6001600160a01b031614155b156128985760405163703e46dd60e11b815260040160405180910390fd5b600080516020613f178339815191526115498161262a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ac4575060408051601f3d908101601f19168201909252612ac191810190613d91565b60015b612aec57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111cf565b600080516020613f578339815191528114612b1d57604051632a87526960e21b8152600481018290526024016111cf565b61142b8383613344565b60005b600354811015612b7757816001600160a01b031660038281548110612b5157612b51613c95565b6000918252602090912001546001600160a01b031603612b6f575050565b600101612b2a565b50600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b600554811015612c1a57816001600160a01b031660058281548110612bf457612bf4613c95565b6000918252602090912001546001600160a01b031603612c12575050565b600101612bcd565b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146128985760405163703e46dd60e11b815260040160405180910390fd5b612cbe612867565b600080516020613fd7833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b038216612d4357604051634b637e8f60e11b8152600060048201526024016111cf565b6115498260008361339a565b60005b600854811015612d9f57816001600160a01b031660088281548110612d7957612d79613c95565b6000918252602090912001546001600160a01b031603612d97575050565b600101612d52565b50600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b600454811015612e4257816001600160a01b031660048281548110612e1c57612e1c613c95565b6000918252602090912001546001600160a01b031603612e3a575050565b600101612df5565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000336128a88185856132e5565b60005b60045481101561154957816001600160a01b031660048281548110612ecd57612ecd613c95565b6000918252602090912001546001600160a01b031603612f725760048054612ef790600190613d38565b81548110612f0757612f07613c95565b600091825260209091200154600480546001600160a01b039092169183908110612f3357612f33613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061278c5761278c613d7b565b600101612ea6565b6001600160a01b038216612fa45760405163ec442f0560e01b8152600060048201526024016111cf565b6115496000838361339a565b612fb86134ca565b600080516020613fd7833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612cfb565b60005b60075481101561154957816001600160a01b03166007828154811061302057613020613c95565b6000918252602090912001546001600160a01b0316036130c5576007805461304a90600190613d38565b8154811061305a5761305a613c95565b600091825260209091200154600780546001600160a01b03909216918390811061308657613086613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600780548061278c5761278c613d7b565b600101612ff9565b60005b60085481101561154957816001600160a01b0316600882815481106130f7576130f7613c95565b6000918252602090912001546001600160a01b03160361319c576008805461312190600190613d38565b8154811061313157613131613c95565b600091825260209091200154600880546001600160a01b03909216918390811061315d5761315d613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600880548061278c5761278c613d7b565b6001016130d0565b6131ae8282611b39565b6115495760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661289857604051631afcd79f60e31b815260040160405180910390fd5b61322e6131dd565b600080516020613ed78339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036132688482613dfa565b50600481016113f28382613dfa565b61142b83838360016134fa565b60006132908484612238565b90506000198110156113f257818110156132d657604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016111cf565b6113f2848484840360006134fa565b6001600160a01b03831661330f57604051634b637e8f60e11b8152600060048201526024016111cf565b6001600160a01b0382166133395760405163ec442f0560e01b8152600060048201526024016111cf565b61142b83838361339a565b61334d826135d9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156133925761142b828261363e565b6115496136b4565b600080516020613ed78339815191526001600160a01b0384166133d657818160020160008282546133cb9190613d25565b909155506134489050565b6001600160a01b038416600090815260208290526040902054828110156134295760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016111cf565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316613466576002810180548390039055613485565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e0191815260200190565b600080516020613fd78339815191525460ff1661289857604051638dfc202b60e01b815260040160405180910390fd5b600080516020613ed78339815191526001600160a01b0385166135335760405163e602df0560e01b8152600060048201526024016111cf565b6001600160a01b03841661355d57604051634a1406b160e11b8152600060048201526024016111cf565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156135d257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516116a391815260200190565b5050505050565b806001600160a01b03163b60000361360f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111cf565b600080516020613f5783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161365b9190613eba565b600060405180830381855af49150503d8060008114613696576040519150601f19603f3d011682016040523d82523d6000602084013e61369b565b606091505b50915091506136ab8583836136d3565b95945050505050565b34156128985760405163b398979f60e01b815260040160405180910390fd5b6060826136e8576136e38261372f565b6111a4565b81511580156136ff57506001600160a01b0384163b155b1561372857604051639996b31560e01b81526001600160a01b03851660048201526024016111cf565b50806111a4565b80511561373f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461376f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156137a5576137a5613774565b604051601f8501601f19908116603f011681019082821181831017156137cd576137cd613774565b816040528093508581528686860111156137e657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261381157600080fd5b6111a48383356020850161378a565b6000806040838503121561383357600080fd5b61383c83613758565b9150602083013567ffffffffffffffff81111561385857600080fd5b61386485828601613800565b9150509250929050565b60006020828403121561388057600080fd5b81356001600160e01b0319811681146111a457600080fd5b60005b838110156138b357818101518382015260200161389b565b50506000910152565b600081518084526138d4816020860160208601613898565b601f01601f19169290920160200192915050565b6020815260006111a460208301846138bc565b60008060006060848603121561391057600080fd5b833567ffffffffffffffff8082111561392857600080fd5b61393487838801613800565b9450602086013591508082111561394a57600080fd5b5061395786828701613800565b92505061396660408501613758565b90509250925092565b6000806040838503121561398257600080fd5b61398b83613758565b946020939093013593505050565b6000602082840312156139ab57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156139f35783516001600160a01b0316835292840192918401916001016139ce565b50909695505050505050565b600080600060608486031215613a1457600080fd5b613a1d84613758565b9250613a2b60208501613758565b9150604084013590509250925092565b60008060408385031215613a4e57600080fd5b82359150613a5e60208401613758565b90509250929050565b600060208284031215613a7957600080fd5b6111a482613758565b60008060408385031215613a9557600080fd5b613a9e83613758565b9150602083013567ffffffffffffffff811115613aba57600080fd5b8301601f81018513613acb57600080fd5b6138648582356020840161378a565b600080600060608486031215613aef57600080fd5b613af884613758565b925060208401359150604084013567ffffffffffffffff811115613b1b57600080fd5b613b2786828701613800565b9150509250925092565b600060208284031215613b4357600080fd5b813567ffffffffffffffff811115613b5a57600080fd5b61131284828501613800565b60008060408385031215613b7957600080fd5b82359150602083013567ffffffffffffffff81111561385857600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613bf757815180516001600160a01b03168552868101518786015285810151868601526060908101519085015260809093019290850190600101613bb4565b5091979650505050505050565b60008060408385031215613c1757600080fd5b613c2083613758565b9150613a5e60208401613758565b600181811c90821680613c4257607f821691505b602082108103613c6257634e487b7160e01b600052602260045260246000fd5b50919050565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b82815260406020820152600061131260408301846138bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e4057610e40613d0f565b81810381811115610e4057610e40613d0f565b600081613d5a57613d5a613d0f565b506000190190565b600060018201613d7457613d74613d0f565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613da357600080fd5b5051919050565b601f82111561142b576000816000526020600020601f850160051c81016020861015613dd35750805b601f850160051c820191505b81811015613df257828155600101613ddf565b505050505050565b815167ffffffffffffffff811115613e1457613e14613774565b613e2881613e228454613c2e565b84613daa565b602080601f831160018114613e5d5760008415613e455750858301515b600019600386901b1c1916600185901b178555613df2565b600085815260208120601f198616915b82811015613e8c57888601518255948401946001909101908401613e6d565b5085821015613eaa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613ecc818460208701613898565b919091019291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00f988e4fb62b8e14f4820fed03192306ddf4d7dbfa215595ba1c6ba4b76b369ee35369b3a7bb98c90641a907c2fd643ea781341eba72ccffd47cb018c128c48c34d722a319ebda03eb1179096607e87f360b089b3919a0d764a65ea950521a6c9360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a625e2241f7c713e379444aaa3c5b4960dee82d8c1d72b62fa8c250e46c60358b902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212208a6d1ae7c0d53df043a3876944cd272d6e303dee6ba36c39744d2d45b6f572f564736f6c63430008160033",
3529
+ deployedBytecode: "0x60806040526004361061041a5760003560e01c80638a1851131161021e578063c847056911610123578063ddf579ff116100ab578063f1c5faae1161007a578063f1c5faae14610c89578063f5f167e514610ca9578063f864aa4714610cbe578063fe17fbd114610cde578063fe575a8714610cfe57600080fd5b8063ddf579ff14610bf9578063e79faa5814610c19578063e860cb8f14610c39578063f09b220314610c4e57600080fd5b8063d5391393116100f2578063d539139314610b51578063d547741f14610b73578063d89135cd14610b93578063dbac26e914610ba9578063dd62ed3e14610bd957600080fd5b8063c847056914610ada578063cb52a88b14610afc578063cc821f0d14610b11578063d3fc986414610b3157600080fd5b8063a217fddf116101a6578063a9059cbb11610175578063a9059cbb14610a34578063ad3cb1cc14610a54578063b135824a14610a85578063ba6256a814610a9a578063c780f66314610aba57600080fd5b8063a217fddf146109bc578063a2309ff8146109d1578063a40fa11b146109e7578063a6d55d0814610a1457600080fd5b806391a64e5f116101ed57806391a64e5f1461093a57806391d148541461095c57806395d89b411461097c578063a045442c14610991578063a15ea064146109a657600080fd5b80638a185113146108b65780638a6db9c3146108d85780638cd9317d146109055780638dbb94eb1461092557600080fd5b8063313ce567116103245780635407a7cb116102ac578063650e448a1161027b578063650e448a146108215780636da663551461083657806370a08231146108565780637641e6f3146108765780638090a6e01461089657600080fd5b80635407a7cb1461079c578063582f3eba146107bc5780635b7121f8146107dc5780635c975abb146107fc57600080fd5b8063410b2424116102f3578063410b2424146107125780634f1ef2861461073457806350ee165714610747578063523681861461076757806352d1902d1461078757600080fd5b8063313ce5671461069657806336568abe146106b257806339c5fe5b146106d25780633ac722eb146106f257600080fd5b806319fac5f9116103a757806326e3208d1161037657806326e3208d1461060b578063279ad7ab146106215780632b543ccc146106415780632ba5981f146106565780632f2ff15d1461067657600080fd5b806319fac5f9146105945780631a59a995146105b657806323b872dd146105cb578063248a9ca3146105eb57600080fd5b8063077f224a116103ee578063077f224a146104c8578063095ea7b3146104e85780630b71051114610508578063104e087f1461054057806318160ddd1461056057600080fd5b8062e04c841461041f57806301ffc9a71461044157806302f3cdb91461047657806306fdde03146104a6575b600080fd5b34801561042b57600080fd5b5061043f61043a366004613820565b610d37565b005b34801561044d57600080fd5b5061046161045c36600461386e565b610e0f565b60405190151581526020015b60405180910390f35b34801561048257600080fd5b50610498600080516020613f9783398151915281565b60405190815260200161046d565b3480156104b257600080fd5b506104bb610e46565b60405161046d91906138e8565b3480156104d457600080fd5b5061043f6104e33660046138fb565b610f09565b3480156104f457600080fd5b5061046161050336600461396f565b611190565b34801561051457600080fd5b50610528610523366004613999565b6111ab565b6040516001600160a01b03909116815260200161046d565b34801561054c57600080fd5b5061052861055b366004613999565b611206565b34801561056c57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610498565b3480156105a057600080fd5b506105a961123d565b60405161046d91906139b2565b3480156105c257600080fd5b50600454610498565b3480156105d757600080fd5b506104616105e63660046139ff565b61129f565b3480156105f757600080fd5b50610498610606366004613999565b61131a565b34801561061757600080fd5b5061049860025481565b34801561062d57600080fd5b5061052861063c366004613999565b61133c565b34801561064d57600080fd5b506105a9611366565b34801561066257600080fd5b50610528610671366004613999565b6113c6565b34801561068257600080fd5b5061043f610691366004613a3b565b6113d6565b3480156106a257600080fd5b506040516012815260200161046d565b3480156106be57600080fd5b5061043f6106cd366004613a3b565b6113f8565b3480156106de57600080fd5b506104616106ed366004613a67565b611430565b3480156106fe57600080fd5b5061043f61070d366004613820565b61144a565b34801561071e57600080fd5b50610498600080516020613ef783398151915281565b61043f610742366004613a82565b61152e565b34801561075357600080fd5b5061043f610762366004613ada565b61154d565b34801561077357600080fd5b5061043f610782366004613820565b6116b2565b34801561079357600080fd5b506104986117b2565b3480156107a857600080fd5b506105286107b7366004613999565b6117cf565b3480156107c857600080fd5b506105286107d7366004613999565b6117df565b3480156107e857600080fd5b506105286107f7366004613999565b6117ef565b34801561080857600080fd5b50600080516020613fd78339815191525460ff16610461565b34801561082d57600080fd5b50600554610498565b34801561084257600080fd5b5061043f610851366004613b31565b611826565b34801561086257600080fd5b50610498610871366004613a67565b61188b565b34801561088257600080fd5b5061043f610891366004613b66565b6118b3565b3480156108a257600080fd5b5061043f6108b1366004613820565b611996565b3480156108c257600080fd5b50610498600080516020613f1783398151915281565b3480156108e457600080fd5b506104986108f3366004613a67565b60006020819052908152604090205481565b34801561091157600080fd5b5061043f610920366004613820565b611a39565b34801561093157600080fd5b50600354610498565b34801561094657600080fd5b50610498600080516020613f3783398151915281565b34801561096857600080fd5b50610461610977366004613a3b565b611b39565b34801561098857600080fd5b506104bb611b71565b34801561099d57600080fd5b506105a9611bb0565b3480156109b257600080fd5b5061049860095481565b3480156109c857600080fd5b50610498600081565b3480156109dd57600080fd5b50610498600a5481565b3480156109f357600080fd5b50610498610a02366004613a67565b60016020526000908152604090205481565b348015610a2057600080fd5b50610528610a2f366004613999565b611c10565b348015610a4057600080fd5b50610461610a4f36600461396f565b611c20565b348015610a6057600080fd5b506104bb604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a9157600080fd5b506105a9611c89565b348015610aa657600080fd5b5061043f610ab5366004613ada565b611ce9565b348015610ac657600080fd5b5061043f610ad5366004613820565b611ddf565b348015610ae657600080fd5b50610aef611eb6565b60405161046d9190613b97565b348015610b0857600080fd5b506105a9611fe6565b348015610b1d57600080fd5b50610528610b2c366004613999565b612046565b348015610b3d57600080fd5b5061043f610b4c366004613ada565b61207d565b348015610b5d57600080fd5b50610498600080516020613f7783398151915281565b348015610b7f57600080fd5b5061043f610b8e366004613a3b565b61221c565b348015610b9f57600080fd5b50610498600b5481565b348015610bb557600080fd5b50610461610bc4366004613a67565b60066020526000908152604090205460ff1681565b348015610be557600080fd5b50610498610bf4366004613c04565b612238565b348015610c0557600080fd5b5061043f610c14366004613820565b612282565b348015610c2557600080fd5b5061043f610c34366004613b31565b6123b6565b348015610c4557600080fd5b50600754610498565b348015610c5a57600080fd5b50610c6e610c69366004613a67565b61240f565b6040805193845260208401929092529082015260600161046d565b348015610c9557600080fd5b5061043f610ca4366004613820565b612445565b348015610cb557600080fd5b50600854610498565b348015610cca57600080fd5b50610528610cd9366004613999565b612576565b348015610cea57600080fd5b5061043f610cf9366004613820565b6125ad565b348015610d0a57600080fd5b50610461610d19366004613a67565b6001600160a01b031660009081526006602052604090205460ff1690565b600080516020613f37833981519152610d4f8161262a565b6001600160a01b0383166000908152602081905260409020548015610d78576002805482900390555b6001600160a01b0384166000908152602081815260408083208390556001909152812055610db4600080516020613f7783398151915285612637565b50610dbe846126bd565b836001600160a01b0316336001600160a01b03167f46a3bcda1dc0aaf87b1ae498a00c06de1741168a4756a49b3371b9f5bfffbfff85604051610e0191906138e8565b60405180910390a350505050565b60006001600160e01b03198216637965db0b60e01b1480610e4057506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020613ed783398151915291610e8590613c2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb190613c2e565b8015610efe5780601f10610ed357610100808354040283529160200191610efe565b820191906000526020600020905b815481529060010190602001808311610ee157829003601f168201915b505050505091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610f4f5750825b905060008267ffffffffffffffff166001148015610f6c5750303b155b905081158015610f7a575080155b15610f985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fc257845460ff60401b1916600160401b1785555b610fcc88886127ba565b610fd76000876127cc565b50610ff0600080516020613f17833981519152876127cc565b50611009600080516020613f37833981519152876127cc565b50611022600080516020613f77833981519152876127cc565b5061103b600080516020613ef7833981519152876127cc565b50611054600080516020613f97833981519152876127cc565b506003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0389166001600160a01b03199182168117909255600480548085019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054821683179055600580548085019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180548216831790556008805493840181556000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39092018054909216179055831561118657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600061119a612867565b6111a4838361289a565b9392505050565b60085460009082106111d85760405162461bcd60e51b81526004016111cf90613c68565b60405180910390fd5b600882815481106111eb576111eb613c95565b6000918252602090912001546001600160a01b031692915050565b600554600090821061122a5760405162461bcd60e51b81526004016111cf90613c68565b600582815481106111eb576111eb613c95565b6060600580548060200260200160405190810160405280929190818152602001828054801561129557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611277575b5050505050905090565b60006112a9612867565b6001600160a01b03841660009081526006602052604090205460ff161580156112eb57506001600160a01b03831660009081526006602052604090205460ff16155b6113075760405162461bcd60e51b81526004016111cf90613cab565b6113128484846128b2565b949350505050565b6000908152600080516020613fb7833981519152602052604090206001015490565b6003818154811061134c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60606004805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b6007818154811061134c57600080fd5b6113df8261131a565b6113e88161262a565b6113f283836127cc565b50505050565b6001600160a01b03811633146114215760405163334bd91960e11b815260040160405180910390fd5b61142b8282612637565b505050565b6000610e40600080516020613ef783398151915283611b39565b600080516020613f178339815191526114628161262a565b61147a600080516020613f9783398151915284611b39565b6114bc5760405162461bcd60e51b81526020600482015260136024820152724e6f742061206d61737465722073746174757360681b60448201526064016111cf565b6114d4600080516020613f9783398151915284612637565b506114de836128d6565b826001600160a01b0316336001600160a01b03167f51141af7edd82b81899f3a893000cb2e1c6f47358ca77dae02f1de844db3f0b68460405161152191906138e8565b60405180910390a3505050565b6115366129ad565b61153f82612a52565b6115498282612a6a565b5050565b600080516020613f378339815191526115658161262a565b6001600160a01b03841661158b5760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03841660009081526006602052604090205460ff16156115c45760405162461bcd60e51b81526004016111cf90613cab565b60006115de600080516020613f7783398151915286611b39565b1590508015611616576115ff600080516020613f77833981519152866127cc565b5061160985612b27565b6002805485019055611654565b6001600160a01b038516600090815260208190526040902054808511156116465760028054828703019055611652565b60028054868303900390555b505b6001600160a01b038516600081815260208190526040908190208690555133907f127e8015e3ed084165ebcfb6636e0347c3b088218d00989d964c69e434105e5f906116a39088908890613cf6565b60405180910390a35050505050565b600080516020613f178339815191526116ca8161262a565b6001600160a01b0383166116f05760405162461bcd60e51b81526004016111cf90613cd0565b611708600080516020613f9783398151915284611b39565b1561174d5760405162461bcd60e51b8152602060048201526015602482015274416c7265616479206d61737465722073746174757360581b60448201526064016111cf565b611765600080516020613f97833981519152846127cc565b5061176f83612bca565b826001600160a01b0316336001600160a01b03167fd4fd8a370d3fbfae728fd173b1afaeda261c2f6b541ea3a5ec62fa787ab8c7468460405161152191906138e8565b60006117bc612c6d565b50600080516020613f5783398151915290565b6004818154811061134c57600080fd5b6008818154811061134c57600080fd5b60035460009082106118135760405162461bcd60e51b81526004016111cf90613c68565b600382815481106111eb576111eb613c95565b600080516020613f9783398151915261183e8161262a565b611846612cb6565b336001600160a01b03167fa0e83b3d54befde8bdbd53ba97df1aca1fd54ffe2cf64e134912105cfffcaed08360405161187f91906138e8565b60405180910390a25050565b6001600160a01b03166000908152600080516020613ed7833981519152602052604090205490565b600080516020613f778339815191526118cb8161262a565b6118d3612867565b33301461190a573360009081526006602052604090205460ff161561190a5760405162461bcd60e51b81526004016111cf90613cab565b60006119153361188b565b905083600b60008282546119299190613d25565b9091555061193990503385612d19565b6119438482613d38565b600003611960576009805490600061195a83613d4b565b91905055505b604051339081907feab88a0b2198f2928ade5fb787115a9a6ffbbf3705277143953a7c26769157ff90610e019088908890613cf6565b600080516020613f178339815191526119ae8161262a565b6001600160a01b0383166119d45760405162461bcd60e51b81526004016111cf90613cd0565b6119ec600080516020613ef7833981519152846127cc565b506119f683612d4f565b826001600160a01b0316336001600160a01b03167fa9d7450555f9f903f431808251e9b529e0e5dfcc06f78669e335aa3247bed7868460405161152191906138e8565b600080516020613f17833981519152611a518161262a565b6001600160a01b038316611a775760405162461bcd60e51b81526004016111cf90613cd0565b611a8f600080516020613f3783398151915284611b39565b15611ad45760405162461bcd60e51b815260206004820152601560248201527420b63932b0b23c9036b0b9ba32b91036b4b73a32b960591b60448201526064016111cf565b611aec600080516020613f37833981519152846127cc565b50611af683612df2565b826001600160a01b0316336001600160a01b03167f3ab206680c8c27d75c62054a01ac77c5873e81ffe65c180fdb58d971b96d34388460405161152191906138e8565b6000918252600080516020613fb7833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020613ed783398151915291610e8590613c2e565b60606003805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b6005818154811061134c57600080fd5b6000611c2a612867565b3360009081526006602052604090205460ff16158015611c6357506001600160a01b03831660009081526006602052604090205460ff16155b611c7f5760405162461bcd60e51b81526004016111cf90613cab565b6111a48383612e95565b60606008805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b600080516020613f37833981519152611d018161262a565b611d19600080516020613f7783398151915285611b39565b611d545760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b4b73a32b960a11b60448201526064016111cf565b6001600160a01b03841660009081526020819052604090205480841115611d845760028054828603019055611d90565b60028054858303900390555b6001600160a01b038516600081815260208190526040908190208690555133907f2780d98c888fdc59ac7c8628a0bf62a14752d79fbeb234e1f0c76c9b6ce6f542906116a39088908890613cf6565b600080516020613f17833981519152611df78161262a565b611e0f600080516020613f3783398151915284611b39565b611e515760405162461bcd60e51b81526020600482015260136024820152722737ba10309036b0b9ba32b91036b4b73a32b960691b60448201526064016111cf565b611e69600080516020613f3783398151915284612637565b50611e7383612ea3565b826001600160a01b0316336001600160a01b03167f60763ff2f9b370bde86d1d96810ad6ab33c839c6e79c45227314714a3f2686298460405161152191906138e8565b60035460609060008167ffffffffffffffff811115611ed757611ed7613774565b604051908082528060200260200182016040528015611f3c57816020015b611f29604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b815260200190600190039081611ef55790505b50905060005b82811015611fdf57600060038281548110611f5f57611f5f613c95565b60009182526020808320909101546001600160a01b031680835282825260408084205460018452938190205481516080810183528381529384018590529083018190529093509060608101611fb48385613d38565b815250858581518110611fc957611fc9613c95565b6020908102919091010152505050600101611f42565b5092915050565b60606007805480602002602001604051908101604052809291908181526020018280548015611295576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611277575050505050905090565b600754600090821061206a5760405162461bcd60e51b81526004016111cf90613c68565b600782815481106111eb576111eb613c95565b600080516020613f778339815191526120958161262a565b61209d612867565b6001600160a01b0384166120c35760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03841660009081526006602052604090205460ff16156120fc5760405162461bcd60e51b81526004016111cf90613cab565b3360009081526020818152604080832054600190925290912054612121908590613d25565b11156121645760405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b60448201526064016111cf565b3360009081526001602052604081208054859290612183908490613d25565b9250508190555082600a600082825461219c9190613d25565b90915550600090506121ad8561188b565b90506121b98585612f7a565b806000036121d757600980549060006121d183613d62565b91905055505b846001600160a01b0316336001600160a01b03167f0a379200ca4d32ac7f1351005f51ef6d49dae15616e15e868f304fc5469e6d0a86866040516116a3929190613cf6565b6122258261131a565b61222e8161262a565b6113f28383612637565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b600080516020613ef783398151915261229a8161262a565b6001600160a01b0383166122c05760405162461bcd60e51b81526004016111cf90613cd0565b6001600160a01b03831660009081526006602052604090205460ff161561231f5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b60448201526064016111cf565b6001600160a01b038316600081815260066020526040808220805460ff191660019081179091556007805491820181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180546001600160a01b031916831790555133907f41758605cde3a25b22ccad82f1492c23842cbf7039dc5984bbe579d1b8293556906115219086906138e8565b600080516020613f978339815191526123ce8161262a565b6123d6612fb0565b336001600160a01b03167f85b554d52672b7715dcfb02957fc048d23758df2ff9f9946236523fffd0d2e8f8360405161187f91906138e8565b6001600160a01b038116600090815260208181526040808320546001909252822054909161243d8284613d38565b929491935050565b6001600160a01b03821660009081526006602052604090205460ff1661249f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd08189b1858dadb1a5cdd1959608a1b60448201526064016111cf565b6124b7600080516020613ef783398151915233611b39565b806124c157503033145b6124fe5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016111cf565b6001600160a01b0382166000908152600660205260409020805460ff1916905561252782612ff6565b816001600160a01b0316336001600160a01b03167fc58878141048f74383ecb83bd329e1a7329a1270e6e1edcaf6d3f8cfa893049c8360405161256a91906138e8565b60405180910390a35050565b600454600090821061259a5760405162461bcd60e51b81526004016111cf90613c68565b600482815481106111eb576111eb613c95565b600080516020613f178339815191526125c58161262a565b6125dd600080516020613ef783398151915284612637565b506125e7836130cd565b826001600160a01b0316336001600160a01b03167fddb0e0cb0c3574277c61848220221fdba7fec4d9a9677e8de5f605412ec11b8c8460405161152191906138e8565b61263481336131a4565b50565b6000600080516020613fb78339815191526126528484611b39565b156126b3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e40565b6000915050610e40565b60005b60035481101561154957816001600160a01b0316600382815481106126e7576126e7613c95565b6000918252602090912001546001600160a01b0316036127b2576003805461271190600190613d38565b8154811061272157612721613c95565b600091825260209091200154600380546001600160a01b03909216918390811061274d5761274d613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600380548061278c5761278c613d7b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001016126c0565b6127c26131dd565b6115498282613226565b6000600080516020613fb78339815191526127e78484611b39565b6126b3576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561281d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e40565b600080516020613fd78339815191525460ff16156128985760405163d93c066560e01b815260040160405180910390fd5b565b6000336128a8818585613277565b5060019392505050565b6000336128c0858285613284565b6128cb8585856132e5565b506001949350505050565b60005b60055481101561154957816001600160a01b03166005828154811061290057612900613c95565b6000918252602090912001546001600160a01b0316036129a5576005805461292a90600190613d38565b8154811061293a5761293a613c95565b600091825260209091200154600580546001600160a01b03909216918390811061296657612966613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600580548061278c5761278c613d7b565b6001016128d9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a3457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a28600080516020613f57833981519152546001600160a01b031690565b6001600160a01b031614155b156128985760405163703e46dd60e11b815260040160405180910390fd5b600080516020613f178339815191526115498161262a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ac4575060408051601f3d908101601f19168201909252612ac191810190613d91565b60015b612aec57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111cf565b600080516020613f578339815191528114612b1d57604051632a87526960e21b8152600481018290526024016111cf565b61142b8383613344565b60005b600354811015612b7757816001600160a01b031660038281548110612b5157612b51613c95565b6000918252602090912001546001600160a01b031603612b6f575050565b600101612b2a565b50600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b600554811015612c1a57816001600160a01b031660058281548110612bf457612bf4613c95565b6000918252602090912001546001600160a01b031603612c12575050565b600101612bcd565b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146128985760405163703e46dd60e11b815260040160405180910390fd5b612cbe612867565b600080516020613fd7833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b038216612d4357604051634b637e8f60e11b8152600060048201526024016111cf565b6115498260008361339a565b60005b600854811015612d9f57816001600160a01b031660088281548110612d7957612d79613c95565b6000918252602090912001546001600160a01b031603612d97575050565b600101612d52565b50600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b600454811015612e4257816001600160a01b031660048281548110612e1c57612e1c613c95565b6000918252602090912001546001600160a01b031603612e3a575050565b600101612df5565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000336128a88185856132e5565b60005b60045481101561154957816001600160a01b031660048281548110612ecd57612ecd613c95565b6000918252602090912001546001600160a01b031603612f725760048054612ef790600190613d38565b81548110612f0757612f07613c95565b600091825260209091200154600480546001600160a01b039092169183908110612f3357612f33613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061278c5761278c613d7b565b600101612ea6565b6001600160a01b038216612fa45760405163ec442f0560e01b8152600060048201526024016111cf565b6115496000838361339a565b612fb86134ca565b600080516020613fd7833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612cfb565b60005b60075481101561154957816001600160a01b03166007828154811061302057613020613c95565b6000918252602090912001546001600160a01b0316036130c5576007805461304a90600190613d38565b8154811061305a5761305a613c95565b600091825260209091200154600780546001600160a01b03909216918390811061308657613086613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600780548061278c5761278c613d7b565b600101612ff9565b60005b60085481101561154957816001600160a01b0316600882815481106130f7576130f7613c95565b6000918252602090912001546001600160a01b03160361319c576008805461312190600190613d38565b8154811061313157613131613c95565b600091825260209091200154600880546001600160a01b03909216918390811061315d5761315d613c95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600880548061278c5761278c613d7b565b6001016130d0565b6131ae8282611b39565b6115495760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661289857604051631afcd79f60e31b815260040160405180910390fd5b61322e6131dd565b600080516020613ed78339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036132688482613dfa565b50600481016113f28382613dfa565b61142b83838360016134fa565b60006132908484612238565b90506000198110156113f257818110156132d657604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016111cf565b6113f2848484840360006134fa565b6001600160a01b03831661330f57604051634b637e8f60e11b8152600060048201526024016111cf565b6001600160a01b0382166133395760405163ec442f0560e01b8152600060048201526024016111cf565b61142b83838361339a565b61334d826135d9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156133925761142b828261363e565b6115496136b4565b600080516020613ed78339815191526001600160a01b0384166133d657818160020160008282546133cb9190613d25565b909155506134489050565b6001600160a01b038416600090815260208290526040902054828110156134295760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016111cf565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316613466576002810180548390039055613485565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e0191815260200190565b600080516020613fd78339815191525460ff1661289857604051638dfc202b60e01b815260040160405180910390fd5b600080516020613ed78339815191526001600160a01b0385166135335760405163e602df0560e01b8152600060048201526024016111cf565b6001600160a01b03841661355d57604051634a1406b160e11b8152600060048201526024016111cf565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156135d257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516116a391815260200190565b5050505050565b806001600160a01b03163b60000361360f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111cf565b600080516020613f5783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161365b9190613eba565b600060405180830381855af49150503d8060008114613696576040519150601f19603f3d011682016040523d82523d6000602084013e61369b565b606091505b50915091506136ab8583836136d3565b95945050505050565b34156128985760405163b398979f60e01b815260040160405180910390fd5b6060826136e8576136e38261372f565b6111a4565b81511580156136ff57506001600160a01b0384163b155b1561372857604051639996b31560e01b81526001600160a01b03851660048201526024016111cf565b50806111a4565b80511561373f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b038116811461376f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156137a5576137a5613774565b604051601f8501601f19908116603f011681019082821181831017156137cd576137cd613774565b816040528093508581528686860111156137e657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261381157600080fd5b6111a48383356020850161378a565b6000806040838503121561383357600080fd5b61383c83613758565b9150602083013567ffffffffffffffff81111561385857600080fd5b61386485828601613800565b9150509250929050565b60006020828403121561388057600080fd5b81356001600160e01b0319811681146111a457600080fd5b60005b838110156138b357818101518382015260200161389b565b50506000910152565b600081518084526138d4816020860160208601613898565b601f01601f19169290920160200192915050565b6020815260006111a460208301846138bc565b60008060006060848603121561391057600080fd5b833567ffffffffffffffff8082111561392857600080fd5b61393487838801613800565b9450602086013591508082111561394a57600080fd5b5061395786828701613800565b92505061396660408501613758565b90509250925092565b6000806040838503121561398257600080fd5b61398b83613758565b946020939093013593505050565b6000602082840312156139ab57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156139f35783516001600160a01b0316835292840192918401916001016139ce565b50909695505050505050565b600080600060608486031215613a1457600080fd5b613a1d84613758565b9250613a2b60208501613758565b9150604084013590509250925092565b60008060408385031215613a4e57600080fd5b82359150613a5e60208401613758565b90509250929050565b600060208284031215613a7957600080fd5b6111a482613758565b60008060408385031215613a9557600080fd5b613a9e83613758565b9150602083013567ffffffffffffffff811115613aba57600080fd5b8301601f81018513613acb57600080fd5b6138648582356020840161378a565b600080600060608486031215613aef57600080fd5b613af884613758565b925060208401359150604084013567ffffffffffffffff811115613b1b57600080fd5b613b2786828701613800565b9150509250925092565b600060208284031215613b4357600080fd5b813567ffffffffffffffff811115613b5a57600080fd5b61131284828501613800565b60008060408385031215613b7957600080fd5b82359150602083013567ffffffffffffffff81111561385857600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613bf757815180516001600160a01b03168552868101518786015285810151868601526060908101519085015260809093019290850190600101613bb4565b5091979650505050505050565b60008060408385031215613c1757600080fd5b613c2083613758565b9150613a5e60208401613758565b600181811c90821680613c4257607f821691505b602082108103613c6257634e487b7160e01b600052602260045260246000fd5b50919050565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b82815260406020820152600061131260408301846138bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e4057610e40613d0f565b81810381811115610e4057610e40613d0f565b600081613d5a57613d5a613d0f565b506000190190565b600060018201613d7457613d74613d0f565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613da357600080fd5b5051919050565b601f82111561142b576000816000526020600020601f850160051c81016020861015613dd35750805b601f850160051c820191505b81811015613df257828155600101613ddf565b505050505050565b815167ffffffffffffffff811115613e1457613e14613774565b613e2881613e228454613c2e565b84613daa565b602080601f831160018114613e5d5760008415613e455750858301515b600019600386901b1c1916600185901b178555613df2565b600085815260208120601f198616915b82811015613e8c57888601518255948401946001909101908401613e6d565b5085821015613eaa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613ecc818460208701613898565b919091019291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00f988e4fb62b8e14f4820fed03192306ddf4d7dbfa215595ba1c6ba4b76b369ee35369b3a7bb98c90641a907c2fd643ea781341eba72ccffd47cb018c128c48c34d722a319ebda03eb1179096607e87f360b089b3919a0d764a65ea950521a6c9360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a625e2241f7c713e379444aaa3c5b4960dee82d8c1d72b62fa8c250e46c60358b902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212208a6d1ae7c0d53df043a3876944cd272d6e303dee6ba36c39744d2d45b6f572f564736f6c63430008160033",
3530
+ linkReferences: {},
3531
+ deployedLinkReferences: {}
3532
+ };
3533
+
3534
+ // src/abis/StableCoinBeacon.json
3535
+ var StableCoinBeacon_default = {
3536
+ _format: "hh-sol-artifact-1",
3537
+ contractName: "StableCoinBeacon",
3538
+ sourceName: "contracts/token/StableCoinBeacon.sol",
3539
+ abi: [
3540
+ {
3541
+ inputs: [
3542
+ {
3543
+ internalType: "address",
3544
+ name: "_implementation",
3545
+ type: "address"
3546
+ },
3547
+ {
3548
+ internalType: "address",
3549
+ name: "_owner",
3550
+ type: "address"
3551
+ }
3552
+ ],
3553
+ stateMutability: "nonpayable",
3554
+ type: "constructor"
3555
+ },
3556
+ {
3557
+ inputs: [
3558
+ {
3559
+ internalType: "address",
3560
+ name: "implementation",
3561
+ type: "address"
3562
+ }
3563
+ ],
3564
+ name: "BeaconInvalidImplementation",
3565
+ type: "error"
3566
+ },
3567
+ {
3568
+ inputs: [
3569
+ {
3570
+ internalType: "address",
3571
+ name: "owner",
3572
+ type: "address"
3573
+ }
3574
+ ],
3575
+ name: "OwnableInvalidOwner",
3576
+ type: "error"
3577
+ },
3578
+ {
3579
+ inputs: [
3580
+ {
3581
+ internalType: "address",
3582
+ name: "account",
3583
+ type: "address"
3584
+ }
3585
+ ],
3586
+ name: "OwnableUnauthorizedAccount",
3587
+ type: "error"
3588
+ },
3589
+ {
3590
+ anonymous: false,
3591
+ inputs: [
3592
+ {
3593
+ indexed: true,
3594
+ internalType: "address",
3595
+ name: "previousOwner",
3596
+ type: "address"
3597
+ },
3598
+ {
3599
+ indexed: true,
3600
+ internalType: "address",
3601
+ name: "newOwner",
3602
+ type: "address"
3603
+ }
3604
+ ],
3605
+ name: "OwnershipTransferred",
3606
+ type: "event"
3607
+ },
3608
+ {
3609
+ anonymous: false,
3610
+ inputs: [
3611
+ {
3612
+ indexed: true,
3613
+ internalType: "address",
3614
+ name: "implementation",
3615
+ type: "address"
3616
+ }
3617
+ ],
3618
+ name: "Upgraded",
3619
+ type: "event"
3620
+ },
3621
+ {
3622
+ inputs: [],
3623
+ name: "implementation",
3624
+ outputs: [
3625
+ {
3626
+ internalType: "address",
3627
+ name: "",
3628
+ type: "address"
3629
+ }
3630
+ ],
3631
+ stateMutability: "view",
3632
+ type: "function"
3633
+ },
3634
+ {
3635
+ inputs: [],
3636
+ name: "owner",
3637
+ outputs: [
3638
+ {
3639
+ internalType: "address",
3640
+ name: "",
3641
+ type: "address"
3642
+ }
3643
+ ],
3644
+ stateMutability: "view",
3645
+ type: "function"
3646
+ },
3647
+ {
3648
+ inputs: [],
3649
+ name: "renounceOwnership",
3650
+ outputs: [],
3651
+ stateMutability: "nonpayable",
3652
+ type: "function"
3653
+ },
3654
+ {
3655
+ inputs: [
3656
+ {
3657
+ internalType: "address",
3658
+ name: "newOwner",
3659
+ type: "address"
3660
+ }
3661
+ ],
3662
+ name: "transferOwnership",
3663
+ outputs: [],
3664
+ stateMutability: "nonpayable",
3665
+ type: "function"
3666
+ },
3667
+ {
3668
+ inputs: [
3669
+ {
3670
+ internalType: "address",
3671
+ name: "newImplementation",
3672
+ type: "address"
3673
+ }
3674
+ ],
3675
+ name: "upgradeTo",
3676
+ outputs: [],
3677
+ stateMutability: "nonpayable",
3678
+ type: "function"
3679
+ }
3680
+ ],
3681
+ bytecode: "0x608060405234801561001057600080fd5b5060405161043c38038061043c83398101604081905261002f91610169565b8181806001600160a01b03811661006157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006a8161007d565b50610074826100cd565b5050505061019c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036101035760405163211eb15960e21b81526001600160a01b0382166004820152602401610058565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016457600080fd5b919050565b6000806040838503121561017c57600080fd5b6101858361014d565b91506101936020840161014d565b90509250929050565b610291806101ab6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a36600461022b565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f6100da565b6000546001600160a01b031661007e565b61006f6100c136600461022b565b6100ee565b6100ce61012e565b6100d78161015b565b50565b6100e261012e565b6100ec60006101db565b565b6100f661012e565b6001600160a01b03811661012557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100d7816101db565b6000546001600160a01b031633146100ec5760405163118cdaa760e01b815233600482015260240161011c565b806001600160a01b03163b6000036101915760405163211eb15960e21b81526001600160a01b038216600482015260240161011c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023d57600080fd5b81356001600160a01b038116811461025457600080fd5b939250505056fea26469706673582212201352204bbfcbadbe2a7bb1704ec5756601d167017301b1dfeee3e33bd1f8fa3164736f6c63430008160033",
3682
+ deployedBytecode: "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a36600461022b565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f6100da565b6000546001600160a01b031661007e565b61006f6100c136600461022b565b6100ee565b6100ce61012e565b6100d78161015b565b50565b6100e261012e565b6100ec60006101db565b565b6100f661012e565b6001600160a01b03811661012557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100d7816101db565b6000546001600160a01b031633146100ec5760405163118cdaa760e01b815233600482015260240161011c565b806001600160a01b03163b6000036101915760405163211eb15960e21b81526001600160a01b038216600482015260240161011c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023d57600080fd5b81356001600160a01b038116811461025457600080fd5b939250505056fea26469706673582212201352204bbfcbadbe2a7bb1704ec5756601d167017301b1dfeee3e33bd1f8fa3164736f6c63430008160033",
3683
+ linkReferences: {},
3684
+ deployedLinkReferences: {}
3685
+ };
3686
+
3687
+ // src/sdk/rpc/contracts.ts
3688
+ function abiOf(artifact) {
3689
+ return artifact.abi;
3690
+ }
3691
+ function getContracts(addresses, runner) {
3692
+ if (!addresses.platform) throw new Error("ISOMETRY_PLATFORM_ADDRESS is required");
3693
+ if (!addresses.factory) throw new Error("ISOMETRY_FACTORY_ADDRESS is required");
3694
+ if (!addresses.beacon) throw new Error("ISOMETRY_BEACON_ADDRESS is required");
3695
+ return {
3696
+ platform: new Contract(addresses.platform, abiOf(IsometryPlatform_default), runner),
3697
+ factory: new Contract(addresses.factory, abiOf(StableCoinFactory_default), runner),
3698
+ beacon: new Contract(addresses.beacon, abiOf(StableCoinBeacon_default), runner)
3699
+ };
3700
+ }
3701
+ function getStableCoin(address, runner) {
3702
+ return new Contract(address, abiOf(StableCoin_default), runner);
3703
+ }
3704
+
3705
+ // src/sdk/rpc/platform.ts
3706
+ var PlatformRpcService = class {
3707
+ contracts;
3708
+ platform;
3709
+ constructor(addresses, runner) {
3710
+ this.contracts = getContracts(addresses, runner);
3711
+ this.platform = this.contracts.platform;
3712
+ }
3713
+ async getPlatformInfo() {
3714
+ const [paused, tokenCount, adminCount, issuerCount, accessCount] = await Promise.all([
3715
+ this.platform.paused(),
3716
+ this.platform.getTokenCount(),
3717
+ this.platform.getPlatformAdminCount(),
3718
+ this.platform.getApprovedIssuerCount(),
3719
+ this.platform.getAccessUserCount()
3720
+ ]);
3721
+ return {
3722
+ address: this.platform.target,
3723
+ paused,
3724
+ tokenCount,
3725
+ platformAdminCount: adminCount,
3726
+ approvedIssuerCount: issuerCount,
3727
+ accessUserCount: accessCount
3728
+ };
3729
+ }
3730
+ async getAllTokens() {
3731
+ return this.platform.getAllTokens();
3732
+ }
3733
+ async getAccountRoles(account) {
3734
+ const [isOwner, isPlatformAdmin, isApprovedIssuer, isAccessUser] = await Promise.all([
3735
+ this.platform.isOwner(account),
3736
+ this.platform.isPlatformAdmin(account),
3737
+ this.platform.isApprovedIssuer(account),
3738
+ this.platform.isAccessUser(account)
3739
+ ]);
3740
+ return {
3741
+ address: account,
3742
+ isOwner,
3743
+ isPlatformAdmin,
3744
+ isApprovedIssuer,
3745
+ isAccessUser
3746
+ };
3747
+ }
3748
+ async isPaused() {
3749
+ return this.platform.paused();
3750
+ }
3751
+ };
3752
+
3753
+ // src/sdk/rpc/factory.ts
3754
+ var FactoryRpcService = class {
3755
+ addresses;
3756
+ runner;
3757
+ constructor(addresses, runner) {
3758
+ this.addresses = addresses;
3759
+ this.runner = runner;
3760
+ }
3761
+ async getBeaconAddress() {
3762
+ const { factory } = getContracts(this.addresses, this.runner);
3763
+ return factory.beacon();
3764
+ }
3765
+ async getPlatformAddress() {
3766
+ const { factory } = getContracts(this.addresses, this.runner);
3767
+ return factory.platform();
3768
+ }
3769
+ };
3770
+
3771
+ // src/sdk/rpc/stablecoin.ts
3772
+ var StableCoinRpcService = class {
3773
+ runner;
3774
+ constructor(_addresses, runner) {
3775
+ this.runner = runner;
3776
+ }
3777
+ async getTokenInfo(address) {
3778
+ const token = getStableCoin(address, this.runner);
3779
+ const [name, symbol, decimals, totalSupply, paused] = await Promise.all([
3780
+ token.name(),
3781
+ token.symbol(),
3782
+ token.decimals(),
3783
+ token.totalSupply(),
3784
+ token.paused()
3785
+ ]);
3786
+ return { address, name, symbol, decimals, totalSupply, paused };
3787
+ }
3788
+ async getTokenStats(address) {
3789
+ const token = getStableCoin(address, this.runner);
3790
+ const [holdersTotal, totalMinted, totalBurned, totalAllowance, minterCount, blacklistCount] = await Promise.all([
3791
+ token.holdersTotal(),
3792
+ token.totalMinted(),
3793
+ token.totalBurned(),
3794
+ token.totalAllowance(),
3795
+ token.getMinterCount(),
3796
+ token.getBlacklistCount()
3797
+ ]);
3798
+ return {
3799
+ address,
3800
+ holdersTotal,
3801
+ totalMinted,
3802
+ totalBurned,
3803
+ totalAllowance,
3804
+ mintersCount: minterCount,
3805
+ blacklistCount
3806
+ };
3807
+ }
3808
+ async getUserRoles(address, account) {
3809
+ const token = getStableCoin(address, this.runner);
3810
+ const TOKEN_OWNER_ROLE = await token.TOKEN_OWNER_ROLE();
3811
+ const MASTER_MINTER_ROLE = await token.MASTER_MINTER_ROLE();
3812
+ const MINTER_ROLE = await token.MINTER_ROLE();
3813
+ const BLACKLIST_MANAGER_ROLE = await token.BLACKLIST_MANAGER_ROLE();
3814
+ const MASTER_STATUS_ROLE = await token.MASTER_STATUS_ROLE();
3815
+ const [isTokenOwner, isMasterMinter, isMinter, isBlacklistManager, isMasterStatus] = await Promise.all([
3816
+ token.hasRole(TOKEN_OWNER_ROLE, account),
3817
+ token.hasRole(MASTER_MINTER_ROLE, account),
3818
+ token.hasRole(MINTER_ROLE, account),
3819
+ token.hasRole(BLACKLIST_MANAGER_ROLE, account),
3820
+ token.hasRole(MASTER_STATUS_ROLE, account)
3821
+ ]);
3822
+ return {
3823
+ address,
3824
+ account,
3825
+ isTokenOwner,
3826
+ isMasterMinter,
3827
+ isMinter,
3828
+ isBlacklistManager,
3829
+ isMasterStatus
3830
+ };
3831
+ }
3832
+ async isPaused(address) {
3833
+ const token = getStableCoin(address, this.runner);
3834
+ return token.paused();
3835
+ }
3836
+ async isBlacklisted(address, user) {
3837
+ const token = getStableCoin(address, this.runner);
3838
+ return token.blacklisted(user);
3839
+ }
3840
+ };
3841
+
3842
+ // src/sdk/rpc/errorMap.ts
3843
+ var ERROR_SELECTOR_MAP = {
3844
+ // OpenZeppelin AccessControlUnauthorizedAccount(address account, bytes32 role)
3845
+ // keccak256("AccessControlUnauthorizedAccount(address,bytes32)") = 0x761f22a3
3846
+ // ethers v6 surfaces this as 0xe2517d3f in CALL_EXCEPTION details
3847
+ "0xe2517d3f": {
3848
+ code: "ACCESS_DENIED",
3849
+ message: "AccessControl: missing required role"
3850
+ },
3851
+ "0x761f22a3": {
3852
+ code: "ACCESS_DENIED",
3853
+ message: "AccessControl: missing required role"
3854
+ },
3855
+ // OpenZeppelin AccessControl: account is missing role
3856
+ "0x4e6f6c52": {
3857
+ code: "ACCESS_DENIED",
3858
+ message: "AccessControl: account is missing role"
3859
+ },
3860
+ // ERC20: insufficient balance
3861
+ "0x13be252b": {
3862
+ code: "INSUFFICIENT_BALANCE",
3863
+ message: "ERC20: transfer amount exceeds balance"
3864
+ },
3865
+ // ERC20: insufficient allowance
3866
+ "0xf4d708f0": {
3867
+ code: "INSUFFICIENT_ALLOWANCE",
3868
+ message: "ERC20: insufficient allowance"
3869
+ },
3870
+ // Pausable: paused
3871
+ "0x8d1c0a00": {
3872
+ code: "PAUSED",
3873
+ message: "Pausable: paused"
3874
+ },
3875
+ // ERC20: invalid sender
3876
+ "0xdf24fd05": {
3877
+ code: "INVALID_SENDER",
3878
+ message: "ERC20: invalid sender"
3879
+ },
3880
+ // ERC20: blacklisted
3881
+ "0x12d1b5d1": {
3882
+ code: "BLACKLISTED",
3883
+ message: "ERC20: sender is blacklisted"
3884
+ },
3885
+ // Isometry platform / factory custom errors (observed)
3886
+ "0x1e55aece": {
3887
+ code: "NOT_APPROVED_ISSUER",
3888
+ message: "Not an approved issuer"
3889
+ },
3890
+ "0xf2d4620b": {
3891
+ code: "FACTORY_SYMBOL_EXISTS",
3892
+ message: "Factory: symbol already exists"
3893
+ },
3894
+ "0x3b800a46": {
3895
+ code: "ZERO_ADDRESS",
3896
+ message: "Address cannot be zero"
3897
+ }
3898
+ };
3899
+ function decodeError(details) {
3900
+ if (details.data && details.data !== "0x") {
3901
+ const selector = details.data.slice(0, 10).toLowerCase();
3902
+ const mapped = ERROR_SELECTOR_MAP[selector];
3903
+ if (mapped) return mapped;
3904
+ }
3905
+ if (details.reason) {
3906
+ const reason = details.reason;
3907
+ if (reason === "Not authorized" || reason === "Not approved issuer") {
3908
+ return { code: "ACCESS_DENIED", message: reason };
3909
+ }
3910
+ return { code: "REVERT", message: reason };
3911
+ }
3912
+ if (details.revert?.args) {
3913
+ const name = details.revert.name ?? details.revert.signature ?? "";
3914
+ if (name.includes("AccessControl")) {
3915
+ const [account, role] = details.revert.args;
3916
+ return {
3917
+ code: "ACCESS_DENIED",
3918
+ message: `AccessControl: account ${account} missing role ${role}`
3919
+ };
3920
+ }
3921
+ }
3922
+ return null;
3923
+ }
3924
+
3925
+ // src/sdk/rpc/writeExecutor.ts
3926
+ var WriteExecutor = class {
3927
+ constructor(config) {
3928
+ this.config = config;
3929
+ }
3930
+ config;
3931
+ /** Dry-run: estimate gas without signing. Returns gas estimate or decoded error. */
3932
+ async simulate(call) {
3933
+ if (this.config.wallet.mode === "readonly") {
3934
+ return {
3935
+ ok: false,
3936
+ code: "NO_SIGNER",
3937
+ message: `Cannot simulate: wallet is read-only. Set ISOMETRY_PRIVATE_KEY to enable write operations.`
3938
+ };
3939
+ }
3940
+ try {
3941
+ const fn = this.config.contract.getFunction(call.method);
3942
+ const gasEstimate = await fn.estimateGas(...call.args, call.overrides ?? {});
3943
+ const params = {};
3944
+ fn.fragment.inputs.forEach((input, i) => {
3945
+ params[input.name || `arg${i}`] = call.args[i];
3946
+ });
3947
+ return {
3948
+ ok: true,
3949
+ estimatedGas: gasEstimate,
3950
+ functionFragment: `${call.method}(${fn.fragment.inputs.map((i) => i.type).join(",")})`,
3951
+ params
3952
+ };
3953
+ } catch (err) {
3954
+ const decoded = this.parseRevertError(err);
3955
+ return {
3956
+ ok: false,
3957
+ code: "SIMULATION_FAILED",
3958
+ message: `[simulate] ${decoded.message}`,
3959
+ details: err
3960
+ };
3961
+ }
3962
+ }
3963
+ /** Execute: sign and broadcast, wait for receipt. */
3964
+ async execute(call, confirmations = 1) {
3965
+ if (this.config.wallet.mode === "readonly") {
3966
+ return {
3967
+ ok: false,
3968
+ code: "NO_SIGNER",
3969
+ message: `Cannot execute: wallet is read-only. Set ISOMETRY_PRIVATE_KEY to enable write operations.`
3970
+ };
3971
+ }
3972
+ if (!this.config.wallet.signer) {
3973
+ return {
3974
+ ok: false,
3975
+ code: "NO_SIGNER",
3976
+ message: "Wallet has no signer."
3977
+ };
3978
+ }
3979
+ try {
3980
+ const contract = this.config.contract.connect(this.config.wallet.signer);
3981
+ const fn = contract.getFunction(call.method);
3982
+ const tx = await fn.populateTransaction(...call.args, call.overrides ?? {});
3983
+ const signedTx = await this.config.wallet.signer.sendTransaction(tx);
3984
+ const _receipt = await signedTx.wait(confirmations);
3985
+ if (!_receipt) {
3986
+ return { ok: false, code: "RPC_ERROR", message: "Transaction receipt is null" };
3987
+ }
3988
+ return {
3989
+ ok: true,
3990
+ receipt: {
3991
+ txHash: _receipt.hash,
3992
+ blockNumber: _receipt.blockNumber,
3993
+ blockHash: _receipt.blockHash ?? null,
3994
+ status: _receipt.status ?? null,
3995
+ gasUsed: _receipt.gasUsed,
3996
+ effectiveGasPrice: _receipt.effectiveGasPrice ?? 0n,
3997
+ from: _receipt.from,
3998
+ to: _receipt.to ?? null,
3999
+ nonce: _receipt.nonce,
4000
+ logs: _receipt.logs.map((log) => ({
4001
+ address: log.address,
4002
+ topics: [...log.topics],
4003
+ data: log.data,
4004
+ blockNumber: log.blockNumber
4005
+ }))
4006
+ }
4007
+ };
4008
+ } catch (err) {
4009
+ const decoded = this.parseRevertError(err);
4010
+ return {
4011
+ ok: false,
4012
+ code: decoded.code,
4013
+ message: decoded.message,
4014
+ details: err
4015
+ };
4016
+ }
4017
+ }
4018
+ parseRevertError(err) {
4019
+ if (err && typeof err === "object") {
4020
+ const decoded = decodeError(err);
4021
+ if (decoded) return decoded;
4022
+ }
4023
+ if (!(err instanceof Error)) {
4024
+ return { code: "UNKNOWN", message: String(err) };
4025
+ }
4026
+ const msg = err.message;
4027
+ if (msg.includes("insufficient funds")) return { code: "INSUFFICIENT_BALANCE", message: "insufficient funds for gas" };
4028
+ if (msg.includes("nonce")) return { code: "RPC_ERROR", message: "nonce error (tx may already be mined)" };
4029
+ if (msg.includes("read-only")) return { code: "NO_SIGNER", message: "wallet is read-only" };
4030
+ return { code: "REVERT", message: msg.slice(0, 200) };
4031
+ }
4032
+ };
4033
+ function makeWriteMeta(command) {
4034
+ return {
4035
+ chainId: 11155111,
4036
+ source: "rpc",
4037
+ timestamp: Math.floor(Date.now() / 1e3),
4038
+ ...command ? { command } : {}
4039
+ };
4040
+ }
4041
+
4042
+ // src/sdk/graph/client.ts
4043
+ import { GraphQLClient } from "graphql-request";
4044
+ var GraphError = class extends Error {
4045
+ constructor(message, code, details) {
4046
+ super(message);
4047
+ this.code = code;
4048
+ this.details = details;
4049
+ this.name = "GraphError";
4050
+ }
4051
+ code;
4052
+ details;
4053
+ };
4054
+ var GraphClient = class {
4055
+ client;
4056
+ constructor(config) {
4057
+ this.client = new GraphQLClient(config.endpoint, {
4058
+ headers: config.headers
4059
+ });
4060
+ }
4061
+ /**
4062
+ * Execute a raw GraphQL query.
4063
+ * @param query - GraphQL query string
4064
+ * @param variables - Optional query variables
4065
+ */
4066
+ async query(query, variables) {
4067
+ try {
4068
+ return await this.client.request(query, variables);
4069
+ } catch (err) {
4070
+ throw this.normalizeError(err);
4071
+ }
4072
+ }
4073
+ /**
4074
+ * Ping the subgraph — useful for health checks.
4075
+ * Returns current block number or throws.
4076
+ */
4077
+ async ping() {
4078
+ const data = await this.query(`query { _meta { block { number hash } deployment } }`);
4079
+ if (!data._meta) throw new GraphError("No _meta", "PARSE_ERROR");
4080
+ return {
4081
+ number: data._meta.block.number,
4082
+ hash: data._meta.block.hash,
4083
+ deployment: data._meta.deployment
4084
+ };
4085
+ }
4086
+ // ─── Private ────────────────────────────────────────────────────────────────
4087
+ normalizeError(err) {
4088
+ if (err instanceof GraphError) return err;
4089
+ if (err instanceof Error) {
4090
+ const graphErr = err.response;
4091
+ if (graphErr?.errors) {
4092
+ return new GraphError(
4093
+ `Subgraph error: ${JSON.stringify(graphErr.errors)}`,
4094
+ "SUBGRAPH_ERROR",
4095
+ graphErr.errors
4096
+ );
4097
+ }
4098
+ if (err.message.includes("fetch") || err.message.includes("ECONNREFUSED") || err.message.includes("timeout")) {
4099
+ return new GraphError(`Network error: ${err.message}`, "NETWORK_ERROR", err);
4100
+ }
4101
+ return new GraphError(err.message, "UNKNOWN", err);
4102
+ }
4103
+ return new GraphError("Unknown error", "UNKNOWN", err);
4104
+ }
4105
+ };
4106
+
4107
+ // src/sdk/graph/queries.ts
4108
+ var TOKENS_QUERY = `
4109
+ query Tokens($first: Int!, $skip: Int!) {
4110
+ tokens(first: $first, skip: $skip, orderBy: createdAt, orderDirection: desc) {
4111
+ id
4112
+ address
4113
+ name
4114
+ symbol
4115
+ decimals
4116
+ creator
4117
+ createdAt
4118
+ status
4119
+ activeHolderCount
4120
+ totalMintCount
4121
+ totalMintAmount
4122
+ totalBurnCount
4123
+ totalBurnAmount
4124
+ lastUpdatedAt
4125
+ }
4126
+ }
4127
+ `;
4128
+ var TOKEN_BY_ID_QUERY = `
4129
+ query TokenById($id: ID!) {
4130
+ token(id: $id) {
4131
+ id
4132
+ address
4133
+ name
4134
+ symbol
4135
+ decimals
4136
+ creator
4137
+ createdAt
4138
+ status
4139
+ activeHolderCount
4140
+ totalMintCount
4141
+ totalMintAmount
4142
+ totalBurnCount
4143
+ totalBurnAmount
4144
+ lastUpdatedAt
4145
+ }
4146
+ }
4147
+ `;
4148
+ var TOKEN_REGISTERED_EVENTS_QUERY = `
4149
+ query TokenRegisteredEvents($first: Int!, $skip: Int!) {
4150
+ tokenRegisteredEvents(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: desc) {
4151
+ id
4152
+ operator
4153
+ token
4154
+ name
4155
+ symbol
4156
+ memo
4157
+ blockNumber
4158
+ timestamp
4159
+ transactionHash
4160
+ }
4161
+ }
4162
+ `;
4163
+ var MINT_EVENTS_QUERY = `
4164
+ query MintEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4165
+ mintEvents(
4166
+ first: $first
4167
+ skip: $skip
4168
+ where: { token: $token }
4169
+ orderBy: blockNumber
4170
+ orderDirection: desc
4171
+ ) {
4172
+ id
4173
+ token
4174
+ operator
4175
+ to
4176
+ amount
4177
+ memo
4178
+ blockNumber
4179
+ timestamp
4180
+ transactionHash
4181
+ }
4182
+ }
4183
+ `;
4184
+ var BURN_EVENTS_QUERY = `
4185
+ query BurnEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4186
+ burnEvents(
4187
+ first: $first
4188
+ skip: $skip
4189
+ where: { token: $token }
4190
+ orderBy: blockNumber
4191
+ orderDirection: desc
4192
+ ) {
4193
+ id
4194
+ token
4195
+ operator
4196
+ from
4197
+ amount
4198
+ memo
4199
+ blockNumber
4200
+ timestamp
4201
+ transactionHash
4202
+ }
4203
+ }
4204
+ `;
4205
+ var PAUSE_EVENTS_QUERY = `
4206
+ query PauseEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4207
+ pauseEvents(
4208
+ first: $first
4209
+ skip: $skip
4210
+ where: { token: $token }
4211
+ orderBy: blockNumber
4212
+ orderDirection: desc
4213
+ ) {
4214
+ id
4215
+ token
4216
+ account
4217
+ action
4218
+ blockNumber
4219
+ timestamp
4220
+ transactionHash
4221
+ }
4222
+ }
4223
+ `;
4224
+ var PAUSED_BY_OWNER_EVENTS_QUERY = `
4225
+ query PausedByOwnerEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4226
+ pausedByOwnerEvents(
4227
+ first: $first
4228
+ skip: $skip
4229
+ where: { token: $token }
4230
+ orderBy: blockNumber
4231
+ orderDirection: desc
4232
+ ) {
4233
+ id
4234
+ token
4235
+ account
4236
+ memo
4237
+ blockNumber
4238
+ timestamp
4239
+ transactionHash
4240
+ }
4241
+ }
4242
+ `;
4243
+ var UNPAUSED_BY_OWNER_EVENTS_QUERY = `
4244
+ query UnpausedByOwnerEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4245
+ unpausedByOwnerEvents(
4246
+ first: $first
4247
+ skip: $skip
4248
+ where: { token: $token }
4249
+ orderBy: blockNumber
4250
+ orderDirection: desc
4251
+ ) {
4252
+ id
4253
+ token
4254
+ account
4255
+ memo
4256
+ blockNumber
4257
+ timestamp
4258
+ transactionHash
4259
+ }
4260
+ }
4261
+ `;
4262
+ var BLACKLIST_EVENTS_QUERY = `
4263
+ query BlacklistEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4264
+ blacklistEvents(
4265
+ first: $first
4266
+ skip: $skip
4267
+ where: { token: $token }
4268
+ orderBy: blockNumber
4269
+ orderDirection: desc
4270
+ ) {
4271
+ id
4272
+ token
4273
+ operator
4274
+ user
4275
+ action
4276
+ memo
4277
+ blockNumber
4278
+ timestamp
4279
+ transactionHash
4280
+ }
4281
+ }
4282
+ `;
4283
+ var TRANSFER_EVENTS_QUERY = `
4284
+ query TransferEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4285
+ transferEvents(
4286
+ first: $first
4287
+ skip: $skip
4288
+ where: { token: $token }
4289
+ orderBy: blockNumber
4290
+ orderDirection: desc
4291
+ ) {
4292
+ id
4293
+ token
4294
+ from
4295
+ to
4296
+ amount
4297
+ blockNumber
4298
+ timestamp
4299
+ transactionHash
4300
+ }
4301
+ }
4302
+ `;
4303
+ var TOKEN_HOLDERS_QUERY = `
4304
+ query TokenHolders($token: Bytes!, $first: Int!, $skip: Int!) {
4305
+ tokenHolders(
4306
+ first: $first
4307
+ skip: $skip
4308
+ where: { token: $token }
4309
+ orderBy: balance
4310
+ orderDirection: desc
4311
+ ) {
4312
+ id
4313
+ token
4314
+ address
4315
+ balance
4316
+ firstSeenAt
4317
+ hasMinted
4318
+ hasBurned
4319
+ }
4320
+ }
4321
+ `;
4322
+ var TOKEN_24H_SNAPSHOT_QUERY = `
4323
+ query Token24hSnapshot($token: Bytes!) {
4324
+ token24hSnapshot(id: $token) {
4325
+ id
4326
+ token
4327
+ mintAmount24h
4328
+ burnAmount24h
4329
+ mintCount24h
4330
+ burnCount24h
4331
+ lastUpdatedAt
4332
+ }
4333
+ }
4334
+ `;
4335
+ var PLATFORM_ADMINS_QUERY = `
4336
+ query PlatformAdmins($first: Int!, $skip: Int!) {
4337
+ platformAdmins(first: $first, skip: $skip, orderBy: addedAt, orderDirection: desc) {
4338
+ id
4339
+ account
4340
+ isActive
4341
+ lastOperator
4342
+ addedAt
4343
+ removedAt
4344
+ addedCount
4345
+ removedCount
4346
+ lastUpdatedAt
4347
+ }
4348
+ }
4349
+ `;
4350
+ var APPROVED_ISSUERS_QUERY = `
4351
+ query ApprovedIssuers($first: Int!, $skip: Int!) {
4352
+ approvedIssuers(first: $first, skip: $skip, orderBy: addedAt, orderDirection: desc) {
4353
+ id
4354
+ account
4355
+ isActive
4356
+ lastOperator
4357
+ addedAt
4358
+ removedAt
4359
+ addedCount
4360
+ removedCount
4361
+ lastUpdatedAt
4362
+ }
4363
+ }
4364
+ `;
4365
+ var ACCESS_USERS_QUERY = `
4366
+ query AccessUsers($first: Int!, $skip: Int!) {
4367
+ accessUsers(first: $first, skip: $skip, orderBy: addedAt, orderDirection: desc) {
4368
+ id
4369
+ account
4370
+ isActive
4371
+ lastOperator
4372
+ addedAt
4373
+ removedAt
4374
+ addedCount
4375
+ removedCount
4376
+ lastUpdatedAt
4377
+ }
4378
+ }
4379
+ `;
4380
+ var FACTORY_INITIALIZED_EVENTS_QUERY = `
4381
+ query FactoryInitializedEvents($first: Int!, $skip: Int!) {
4382
+ factoryInitializedEvents(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: desc) {
4383
+ id
4384
+ version
4385
+ blockNumber
4386
+ timestamp
4387
+ transactionHash
4388
+ }
4389
+ }
4390
+ `;
4391
+ var FACTORY_SET_EVENTS_QUERY = `
4392
+ query FactorySetEvents($first: Int!, $skip: Int!) {
4393
+ factorySetEvents(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: desc) {
4394
+ id
4395
+ operator
4396
+ oldFactory
4397
+ newFactory
4398
+ blockNumber
4399
+ timestamp
4400
+ transactionHash
4401
+ }
4402
+ }
4403
+ `;
4404
+ var MINTER_ADDED_EVENTS_QUERY = `
4405
+ query MinterAddedEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4406
+ minterAddedEvents(
4407
+ first: $first
4408
+ skip: $skip
4409
+ where: { token: $token }
4410
+ orderBy: blockNumber
4411
+ orderDirection: desc
4412
+ ) {
4413
+ id
4414
+ token
4415
+ operator
4416
+ minter
4417
+ memo
4418
+ blockNumber
4419
+ timestamp
4420
+ transactionHash
4421
+ }
4422
+ }
4423
+ `;
4424
+ var MINTER_REMOVED_EVENTS_QUERY = `
4425
+ query MinterRemovedEvents($token: Bytes!, $first: Int!, $skip: Int!) {
4426
+ minterRemovedEvents(
4427
+ first: $first
4428
+ skip: $skip
4429
+ where: { token: $token }
4430
+ orderBy: blockNumber
4431
+ orderDirection: desc
4432
+ ) {
4433
+ id
4434
+ token
4435
+ operator
4436
+ minter
4437
+ memo
4438
+ blockNumber
4439
+ timestamp
4440
+ transactionHash
4441
+ }
4442
+ }
4443
+ `;
4444
+
4445
+ // src/sdk/graph/tokenHistory.ts
4446
+ var DEFAULT_FIRST = 100;
4447
+ var DEFAULT_SKIP = 0;
4448
+ var TokenHistoryService = class {
4449
+ constructor(client) {
4450
+ this.client = client;
4451
+ }
4452
+ client;
4453
+ // ─── Token ─────────────────────────────────────────────────────────────────
4454
+ async getToken(address) {
4455
+ const data = await this.client.query(
4456
+ TOKEN_BY_ID_QUERY,
4457
+ { id: address }
4458
+ );
4459
+ return data.token;
4460
+ }
4461
+ async getTokens(first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4462
+ const data = await this.client.query(TOKENS_QUERY, {
4463
+ first,
4464
+ skip
4465
+ });
4466
+ return data.tokens;
4467
+ }
4468
+ // ─── Creation ──────────────────────────────────────────────────────────────
4469
+ async getTokenCreatedEvents(first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4470
+ const data = await this.client.query(TOKEN_REGISTERED_EVENTS_QUERY, { first, skip });
4471
+ return data.tokenRegisteredEvents;
4472
+ }
4473
+ // ─── Mint / Burn ──────────────────────────────────────────────────────────
4474
+ async getMintHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4475
+ const data = await this.client.query(
4476
+ MINT_EVENTS_QUERY,
4477
+ { token: tokenAddress, first, skip }
4478
+ );
4479
+ return data.mintEvents;
4480
+ }
4481
+ async getBurnHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4482
+ const data = await this.client.query(
4483
+ BURN_EVENTS_QUERY,
4484
+ { token: tokenAddress, first, skip }
4485
+ );
4486
+ return data.burnEvents;
4487
+ }
4488
+ // ─── Transfer ─────────────────────────────────────────────────────────────
4489
+ async getTransferHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4490
+ const data = await this.client.query(
4491
+ TRANSFER_EVENTS_QUERY,
4492
+ { token: tokenAddress, first, skip }
4493
+ );
4494
+ return data.transferEvents;
4495
+ }
4496
+ // ─── Pause ────────────────────────────────────────────────────────────────
4497
+ async getPauseHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4498
+ const data = await this.client.query(
4499
+ PAUSE_EVENTS_QUERY,
4500
+ { token: tokenAddress, first, skip }
4501
+ );
4502
+ return data.pauseEvents;
4503
+ }
4504
+ async getPausedByOwnerHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4505
+ const data = await this.client.query(PAUSED_BY_OWNER_EVENTS_QUERY, { token: tokenAddress, first, skip });
4506
+ return data.pausedByOwnerEvents;
4507
+ }
4508
+ async getUnpausedByOwnerHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4509
+ const data = await this.client.query(UNPAUSED_BY_OWNER_EVENTS_QUERY, { token: tokenAddress, first, skip });
4510
+ return data.unpausedByOwnerEvents;
4511
+ }
4512
+ // ─── Blacklist ────────────────────────────────────────────────────────────
4513
+ async getBlacklistHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4514
+ const data = await this.client.query(
4515
+ BLACKLIST_EVENTS_QUERY,
4516
+ { token: tokenAddress, first, skip }
4517
+ );
4518
+ return data.blacklistEvents;
4519
+ }
4520
+ // ─── Holders ──────────────────────────────────────────────────────────────
4521
+ async getHolders(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4522
+ const data = await this.client.query(
4523
+ TOKEN_HOLDERS_QUERY,
4524
+ { token: tokenAddress, first, skip }
4525
+ );
4526
+ return data.tokenHolders;
4527
+ }
4528
+ // ─── 24h Snapshot ────────────────────────────────────────────────────────
4529
+ async get24hSnapshot(tokenAddress) {
4530
+ const data = await this.client.query(TOKEN_24H_SNAPSHOT_QUERY, { token: tokenAddress });
4531
+ return data.token24hSnapshot;
4532
+ }
4533
+ // ─── Minters ───────────────────────────────────────────────────────────────
4534
+ async getMinterAddedHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4535
+ const data = await this.client.query(MINTER_ADDED_EVENTS_QUERY, { token: tokenAddress, first, skip });
4536
+ return data.minterAddedEvents;
4537
+ }
4538
+ async getMinterRemovedHistory(tokenAddress, first = DEFAULT_FIRST, skip = DEFAULT_SKIP) {
4539
+ const data = await this.client.query(MINTER_REMOVED_EVENTS_QUERY, { token: tokenAddress, first, skip });
4540
+ return data.minterRemovedEvents;
4541
+ }
4542
+ };
4543
+
4544
+ // src/sdk/graph/platformHistory.ts
4545
+ var DEFAULT_FIRST2 = 100;
4546
+ var DEFAULT_SKIP2 = 0;
4547
+ var PlatformHistoryService = class {
4548
+ constructor(client) {
4549
+ this.client = client;
4550
+ }
4551
+ client;
4552
+ // ─── Platform Admins ──────────────────────────────────────────────────────
4553
+ async getPlatformAdmins(first = DEFAULT_FIRST2, skip = DEFAULT_SKIP2) {
4554
+ const data = await this.client.query(
4555
+ PLATFORM_ADMINS_QUERY,
4556
+ { first, skip }
4557
+ );
4558
+ return data.platformAdmins;
4559
+ }
4560
+ async getActivePlatformAdins() {
4561
+ const all = await this.getPlatformAdmins(1e3, 0);
4562
+ return all.filter((a) => a.isActive);
4563
+ }
4564
+ // ─── Approved Issuers ────────────────────────────────────────────────────
4565
+ async getApprovedIssuers(first = DEFAULT_FIRST2, skip = DEFAULT_SKIP2) {
4566
+ const data = await this.client.query(
4567
+ APPROVED_ISSUERS_QUERY,
4568
+ { first, skip }
4569
+ );
4570
+ return data.approvedIssuers;
4571
+ }
4572
+ async getActiveApprovedIssuers() {
4573
+ const all = await this.getApprovedIssuers(1e3, 0);
4574
+ return all.filter((i) => i.isActive);
4575
+ }
4576
+ // ─── Access Users ────────────────────────────────────────────────────────
4577
+ async getAccessUsers(first = DEFAULT_FIRST2, skip = DEFAULT_SKIP2) {
4578
+ const data = await this.client.query(
4579
+ ACCESS_USERS_QUERY,
4580
+ { first, skip }
4581
+ );
4582
+ return data.accessUsers;
4583
+ }
4584
+ async getActiveAccessUsers() {
4585
+ const all = await this.getAccessUsers(1e3, 0);
4586
+ return all.filter((u) => u.isActive);
4587
+ }
4588
+ // ─── Factory Events ─────────────────────────────────────────────────────
4589
+ async getFactoryInitializedEvents(first = DEFAULT_FIRST2, skip = DEFAULT_SKIP2) {
4590
+ const data = await this.client.query(FACTORY_INITIALIZED_EVENTS_QUERY, { first, skip });
4591
+ return data.factoryInitializedEvents;
4592
+ }
4593
+ async getFactorySetEvents(first = DEFAULT_FIRST2, skip = DEFAULT_SKIP2) {
4594
+ const data = await this.client.query(FACTORY_SET_EVENTS_QUERY, { first, skip });
4595
+ return data.factorySetEvents;
4596
+ }
4597
+ };
4598
+
4599
+ // src/sdk/graph/analytics.ts
4600
+ function parseBigInt(value) {
4601
+ return BigInt(value);
4602
+ }
4603
+ function parseBigIntToNumber(value) {
4604
+ return Number(BigInt(value));
4605
+ }
4606
+ var AnalyticsService = class {
4607
+ token;
4608
+ platform;
4609
+ constructor(graph) {
4610
+ this.token = new TokenHistoryService(graph);
4611
+ this.platform = new PlatformHistoryService(graph);
4612
+ }
4613
+ // ─── Token analytics ──────────────────────────────────────────────────────
4614
+ /**
4615
+ * Get a quick supply summary for a token.
4616
+ * Combines live token stats (from GQL) with 24h snapshot.
4617
+ */
4618
+ async getTokenSupplySummary(tokenAddress) {
4619
+ const [token, snapshot] = await Promise.all([
4620
+ this.token.getToken(tokenAddress),
4621
+ this.token.get24hSnapshot(tokenAddress)
4622
+ ]);
4623
+ if (!token) return null;
4624
+ return {
4625
+ tokenAddress,
4626
+ name: token.name,
4627
+ symbol: token.symbol,
4628
+ status: token.status,
4629
+ totalMintAmount: parseBigInt(token.totalMintAmount),
4630
+ totalBurnAmount: parseBigInt(token.totalBurnAmount),
4631
+ netSupply: parseBigInt(token.totalMintAmount) - parseBigInt(token.totalBurnAmount),
4632
+ activeHolderCount: parseBigIntToNumber(token.activeHolderCount),
4633
+ snapshot: snapshot ? {
4634
+ mintAmount24h: parseBigInt(snapshot.mintAmount24h),
4635
+ burnAmount24h: parseBigInt(snapshot.burnAmount24h),
4636
+ mintCount24h: parseBigIntToNumber(snapshot.mintCount24h),
4637
+ burnCount24h: parseBigIntToNumber(snapshot.burnCount24h)
4638
+ } : null
4639
+ };
4640
+ }
4641
+ /**
4642
+ * Get top N holders for a token.
4643
+ * Returns address + balance sorted by balance descending.
4644
+ */
4645
+ async getTopHolders(tokenAddress, limit = 10) {
4646
+ const holders = await this.token.getHolders(tokenAddress, limit, 0);
4647
+ const mapped = holders.map((h) => ({
4648
+ address: h.address,
4649
+ balance: parseBigInt(h.balance)
4650
+ }));
4651
+ return mapped.sort((a, b) => a.balance > b.balance ? -1 : 1);
4652
+ }
4653
+ /**
4654
+ * Get recent activity (mint + burn events) for a token.
4655
+ * Useful for a quick activity feed.
4656
+ */
4657
+ async getRecentActivity(tokenAddress, limit = 20) {
4658
+ const [mints, burns] = await Promise.all([
4659
+ this.token.getMintHistory(tokenAddress, limit, 0),
4660
+ this.token.getBurnHistory(tokenAddress, limit, 0)
4661
+ ]);
4662
+ const events = [
4663
+ ...mints.map((e) => ({
4664
+ type: "mint",
4665
+ txHash: e.transactionHash,
4666
+ blockNumber: parseBigInt(e.blockNumber),
4667
+ timestamp: parseBigInt(e.timestamp),
4668
+ amount: parseBigInt(e.amount),
4669
+ actor: e.operator
4670
+ })),
4671
+ ...burns.map((e) => ({
4672
+ type: "burn",
4673
+ txHash: e.transactionHash,
4674
+ blockNumber: parseBigInt(e.blockNumber),
4675
+ timestamp: parseBigInt(e.timestamp),
4676
+ amount: parseBigInt(e.amount),
4677
+ actor: e.operator
4678
+ }))
4679
+ ];
4680
+ events.sort(
4681
+ (a, b) => a.blockNumber > b.blockNumber ? -1 : 1
4682
+ );
4683
+ return events.slice(0, limit);
4684
+ }
4685
+ /**
4686
+ * Get a holder balance across all their holdings.
4687
+ * Useful for an address summary view.
4688
+ */
4689
+ async getAccountPortfolio(ethAddress) {
4690
+ const tokens = await this.token.getTokens(100, 0);
4691
+ const results = await Promise.all(
4692
+ tokens.map(async (t) => {
4693
+ const holders = await this.token.getHolders(t.address, 1e3, 0);
4694
+ const found = holders.find(
4695
+ (h) => h.address.toLowerCase() === ethAddress.toLowerCase()
4696
+ );
4697
+ return found ? { token: t.address, balance: parseBigInt(found.balance) } : null;
4698
+ })
4699
+ );
4700
+ return results.filter(Boolean);
4701
+ }
4702
+ };
4703
+
4704
+ // src/sdk/graph/index.ts
4705
+ function createGraphClient(config) {
4706
+ const client = new GraphClient(config);
4707
+ return {
4708
+ client,
4709
+ token: new TokenHistoryService(client),
4710
+ platform: new PlatformHistoryService(client),
4711
+ analytics: new AnalyticsService(client)
4712
+ };
4713
+ }
4714
+
4715
+ // src/sdk/client.ts
4716
+ var DEFAULT_ADDRESSES = {
4717
+ platform: "0x062B11C5Ed0F2b1f9B7dFaa7B95737dD221863F7",
4718
+ factory: "0x73D6BC64f4f54F9dF05851216F70F42135d56864",
4719
+ beacon: "0x99d6512B5483DFA003F73F737f87e7DAE9482F89"
4720
+ };
4721
+ function resolveAddresses(env) {
4722
+ return {
4723
+ platform: env.ISOMETRY_PLATFORM_ADDRESS ?? DEFAULT_ADDRESSES.platform,
4724
+ factory: env.ISOMETRY_FACTORY_ADDRESS ?? DEFAULT_ADDRESSES.factory,
4725
+ beacon: env.ISOMETRY_BEACON_ADDRESS ?? DEFAULT_ADDRESSES.beacon
4726
+ };
4727
+ }
4728
+ var SDK_VERSION = "0.4.0";
4729
+ var IsometryClient = class {
4730
+ rpc;
4731
+ graph;
4732
+ config;
4733
+ _wallet;
4734
+ _addresses;
4735
+ _chainId;
4736
+ constructor(config = {}) {
4737
+ const rpcUrl = config.rpcUrl ?? process.env.ISOMETRY_RPC_URL ?? "";
4738
+ const graphUrl = config.graphUrl ?? process.env.ISOMETRY_GRAPH_URL ?? "https://console.isometry.network/graph/subgraphs/name/isometry";
4739
+ const privateKey = config.privateKey ?? process.env.ISOMETRY_PRIVATE_KEY;
4740
+ this._chainId = config.chainId ?? parseInt(process.env.ISOMETRY_CHAIN_ID ?? "11155111");
4741
+ this._wallet = createWallet(rpcUrl, privateKey);
4742
+ this._addresses = config.addresses ?? resolveAddresses(process.env);
4743
+ this.config = {
4744
+ chainId: this._chainId,
4745
+ rpcUrl,
4746
+ graphUrl,
4747
+ addresses: this._addresses,
4748
+ privateKey,
4749
+ walletMode: this._wallet.mode
4750
+ };
4751
+ const runner = this._wallet.provider;
4752
+ this.rpc = {
4753
+ platform: new PlatformRpcService(this._addresses, runner),
4754
+ factory: new FactoryRpcService(this._addresses, runner),
4755
+ token: new StableCoinRpcService(this._addresses, runner)
4756
+ };
4757
+ const graphConfig = { endpoint: graphUrl };
4758
+ const graphResult = createGraphClient(graphConfig);
4759
+ this.graph = graphResult;
4760
+ this.graph.token = new TokenHistoryService(graphResult.client);
4761
+ this.graph.platform = new PlatformHistoryService(graphResult.client);
4762
+ this.graph.analytics = new AnalyticsService(graphResult.client);
4763
+ }
4764
+ /** Validate chain ID matches configured value */
4765
+ async validateChain() {
4766
+ const network = await this._wallet.provider.getNetwork();
4767
+ if (Number(network.chainId) !== this._chainId) {
4768
+ throw new Error(
4769
+ `Chain ID mismatch: expected ${this._chainId}, got ${network.chainId}`
4770
+ );
4771
+ }
4772
+ }
4773
+ /** Get connected address (null if read-only) */
4774
+ async getAddress() {
4775
+ return this._wallet.getAddress();
4776
+ }
4777
+ async destroy() {
4778
+ }
4779
+ };
4780
+ function createClient(config) {
4781
+ return new IsometryClient(config);
4782
+ }
4783
+ export {
4784
+ AnalyticsService,
4785
+ ERROR_SELECTOR_MAP,
4786
+ GraphClient,
4787
+ GraphError,
4788
+ PlatformHistoryService,
4789
+ PrivateKeyWallet,
4790
+ ReadOnlyWallet,
4791
+ SDK_VERSION,
4792
+ TokenHistoryService,
4793
+ WriteExecutor,
4794
+ createClient,
4795
+ createGraphClient,
4796
+ createWallet,
4797
+ decodeError,
4798
+ getContracts,
4799
+ getStableCoin,
4800
+ makeWriteMeta
4801
+ };
4802
+ //# sourceMappingURL=index.js.map