1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
|
{
"contractName": "NodeStakerMock",
"abi": [
{
"constant": true,
"inputs": [],
"name": "registered",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "key",
"type": "bytes"
}
],
"name": "replaceNodePublicKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "vest",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "availableUnstakeAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "unstakeByFoundation",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getStakedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getUnstakedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "publicKey",
"type": "bytes"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "email",
"type": "string"
},
{
"internalType": "string",
"name": "location",
"type": "string"
},
{
"internalType": "string",
"name": "url",
"type": "string"
}
],
"name": "register",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isFoundation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnershipByFoundation",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
}
],
"name": "setFoundationAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vested",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "publicKey",
"type": "bytes"
},
{
"indexed": false,
"internalType": "string",
"name": "name",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "email",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "location",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "url",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "NodeRegister",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "NodeDeposited",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "NodeVested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "NodeWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "oldKey",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "newKey",
"type": "bytes"
}
],
"name": "NodePublicKeyReplaced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "UnstakedByFoundation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "OwnershipTranferedByFoundation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "govAddress",
"type": "address"
}
],
"name": "setGovernance",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"replaceNodePublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"vest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"availableUnstakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstakeByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getStakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"govAddress\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getUnstakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isFoundation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnershipByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setFoundationAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vested\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NodeRegister\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeVested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"oldKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newKey\",\"type\":\"bytes\"}],\"name\":\"NodePublicKeyReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnstakedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTranferedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"register(bytes,string,string,string,string)\":{\"details\":\"register a node\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"replaceNodePublicKey(bytes)\":{\"details\":\"replace node public key\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}},\"transferOwnershipByFoundation(address)\":{\"details\":\"transfer node ownership\"},\"unstakeByFoundation(uint256)\":{\"details\":\"unstake by foundation\"},\"vest(uint256)\":{\"details\":\"vest\"},\"withdraw()\":{\"details\":\"withdraw balance\"}}},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"},\"unstakeByFoundation(uint256)\":{\"notice\":\"only can unstake vested amount\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol\":\"NodeStakerMock\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol\":{\"keccak256\":\"0xf7a0313191c80af18efbb2c914fa12bf5a96fb5a43c20c21371f67bcaf449bcf\",\"urls\":[\"bzz-raw://6bc9950f402bb1654e0ab1b1357fa857f6bd6e8a5863b9ca7e59d97b51ebd1ab\",\"dweb:/ipfs/QmeWak99q7rfSZzV79n5GhFQZTeZHhkoV4Loxw6sFmiQC4\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol\":{\"keccak256\":\"0xcfdc3785ac2c5c1937e80ca46b030d083952a66f22732cd80e440cc45675ea62\",\"urls\":[\"bzz-raw://5f33f67e58c7ddc0f100cd2fbe89f2a0a0169bda17742a3d633df62a7921d051\",\"dweb:/ipfs/QmSHtHd9VBagDzc4FaKRZ56pZkZ9Nu1AA7YjwyokhFRU5q\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol\":{\"keccak256\":\"0x2e7b39e18d5a0a27afee23974ec54491286ece6f89c12818ee67829a4e5be905\",\"urls\":[\"bzz-raw://aeb7693cf5be3214117b4949c90e9dee3b8bce27f1bf9ffaa8952eb20faacffe\",\"dweb:/ipfs/Qmc15ZPPcRK54dDnVMfXiTE8abdbdSrcX3kwjtFjVuENVm\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol\":{\"keccak256\":\"0xc508a041aba17236f20669f722aad4f1cc0f41d37909d0ab8c55501c0255123b\",\"urls\":[\"bzz-raw://9171044c0e848711cce691f493936323ca8a7875a0acc2994a1a4d9c6252020d\",\"dweb:/ipfs/QmUykMgjhgQgFrkHXfVY1e7WsMqC1VyGraPTGYXnw4j4Am\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]}},\"version\":1}",
"bytecode": "0x60806040819052600280546001600160a01b031990811673246fcde58581e2754f215a523c0718c4bfc8041f179091556000805490911633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b031916331790556124198061008b6000396000f3fe6080604052600436106101095760003560e01c8063a4e15db911610095578063d392a7d511610064578063d392a7d51461062e578063e97b387414610643578063f2fde38b14610676578063f41377ca146106a9578063fea5657c146106dc57610109565b8063a4e15db91461030c578063ab033ea914610321578063b244fdcb14610354578063d242f4cc1461036957610109565b80636d6c12f3116100dc5780636d6c12f314610260578063715018a61461028757806375fc0e0d1461029c5780638da5cb5b146102c65780638f32d59b146102f757610109565b80632de40ce3146101455780633ccfd60b1461016e5780633f007c20146101855780636a760b8014610236575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561015157600080fd5b5061015a6106f1565b604080519115158252519081900360200190f35b34801561017a57600080fd5b50610183610701565b005b34801561019157600080fd5b50610183600480360360208110156101a857600080fd5b810190602081018135600160201b8111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111600160201b831117156101f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108bc945050505050565b34801561024257600080fd5b506101836004803603602081101561025957600080fd5b5035610fba565b34801561026c57600080fd5b506102756110ba565b60408051918252519081900360200190f35b34801561029357600080fd5b506101836110c0565b3480156102a857600080fd5b50610183600480360360208110156102bf57600080fd5b503561111b565b3480156102d257600080fd5b506102db6112aa565b604080516001600160a01b039092168252519081900360200190f35b34801561030357600080fd5b5061015a6112b9565b34801561031857600080fd5b506102756112ca565b34801561032d57600080fd5b506101836004803603602081101561034457600080fd5b50356001600160a01b031661174e565b34801561036057600080fd5b50610275611781565b34801561037557600080fd5b50610183600480360360a081101561038c57600080fd5b810190602081018135600160201b8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111600160201b831117156103d957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561042b57600080fd5b82018360208201111561043d57600080fd5b803590602001918460018302840111600160201b8311171561045e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104b057600080fd5b8201836020820111156104c257600080fd5b803590602001918460018302840111600160201b831117156104e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105ba57600080fd5b8201836020820111156105cc57600080fd5b803590602001918460018302840111600160201b831117156105ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c08945050505050565b34801561063a57600080fd5b5061015a6121bb565b34801561064f57600080fd5b506101836004803603602081101561066657600080fd5b50356001600160a01b03166121cc565b34801561068257600080fd5b506101836004803603602081101561069957600080fd5b50356001600160a01b0316612275565b3480156106b557600080fd5b50610183600480360360208110156106cc57600080fd5b50356001600160a01b0316612292565b3480156106e857600080fd5b506102756122ff565b600254600160a01b900460ff1681565b6107096112b9565b61071257600080fd5b600254600160a01b900460ff16610765576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b50511561084d57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b6108c46112b9565b6108cd57600080fd5b600254600160a01b900460ff16610920576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109eb57600080fd5b505afa1580156109ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610140811015610a2957600080fd5b815160208301805160405192949293830192919084600160201b821115610a4f57600080fd5b908301906020820185811115610a6457600080fd5b8251600160201b811182820188101715610a7d57600080fd5b82525081516020918201929091019080838360005b83811015610aaa578181015183820152602001610a92565b50505050905090810190601f168015610ad75780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610b0757600080fd5b908301906020820185811115610b1c57600080fd5b8251600160201b811182820188101715610b3557600080fd5b82525081516020918201929091019080838360005b83811015610b62578181015183820152602001610b4a565b50505050905090810190601f168015610b8f5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610bb157600080fd5b908301906020820185811115610bc657600080fd5b8251600160201b811182820188101715610bdf57600080fd5b82525081516020918201929091019080838360005b83811015610c0c578181015183820152602001610bf4565b50505050905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c5b57600080fd5b908301906020820185811115610c7057600080fd5b8251600160201b811182820188101715610c8957600080fd5b82525081516020918201929091019080838360005b83811015610cb6578181015183820152602001610c9e565b50505050905090810190601f168015610ce35780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610d0557600080fd5b908301906020820185811115610d1a57600080fd5b8251600160201b811182820188101715610d3357600080fd5b82525081516020918201929091019080838360005b83811015610d60578181015183820152602001610d48565b50505050905090810190601f168015610d8d5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e51578181015183820152602001610e39565b50505050905090810190601f168015610e7e5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610f19578181015183820152602001610f01565b50505050905090810190601f168015610f465780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f79578181015183820152602001610f61565b50505050905090810190601f168015610fa65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610fc26121bb565b611005576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff16611058576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461106b908263ffffffff61230516565b600355600454611081908263ffffffff61230516565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b6110c86112b9565b6110d157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111236121bb565b611166576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff166111b9576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111fa5760405162461bcd60e51b81526004018080602001828103825260438152602001806123a26043913960600191505060405180910390fd5b60045461120d908263ffffffff61231e16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156113d457600080fd5b815160208301805160405192949293830192919084600160201b8211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b8251600160201b81118282018810171561142857600080fd5b82525081516020918201929091019080838360005b8381101561145557818101518382015260200161143d565b50505050905090810190601f1680156114825780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156114b257600080fd5b9083019060208201858111156114c757600080fd5b8251600160201b8111828201881017156114e057600080fd5b82525081516020918201929091019080838360005b8381101561150d5781810151838201526020016114f5565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561155c57600080fd5b90830190602082018581111561157157600080fd5b8251600160201b81118282018810171561158a57600080fd5b82525081516020918201929091019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561160657600080fd5b90830190602082018581111561161b57600080fd5b8251600160201b81118282018810171561163457600080fd5b82525081516020918201929091019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156116b057600080fd5b9083019060208201858111156116c557600080fd5b8251600160201b8111828201881017156116de57600080fd5b82525081516020918201929091019080838360005b8381101561170b5781810151838201526020016116f3565b50505050905090810190601f1680156117385780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b6117566112b9565b61175f57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561188b57600080fd5b815160208301805160405192949293830192919084600160201b8211156118b157600080fd5b9083019060208201858111156118c657600080fd5b8251600160201b8111828201881017156118df57600080fd5b82525081516020918201929091019080838360005b8381101561190c5781810151838201526020016118f4565b50505050905090810190601f1680156119395780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561196957600080fd5b90830190602082018581111561197e57600080fd5b8251600160201b81118282018810171561199757600080fd5b82525081516020918201929091019080838360005b838110156119c45781810151838201526020016119ac565b50505050905090810190601f1680156119f15780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a1357600080fd5b908301906020820185811115611a2857600080fd5b8251600160201b811182820188101715611a4157600080fd5b82525081516020918201929091019080838360005b83811015611a6e578181015183820152602001611a56565b50505050905090810190601f168015611a9b5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611abd57600080fd5b908301906020820185811115611ad257600080fd5b8251600160201b811182820188101715611aeb57600080fd5b82525081516020918201929091019080838360005b83811015611b18578181015183820152602001611b00565b50505050905090810190601f168015611b455780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611b6757600080fd5b908301906020820185811115611b7c57600080fd5b8251600160201b811182820188101715611b9557600080fd5b82525081516020918201929091019080838360005b83811015611bc2578181015183820152602001611baa565b50505050905090810190601f168015611bef5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611c106112b9565b611c1957600080fd5b600254600160a01b900460ff1615611c6d576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611d61578181015183820152602001611d49565b50505050905090810190601f168015611d8e5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611dc1578181015183820152602001611da9565b50505050905090810190601f168015611dee5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611e21578181015183820152602001611e09565b50505050905090810190601f168015611e4e5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e81578181015183820152602001611e69565b50505050905090810190601f168015611eae5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611ee1578181015183820152602001611ec9565b50505050905090810190601f168015611f0e5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611fef578181015183820152602001611fd7565b50505050905090810190601f16801561201c5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561204f578181015183820152602001612037565b50505050905090810190601f16801561207c5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156120af578181015183820152602001612097565b50505050905090810190601f1680156120dc5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561210f5781810151838201526020016120f7565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b8381101561216f578181015183820152602001612157565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b6121d46121bb565b612217576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006122216112aa565b905061222c82612333565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61227d6112b9565b61228657600080fd5b61228f81612333565b50565b61229a6121bb565b6122dd576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b60008282018381101561231757600080fd5b9392505050565b60008282111561232d57600080fd5b50900390565b6001600160a01b03811661234657600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582053a54d64381645b314042de3e3eb5d21e27644ae46318599ce9464c234e8584664736f6c634300050b0032",
"deployedBytecode": "0x6080604052600436106101095760003560e01c8063a4e15db911610095578063d392a7d511610064578063d392a7d51461062e578063e97b387414610643578063f2fde38b14610676578063f41377ca146106a9578063fea5657c146106dc57610109565b8063a4e15db91461030c578063ab033ea914610321578063b244fdcb14610354578063d242f4cc1461036957610109565b80636d6c12f3116100dc5780636d6c12f314610260578063715018a61461028757806375fc0e0d1461029c5780638da5cb5b146102c65780638f32d59b146102f757610109565b80632de40ce3146101455780633ccfd60b1461016e5780633f007c20146101855780636a760b8014610236575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561015157600080fd5b5061015a6106f1565b604080519115158252519081900360200190f35b34801561017a57600080fd5b50610183610701565b005b34801561019157600080fd5b50610183600480360360208110156101a857600080fd5b810190602081018135600160201b8111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111600160201b831117156101f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108bc945050505050565b34801561024257600080fd5b506101836004803603602081101561025957600080fd5b5035610fba565b34801561026c57600080fd5b506102756110ba565b60408051918252519081900360200190f35b34801561029357600080fd5b506101836110c0565b3480156102a857600080fd5b50610183600480360360208110156102bf57600080fd5b503561111b565b3480156102d257600080fd5b506102db6112aa565b604080516001600160a01b039092168252519081900360200190f35b34801561030357600080fd5b5061015a6112b9565b34801561031857600080fd5b506102756112ca565b34801561032d57600080fd5b506101836004803603602081101561034457600080fd5b50356001600160a01b031661174e565b34801561036057600080fd5b50610275611781565b34801561037557600080fd5b50610183600480360360a081101561038c57600080fd5b810190602081018135600160201b8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111600160201b831117156103d957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561042b57600080fd5b82018360208201111561043d57600080fd5b803590602001918460018302840111600160201b8311171561045e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104b057600080fd5b8201836020820111156104c257600080fd5b803590602001918460018302840111600160201b831117156104e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105ba57600080fd5b8201836020820111156105cc57600080fd5b803590602001918460018302840111600160201b831117156105ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c08945050505050565b34801561063a57600080fd5b5061015a6121bb565b34801561064f57600080fd5b506101836004803603602081101561066657600080fd5b50356001600160a01b03166121cc565b34801561068257600080fd5b506101836004803603602081101561069957600080fd5b50356001600160a01b0316612275565b3480156106b557600080fd5b50610183600480360360208110156106cc57600080fd5b50356001600160a01b0316612292565b3480156106e857600080fd5b506102756122ff565b600254600160a01b900460ff1681565b6107096112b9565b61071257600080fd5b600254600160a01b900460ff16610765576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b50511561084d57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b6108c46112b9565b6108cd57600080fd5b600254600160a01b900460ff16610920576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109eb57600080fd5b505afa1580156109ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610140811015610a2957600080fd5b815160208301805160405192949293830192919084600160201b821115610a4f57600080fd5b908301906020820185811115610a6457600080fd5b8251600160201b811182820188101715610a7d57600080fd5b82525081516020918201929091019080838360005b83811015610aaa578181015183820152602001610a92565b50505050905090810190601f168015610ad75780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610b0757600080fd5b908301906020820185811115610b1c57600080fd5b8251600160201b811182820188101715610b3557600080fd5b82525081516020918201929091019080838360005b83811015610b62578181015183820152602001610b4a565b50505050905090810190601f168015610b8f5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610bb157600080fd5b908301906020820185811115610bc657600080fd5b8251600160201b811182820188101715610bdf57600080fd5b82525081516020918201929091019080838360005b83811015610c0c578181015183820152602001610bf4565b50505050905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c5b57600080fd5b908301906020820185811115610c7057600080fd5b8251600160201b811182820188101715610c8957600080fd5b82525081516020918201929091019080838360005b83811015610cb6578181015183820152602001610c9e565b50505050905090810190601f168015610ce35780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610d0557600080fd5b908301906020820185811115610d1a57600080fd5b8251600160201b811182820188101715610d3357600080fd5b82525081516020918201929091019080838360005b83811015610d60578181015183820152602001610d48565b50505050905090810190601f168015610d8d5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e51578181015183820152602001610e39565b50505050905090810190601f168015610e7e5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610f19578181015183820152602001610f01565b50505050905090810190601f168015610f465780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f79578181015183820152602001610f61565b50505050905090810190601f168015610fa65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610fc26121bb565b611005576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff16611058576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461106b908263ffffffff61230516565b600355600454611081908263ffffffff61230516565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b6110c86112b9565b6110d157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111236121bb565b611166576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff166111b9576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111fa5760405162461bcd60e51b81526004018080602001828103825260438152602001806123a26043913960600191505060405180910390fd5b60045461120d908263ffffffff61231e16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156113d457600080fd5b815160208301805160405192949293830192919084600160201b8211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b8251600160201b81118282018810171561142857600080fd5b82525081516020918201929091019080838360005b8381101561145557818101518382015260200161143d565b50505050905090810190601f1680156114825780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156114b257600080fd5b9083019060208201858111156114c757600080fd5b8251600160201b8111828201881017156114e057600080fd5b82525081516020918201929091019080838360005b8381101561150d5781810151838201526020016114f5565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561155c57600080fd5b90830190602082018581111561157157600080fd5b8251600160201b81118282018810171561158a57600080fd5b82525081516020918201929091019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561160657600080fd5b90830190602082018581111561161b57600080fd5b8251600160201b81118282018810171561163457600080fd5b82525081516020918201929091019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156116b057600080fd5b9083019060208201858111156116c557600080fd5b8251600160201b8111828201881017156116de57600080fd5b82525081516020918201929091019080838360005b8381101561170b5781810151838201526020016116f3565b50505050905090810190601f1680156117385780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b6117566112b9565b61175f57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561188b57600080fd5b815160208301805160405192949293830192919084600160201b8211156118b157600080fd5b9083019060208201858111156118c657600080fd5b8251600160201b8111828201881017156118df57600080fd5b82525081516020918201929091019080838360005b8381101561190c5781810151838201526020016118f4565b50505050905090810190601f1680156119395780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561196957600080fd5b90830190602082018581111561197e57600080fd5b8251600160201b81118282018810171561199757600080fd5b82525081516020918201929091019080838360005b838110156119c45781810151838201526020016119ac565b50505050905090810190601f1680156119f15780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a1357600080fd5b908301906020820185811115611a2857600080fd5b8251600160201b811182820188101715611a4157600080fd5b82525081516020918201929091019080838360005b83811015611a6e578181015183820152602001611a56565b50505050905090810190601f168015611a9b5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611abd57600080fd5b908301906020820185811115611ad257600080fd5b8251600160201b811182820188101715611aeb57600080fd5b82525081516020918201929091019080838360005b83811015611b18578181015183820152602001611b00565b50505050905090810190601f168015611b455780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611b6757600080fd5b908301906020820185811115611b7c57600080fd5b8251600160201b811182820188101715611b9557600080fd5b82525081516020918201929091019080838360005b83811015611bc2578181015183820152602001611baa565b50505050905090810190601f168015611bef5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611c106112b9565b611c1957600080fd5b600254600160a01b900460ff1615611c6d576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611d61578181015183820152602001611d49565b50505050905090810190601f168015611d8e5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611dc1578181015183820152602001611da9565b50505050905090810190601f168015611dee5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611e21578181015183820152602001611e09565b50505050905090810190601f168015611e4e5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e81578181015183820152602001611e69565b50505050905090810190601f168015611eae5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611ee1578181015183820152602001611ec9565b50505050905090810190601f168015611f0e5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611fef578181015183820152602001611fd7565b50505050905090810190601f16801561201c5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561204f578181015183820152602001612037565b50505050905090810190601f16801561207c5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156120af578181015183820152602001612097565b50505050905090810190601f1680156120dc5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561210f5781810151838201526020016120f7565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b8381101561216f578181015183820152602001612157565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b6121d46121bb565b612217576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006122216112aa565b905061222c82612333565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61227d6112b9565b61228657600080fd5b61228f81612333565b50565b61229a6121bb565b6122dd576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b60008282018381101561231757600080fd5b9392505050565b60008282111561232d57600080fd5b50900390565b6001600160a01b03811661234657600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582053a54d64381645b314042de3e3eb5d21e27644ae46318599ce9464c234e8584664736f6c634300050b0032",
"sourceMap": "55:147:5:-;;;;;298:71:3;;;-1:-1:-1;;;;;;298:71:3;;;326:42;298:71;;;;;515:19:7;;;;;524:10;515:19;;;;-1:-1:-1;;;;;582:6:7;;549:40;;298:71:3;;549:40:7;114:17:0;:30;;-1:-1:-1;;;;;;114:30:0;134:10;114:30;;;55:147:5;;;;;;",
"deployedSourceMap": "55:147:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:36:3;;;1265:10;1251:36;;1277:9;1251:36;;;;;;;;;;;;;;;;;55:147:5;373:22:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;373:22:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;2432:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2432:222:3;;;:::i;:::-;;2706:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2706:304:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2706:304:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2706:304:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2706:304:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2706:304:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2706:304:3;;-1:-1:-1;2706:304:3;;-1:-1:-1;;;;;2706:304:3:i;3804:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3804:200:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:200:3;;:::i;424:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:37:3;;;:::i;:::-;;;;;;;;;;;;;;;;1347:137:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:7;;;:::i;3462:309:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3462:309:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3462:309:3;;:::i;659:77:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:7;;;:::i;:::-;;;;-1:-1:-1;;;;;659:77:7;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:7;;;:::i;1371:215:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1371:215:3;;;:::i;100:99:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:99:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;100:99:5;-1:-1:-1;;;;;100:99:5;;:::i;1590:223:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:223:3;;;:::i;1948:439::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1948:439:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1948:439:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;1948:439:3:i;335:100:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;335:100:0;;;:::i;3156:211:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3156:211:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3156:211:3;-1:-1:-1;;;;;3156:211:3;;:::i;1655:107:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:7;-1:-1:-1;;;;;1655:107:7;;:::i;439:109:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;439:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;439:109:0;-1:-1:-1;;;;;439:109:0;;:::i;399:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;399:21:3;;;:::i;373:22::-;;;-1:-1:-1;;;373:22:3;;;;;:::o;2432:222::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2494:3;;;;;;;;;-1:-1:-1;;;;;2494:3:3;-1:-1:-1;;;;;2494:16:3;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2494:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2494:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2494:18:3;2490:38;;;2514:3;;;;;;;;;-1:-1:-1;;;;;2514:3:3;-1:-1:-1;;;;;2514:12:3;;:14;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2514:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2514:14:3;;;;2490:38;2578:27;;2559:4;2551:21;;2578:10;;:27;;;;;2551:21;;2534:14;2578:27;2534:14;2578:27;2551:21;2578:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2616:33:3;;;2630:10;2616:33;;;;;;;;;;;;;;;;;;;;;1103:1;2432:222::o;2706:304::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2842:3;;:39;;;-1:-1:-1;;;2842:39:3;;2875:4;2842:39;;;;;;2792:19;;2817:14;;-1:-1:-1;;;;;2842:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2842:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2842:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2842:39:3;2908:3;;:17;;;-1:-1:-1;;;2908:17:3;;;;;;;;;;2842:39;;-1:-1:-1;;;;;;2908:3:3;;;;:9;;:17;;;;;:3;;:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;2908:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2908:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2908:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2908:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:3;;;;;;;;;-1:-1:-1;;;;;2931:3:3;-1:-1:-1;;;;;2931:24:3;;2956:3;2931:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2931:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2931:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2931:29:3;;;;2971:34;2993:6;3001:3;2971:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2971:34:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:1;;2706:304;:::o;3804:200::-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3886:6;;:18;;3897:6;3886:18;:10;:18;:::i;:::-;3877:6;:27;3936:22;;:34;;3963:6;3936:34;:26;:34;:::i;:::-;3911:22;:59;3981:18;;;;;;;;;;;;;;;;;3804:200;:::o;424:37::-;;;;:::o;1347:137:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:7;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;;;;;1458:19:7;;;1347:137::o;3462:309:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3568:22;;3558:6;:32;;3550:112;;;;-1:-1:-1;;;3550:112:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:22;;:34;;3695:6;3668:34;:26;:34;:::i;:::-;-1:-1:-1;3708:3:3;;:19;;;-1:-1:-1;;;3708:19:3;;;;;;;;;;-1:-1:-1;;;;;3708:3:3;;;;:11;;:19;;;;;:3;;:19;;;;;;;;:3;;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;3708:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3738:28:3;;;;;;;;;;-1:-1:-1;3738:28:3;;;;;;;-1:-1:-1;3738:28:3;3462:309;:::o;659:77:7:-;697:7;723:6;-1:-1:-1;;;;;723:6:7;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:7;1042:10;:20;;979:90::o;1371:215:3:-;1459:3;;:39;;;-1:-1:-1;;;1459:39:3;;1492:4;1459:39;;;;;;1419:7;;;;-1:-1:-1;;;;;1459:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1459:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1459:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1459:39:3;1545:3;;:17;;;-1:-1:-1;;;1545:17:3;;;;;;;;;;1459:39;;-1:-1:-1;1505:14:3;;-1:-1:-1;;;;;1545:3:3;;;;:9;;:17;;;;;1505:14;;1545:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1545:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1545:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1545:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1545:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;-1:-1:-1;1525:37:3;;-1:-1:-1;;;;;;;;;;;;1371:215:3;:::o;100:99:5:-;863:9:7;:7;:9::i;:::-;855:18;;;;;;166:3:5;:28;;-1:-1:-1;;;;;;166:28:5;-1:-1:-1;;;;;166:28:5;;;;;;;;;;100:99::o;1590:223:3:-;1680:3;;:39;;;-1:-1:-1;;;1680:39:3;;1713:4;1680:39;;;;;;1640:7;;;;-1:-1:-1;;;;;1680:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1680:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1680:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1680:39:3;1770:3;;:17;;;-1:-1:-1;;;1770:17:3;;;;;;;;;;1680:39;;-1:-1:-1;1726:16:3;;-1:-1:-1;;;;;1770:3:3;;;;:9;;:17;;;;;1726:16;;1770:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1770:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1770:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1770:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1770:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;-1:-1:-1;;;;;;;;;;;;;1590:223:3;:::o;1948:439::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;2130:10:3;;-1:-1:-1;;;2130:10:3;;;;2129:11;2121:42;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;;;;2188:3;;:14;;;-1:-1:-1;;;2188:14:3;;;;2169:16;;-1:-1:-1;;;;;2188:3:3;;:12;;:14;;;;;;;;;;;;;;:3;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;2188:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2188:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2188:14:3;2208:3;;:67;;-1:-1:-1;;;2208:67:3;;;;;;;;;;;;;;;;;2188:14;;-1:-1:-1;;;;;;2208:3:3;;;;:12;;2188:14;;2237:9;;2248:4;;2254:5;;2261:8;;2271:3;;2208:67;;;;;;;;;;;;;;;;;;;;;;;;2188:14;2208:67;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:67:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2281:10:3;:17;;-1:-1:-1;;;;2281:17:3;-1:-1:-1;;;2281:17:3;;;-1:-1:-1;;2309:73:3;;;2322:10;2309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2322:10:3;;2334:9;;2345:4;;2351:5;;2358:8;;2368:3;;2373:8;;2309:73;;;;;;;;;;;;;;;;;2281:17;2309:73;;;;;;;;;2281:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:1:7;1948:439:3;;;;;:::o;335:100:0:-;413:17;;-1:-1:-1;;;;;413:17:0;399:10;:31;;335:100::o;3156:211:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;3241:16:3;3260:7;:5;:7::i;:::-;3241:26;;3273:28;3292:8;3273:18;:28::i;:::-;3312:50;;;-1:-1:-1;;;;;3312:50:3;;;;;;;;;;;;;;;;;;;;;;;;279:1:0;3156:211:3;:::o;1655:107:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;439:109:0:-;239:14;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;515:17;:28;;-1:-1:-1;;;;;;515:28:0;-1:-1:-1;;;;;515:28:0;;;;;;;;;;439:109::o;399:21:3:-;;;;:::o;1431:145:6:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:6:o;1205:::-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:6;;;1205:145::o;1906:183:7:-;-1:-1:-1;;;;;1979:22:7;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:7;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;;;;;2065:17:7;-1:-1:-1;;;;;2065:17:7;;;;;;;;;;1906:183::o",
"source": "pragma solidity ^0.5.11;\n\nimport \"../NodeStaker.sol\";\n\ncontract NodeStakerMock is NodeStaker {\n \n function setGovernance(address govAddress) public onlyOwner {\n gov = Governance(govAddress);\n }\n\n}\n",
"sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
"ast": {
"absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
"exportedSymbols": {
"NodeStakerMock": [
1279
]
},
"id": 1280,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1261,
"literals": [
"solidity",
"^",
"0.5",
".11"
],
"nodeType": "PragmaDirective",
"src": "0:24:5"
},
{
"absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
"file": "../NodeStaker.sol",
"id": 1262,
"nodeType": "ImportDirective",
"scope": 1280,
"sourceUnit": 862,
"src": "26:27:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1263,
"name": "NodeStaker",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 861,
"src": "82:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NodeStaker_$861",
"typeString": "contract NodeStaker"
}
},
"id": 1264,
"nodeType": "InheritanceSpecifier",
"src": "82:10:5"
}
],
"contractDependencies": [
46,
861,
1516
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1279,
"linearizedBaseContracts": [
1279,
861,
46,
1516
],
"name": "NodeStakerMock",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 1277,
"nodeType": "Block",
"src": "160:39:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1271,
"name": "gov",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 505,
"src": "166:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1273,
"name": "govAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1266,
"src": "183:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1272,
"name": "Governance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 430,
"src": "172:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
"typeString": "type(contract Governance)"
}
},
"id": 1274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "172:22:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"src": "166:28:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"id": 1276,
"nodeType": "ExpressionStatement",
"src": "166:28:5"
}
]
},
"documentation": null,
"id": 1278,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1269,
"modifierName": {
"argumentTypes": null,
"id": 1268,
"name": "onlyOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "150:9:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "150:9:5"
}
],
"name": "setGovernance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1267,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1266,
"name": "govAddress",
"nodeType": "VariableDeclaration",
"scope": 1278,
"src": "123:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1265,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "123:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "122:20:5"
},
"returnParameters": {
"id": 1270,
"nodeType": "ParameterList",
"parameters": [],
"src": "160:0:5"
},
"scope": 1279,
"src": "100:99:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1280,
"src": "55:147:5"
}
],
"src": "0:203:5"
},
"legacyAST": {
"absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
"exportedSymbols": {
"NodeStakerMock": [
1279
]
},
"id": 1280,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1261,
"literals": [
"solidity",
"^",
"0.5",
".11"
],
"nodeType": "PragmaDirective",
"src": "0:24:5"
},
{
"absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
"file": "../NodeStaker.sol",
"id": 1262,
"nodeType": "ImportDirective",
"scope": 1280,
"sourceUnit": 862,
"src": "26:27:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1263,
"name": "NodeStaker",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 861,
"src": "82:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NodeStaker_$861",
"typeString": "contract NodeStaker"
}
},
"id": 1264,
"nodeType": "InheritanceSpecifier",
"src": "82:10:5"
}
],
"contractDependencies": [
46,
861,
1516
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1279,
"linearizedBaseContracts": [
1279,
861,
46,
1516
],
"name": "NodeStakerMock",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 1277,
"nodeType": "Block",
"src": "160:39:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1271,
"name": "gov",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 505,
"src": "166:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1273,
"name": "govAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1266,
"src": "183:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1272,
"name": "Governance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 430,
"src": "172:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
"typeString": "type(contract Governance)"
}
},
"id": 1274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "172:22:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"src": "166:28:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Governance_$430",
"typeString": "contract Governance"
}
},
"id": 1276,
"nodeType": "ExpressionStatement",
"src": "166:28:5"
}
]
},
"documentation": null,
"id": 1278,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1269,
"modifierName": {
"argumentTypes": null,
"id": 1268,
"name": "onlyOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "150:9:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "150:9:5"
}
],
"name": "setGovernance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1267,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1266,
"name": "govAddress",
"nodeType": "VariableDeclaration",
"scope": 1278,
"src": "123:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1265,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "123:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "122:20:5"
},
"returnParameters": {
"id": 1270,
"nodeType": "ParameterList",
"parameters": [],
"src": "160:0:5"
},
"scope": 1279,
"src": "100:99:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1280,
"src": "55:147:5"
}
],
"src": "0:203:5"
},
"compiler": {
"name": "solc",
"version": "0.5.11+commit.c082d0b4.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.0.11",
"updatedAt": "2019-09-29T03:11:52.538Z",
"devdoc": {
"methods": {
"isOwner()": {
"return": "true if `msg.sender` is the owner of the contract."
},
"owner()": {
"return": "the address of the owner."
},
"register(bytes,string,string,string,string)": {
"details": "register a node"
},
"renounceOwnership()": {
"details": "Allows the current owner to relinquish control of the contract."
},
"replaceNodePublicKey(bytes)": {
"details": "replace node public key"
},
"transferOwnership(address)": {
"details": "Allows the current owner to transfer control of the contract to a newOwner.",
"params": {
"newOwner": "The address to transfer ownership to."
}
},
"transferOwnershipByFoundation(address)": {
"details": "transfer node ownership"
},
"unstakeByFoundation(uint256)": {
"details": "unstake by foundation"
},
"vest(uint256)": {
"details": "vest"
},
"withdraw()": {
"details": "withdraw balance"
}
}
},
"userdoc": {
"methods": {
"renounceOwnership()": {
"notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
},
"unstakeByFoundation(uint256)": {
"notice": "only can unstake vested amount"
}
}
}
}
|