-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrustgraz_talk_05.html
970 lines (917 loc) · 853 KB
/
rustgraz_talk_05.html
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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="author" content="Lukas Prokop">
<title>Rust Graz – 05 Data structures</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link href="data:text/css; charset=utf-8,%2F%2A%21%0A%20%2A%20reveal%2Ejs%0A%20%2A%20http%3A%2F%2Frevealjs%2Ecom%0A%20%2A%20MIT%20licensed%0A%20%2A%0A%20%2A%20Copyright%20%28C%29%202019%20Hakim%20El%20Hattab%2C%20http%3A%2F%2Fhakim%2Ese%0A%20%2A%2F%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20GLOBAL%20STYLES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0Ahtml%20%7B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20height%3A%20100vh%3B%0A%20%20height%3A%20calc%28%20var%28%2D%2Dvh%2C%201vh%29%20%2A%20100%29%3B%0A%20%20overflow%3A%20hidden%3B%20%7D%0A%0Abody%20%7B%0A%20%20height%3A%20100%25%3B%0A%20%20overflow%3A%20hidden%3B%0A%20%20position%3A%20relative%3B%0A%20%20line%2Dheight%3A%201%3B%0A%20%20margin%3A%200%3B%0A%20%20background%2Dcolor%3A%20%23fff%3B%0A%20%20color%3A%20%23000%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20VIEW%20FRAGMENTS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20transition%3A%20all%20%2E2s%20ease%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Evisible%20%7B%0A%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20visibility%3A%20inherit%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Egrow%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Egrow%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20scale%281%2E3%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%281%2E3%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Eshrink%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Eshrink%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E7%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E7%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ezoom%2Din%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E1%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E1%29%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ezoom%2Din%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dout%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dout%2Evisible%20%7B%0A%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20visibility%3A%20hidden%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Esemi%2Dfade%2Dout%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Esemi%2Dfade%2Dout%2Evisible%20%7B%0A%20%20%20%20opacity%3A%200%2E5%3B%0A%20%20%20%20visibility%3A%20inherit%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Estrike%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Estrike%2Evisible%20%7B%0A%20%20%20%20text%2Ddecoration%3A%20line%2Dthrough%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dup%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%2020%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%2020%25%29%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dup%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Ddown%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20%2D20%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20%2D20%25%29%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Ddown%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dright%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28%2D20%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28%2D20%25%2C%200%29%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dright%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dleft%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%2820%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%2820%25%2C%200%29%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Dleft%2Evisible%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Din%2Dthen%2Dout%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ecurrent%2Dvisible%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Din%2Dthen%2Dout%2Ecurrent%2Dfragment%2C%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ecurrent%2Dvisible%2Ecurrent%2Dfragment%20%7B%0A%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20visibility%3A%20inherit%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Din%2Dthen%2Dsemi%2Dout%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Din%2Dthen%2Dsemi%2Dout%2Evisible%20%7B%0A%20%20%20%20opacity%3A%200%2E5%3B%0A%20%20%20%20visibility%3A%20inherit%3B%20%7D%0A%20%20%2Ereveal%20%2Eslides%20section%20%2Efragment%2Efade%2Din%2Dthen%2Dsemi%2Dout%2Ecurrent%2Dfragment%20%7B%0A%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20visibility%3A%20inherit%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dred%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dred%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dgreen%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dgreen%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dblue%2C%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dblue%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20inherit%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dred%2Evisible%20%7B%0A%20%20color%3A%20%23ff2c2d%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dgreen%2Evisible%20%7B%0A%20%20color%3A%20%2317ff2e%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dblue%2Evisible%20%7B%0A%20%20color%3A%20%231b91ff%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dred%2Ecurrent%2Dfragment%20%7B%0A%20%20color%3A%20%23ff2c2d%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dgreen%2Ecurrent%2Dfragment%20%7B%0A%20%20color%3A%20%2317ff2e%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%20%2Efragment%2Ehighlight%2Dcurrent%2Dblue%2Ecurrent%2Dfragment%20%7B%0A%20%20color%3A%20%231b91ff%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20DEFAULT%20ELEMENT%20STYLES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2F%2A%20Fixes%20issue%20in%20Chrome%20where%20italic%20fonts%20did%20not%20appear%20when%20printing%20to%20PDF%20%2A%2F%0A%2Ereveal%3Aafter%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20font%2Dstyle%3A%20italic%3B%20%7D%0A%0A%2Ereveal%20iframe%20%7B%0A%20%20z%2Dindex%3A%201%3B%20%7D%0A%0A%2F%2A%2A%20Prevents%20layering%20issues%20in%20certain%20browser%2Ftransition%20combinations%20%2A%2F%0A%2Ereveal%20a%20%7B%0A%20%20position%3A%20relative%3B%20%7D%0A%0A%2Ereveal%20%2Estretch%20%7B%0A%20%20max%2Dwidth%3A%20none%3B%0A%20%20max%2Dheight%3A%20none%3B%20%7D%0A%0A%2Ereveal%20pre%2Estretch%20code%20%7B%0A%20%20height%3A%20100%25%3B%0A%20%20max%2Dheight%3A%20100%25%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20CONTROLS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%40%2Dwebkit%2Dkeyframes%20bounce%2Dright%20%7B%0A%20%200%25%2C%2010%25%2C%2025%25%2C%2040%25%2C%2050%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%29%3B%20%7D%0A%20%2020%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%2810px%29%3B%20%7D%0A%20%2030%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%28%2D5px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%28%2D5px%29%3B%20%7D%20%7D%0A%40keyframes%20bounce%2Dright%20%7B%0A%20%200%25%2C%2010%25%2C%2025%25%2C%2040%25%2C%2050%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%29%3B%20%7D%0A%20%2020%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%2810px%29%3B%20%7D%0A%20%2030%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%28%2D5px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%28%2D5px%29%3B%20%7D%20%7D%0A%0A%40%2Dwebkit%2Dkeyframes%20bounce%2Ddown%20%7B%0A%20%200%25%2C%2010%25%2C%2025%25%2C%2040%25%2C%2050%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%280%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%280%29%3B%20%7D%0A%20%2020%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%2810px%29%3B%20%7D%0A%20%2030%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%28%2D5px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%28%2D5px%29%3B%20%7D%20%7D%0A%0A%40keyframes%20bounce%2Ddown%20%7B%0A%20%200%25%2C%2010%25%2C%2025%25%2C%2040%25%2C%2050%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%280%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%280%29%3B%20%7D%0A%20%2020%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%2810px%29%3B%20%7D%0A%20%2030%25%20%7B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%28%2D5px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%28%2D5px%29%3B%20%7D%20%7D%0A%0A%2Ereveal%20%2Econtrols%20%7B%0A%20%20display%3A%20none%3B%0A%20%20position%3A%20absolute%3B%0A%20%20top%3A%20auto%3B%0A%20%20bottom%3A%2012px%3B%0A%20%20right%3A%2012px%3B%0A%20%20left%3A%20auto%3B%0A%20%20z%2Dindex%3A%2011%3B%0A%20%20color%3A%20%23000%3B%0A%20%20pointer%2Devents%3A%20none%3B%0A%20%20font%2Dsize%3A%2010px%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20button%20%7B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20background%2Dcolor%3A%20transparent%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20outline%3A%200%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%20%20%20%20color%3A%20currentColor%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E9999%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E9999%29%3B%0A%20%20%20%20transition%3A%20color%200%2E2s%20ease%2C%20opacity%200%2E2s%20ease%2C%20%2Dwebkit%2Dtransform%200%2E2s%20ease%3B%0A%20%20%20%20transition%3A%20color%200%2E2s%20ease%2C%20opacity%200%2E2s%20ease%2C%20transform%200%2E2s%20ease%3B%0A%20%20%20%20z%2Dindex%3A%202%3B%0A%20%20%20%20pointer%2Devents%3A%20auto%3B%0A%20%20%20%20font%2Dsize%3A%20inherit%3B%0A%20%20%20%20visibility%3A%20hidden%3B%0A%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20%2Dwebkit%2Dappearance%3A%20none%3B%0A%20%20%20%20%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Abefore%2C%0A%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Aafter%20%7B%0A%20%20%20%20content%3A%20%27%27%3B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20top%3A%200%3B%0A%20%20%20%20left%3A%200%3B%0A%20%20%20%20width%3A%202%2E6em%3B%0A%20%20%20%20height%3A%200%2E5em%3B%0A%20%20%20%20border%2Dradius%3A%200%2E25em%3B%0A%20%20%20%20background%2Dcolor%3A%20currentColor%3B%0A%20%20%20%20transition%3A%20all%200%2E15s%20ease%2C%20background%2Dcolor%200%2E8s%20ease%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%2E2em%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%2E2em%2050%25%3B%0A%20%20%20%20will%2Dchange%3A%20transform%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%20%7B%0A%20%20%20%20position%3A%20relative%3B%0A%20%20%20%20width%3A%203%2E6em%3B%0A%20%20%20%20height%3A%203%2E6em%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Abefore%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2845deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2845deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Aafter%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D45deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D45deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Ahover%3Abefore%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2840deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2840deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Ahover%3Aafter%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D40deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D40deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Aactive%3Abefore%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2836deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2836deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Econtrols%2Darrow%3Aactive%3Aafter%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D36deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D36deg%29%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dleft%20%7B%0A%20%20%20%20right%3A%206%2E4em%3B%0A%20%20%20%20bottom%3A%203%2E2em%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%28%2D10px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%28%2D10px%29%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dright%20%7B%0A%20%20%20%20right%3A%200%3B%0A%20%20%20%20bottom%3A%203%2E2em%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateX%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%2810px%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dright%20%2Econtrols%2Darrow%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20rotate%28180deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20rotate%28180deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dright%2Ehighlight%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Danimation%3A%20bounce%2Dright%202s%2050%20both%20ease%2Dout%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation%3A%20bounce%2Dright%202s%2050%20both%20ease%2Dout%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dup%20%7B%0A%20%20%20%20right%3A%203%2E2em%3B%0A%20%20%20%20bottom%3A%206%2E4em%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%28%2D10px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%28%2D10px%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Dup%20%2Econtrols%2Darrow%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20rotate%2890deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20rotate%2890deg%29%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Ddown%20%7B%0A%20%20%20%20right%3A%203%2E2em%3B%0A%20%20%20%20bottom%3A%20%2D1%2E4em%3B%0A%20%20%20%20padding%2Dbottom%3A%201%2E4em%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20translateY%2810px%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY%2810px%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Ddown%20%2Econtrols%2Darrow%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Dtransform%3A%20rotate%28%2D90deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20rotate%28%2D90deg%29%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%20%2Enavigate%2Ddown%2Ehighlight%20%7B%0A%20%20%20%20%20%20%2Dwebkit%2Danimation%3A%20bounce%2Ddown%202s%2050%20both%20ease%2Dout%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation%3A%20bounce%2Ddown%202s%2050%20both%20ease%2Dout%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22faded%22%5D%20%2Enavigate%2Dleft%2Eenabled%2C%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22faded%22%5D%20%2Enavigate%2Dup%2Eenabled%20%7B%0A%20%20%20%20opacity%3A%200%2E3%3B%20%7D%0A%20%20%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22faded%22%5D%20%2Enavigate%2Dleft%2Eenabled%3Ahover%2C%0A%20%20%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22faded%22%5D%20%2Enavigate%2Dup%2Eenabled%3Ahover%20%7B%0A%20%20%20%20%20%20opacity%3A%201%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22hidden%22%5D%20%2Enavigate%2Dleft%2Eenabled%2C%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dback%2Darrows%3D%22hidden%22%5D%20%2Enavigate%2Dup%2Eenabled%20%7B%0A%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20visibility%3A%20hidden%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Eenabled%20%7B%0A%20%20%20%20visibility%3A%20visible%3B%0A%20%20%20%20opacity%3A%200%2E9%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%20%20%20%20%2Dwebkit%2Dtransform%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20none%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Eenabled%2Efragmented%20%7B%0A%20%20%20%20opacity%3A%200%2E5%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%20%2Eenabled%3Ahover%2C%0A%20%20%2Ereveal%20%2Econtrols%20%2Eenabled%2Efragmented%3Ahover%20%7B%0A%20%20%20%20opacity%3A%201%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dnavigation%2Dmode%3D%22linear%22%5D%2Ehas%2Dhorizontal%2Dslides%20%2Enavigate%2Dup%2C%0A%2Ereveal%5Bdata%2Dnavigation%2Dmode%3D%22linear%22%5D%2Ehas%2Dhorizontal%2Dslides%20%2Enavigate%2Ddown%20%7B%0A%20%20display%3A%20none%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dnavigation%2Dmode%3D%22linear%22%5D%2Ehas%2Dhorizontal%2Dslides%20%2Enavigate%2Dleft%2C%0A%2Ereveal%3Anot%28%2Ehas%2Dvertical%2Dslides%29%20%2Econtrols%20%2Enavigate%2Dleft%20%7B%0A%20%20bottom%3A%201%2E4em%3B%0A%20%20right%3A%205%2E5em%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dnavigation%2Dmode%3D%22linear%22%5D%2Ehas%2Dhorizontal%2Dslides%20%2Enavigate%2Dright%2C%0A%2Ereveal%3Anot%28%2Ehas%2Dvertical%2Dslides%29%20%2Econtrols%20%2Enavigate%2Dright%20%7B%0A%20%20bottom%3A%201%2E4em%3B%0A%20%20right%3A%200%2E5em%3B%20%7D%0A%0A%2Ereveal%3Anot%28%2Ehas%2Dhorizontal%2Dslides%29%20%2Econtrols%20%2Enavigate%2Dup%20%7B%0A%20%20right%3A%201%2E4em%3B%0A%20%20bottom%3A%205em%3B%20%7D%0A%0A%2Ereveal%3Anot%28%2Ehas%2Dhorizontal%2Dslides%29%20%2Econtrols%20%2Enavigate%2Ddown%20%7B%0A%20%20right%3A%201%2E4em%3B%0A%20%20bottom%3A%200%2E5em%3B%20%7D%0A%0A%2Ereveal%2Ehas%2Ddark%2Dbackground%20%2Econtrols%20%7B%0A%20%20color%3A%20%23fff%3B%20%7D%0A%0A%2Ereveal%2Ehas%2Dlight%2Dbackground%20%2Econtrols%20%7B%0A%20%20color%3A%20%23000%3B%20%7D%0A%0A%2Ereveal%2Eno%2Dhover%20%2Econtrols%20%2Econtrols%2Darrow%3Ahover%3Abefore%2C%0A%2Ereveal%2Eno%2Dhover%20%2Econtrols%20%2Econtrols%2Darrow%3Aactive%3Abefore%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2845deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%2845deg%29%3B%20%7D%0A%0A%2Ereveal%2Eno%2Dhover%20%2Econtrols%20%2Econtrols%2Darrow%3Ahover%3Aafter%2C%0A%2Ereveal%2Eno%2Dhover%20%2Econtrols%20%2Econtrols%2Darrow%3Aactive%3Aafter%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D45deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX%280%2E5em%29%20translateY%281%2E55em%29%20rotate%28%2D45deg%29%3B%20%7D%0A%0A%40media%20screen%20and%20%28min%2Dwidth%3A%20500px%29%20%7B%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%7B%0A%20%20%20%20top%3A%200%3B%0A%20%20%20%20right%3A%200%3B%0A%20%20%20%20bottom%3A%200%3B%0A%20%20%20%20left%3A%200%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dleft%2C%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dright%2C%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dup%2C%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Ddown%20%7B%0A%20%20%20%20bottom%3A%20auto%3B%0A%20%20%20%20right%3A%20auto%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dleft%20%7B%0A%20%20%20%20top%3A%2050%25%3B%0A%20%20%20%20left%3A%200%2E8em%3B%0A%20%20%20%20margin%2Dtop%3A%20%2D1%2E8em%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dright%20%7B%0A%20%20%20%20top%3A%2050%25%3B%0A%20%20%20%20right%3A%200%2E8em%3B%0A%20%20%20%20margin%2Dtop%3A%20%2D1%2E8em%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Dup%20%7B%0A%20%20%20%20top%3A%200%2E8em%3B%0A%20%20%20%20left%3A%2050%25%3B%0A%20%20%20%20margin%2Dleft%3A%20%2D1%2E8em%3B%20%7D%0A%20%20%2Ereveal%20%2Econtrols%5Bdata%2Dcontrols%2Dlayout%3D%22edges%22%5D%20%2Enavigate%2Ddown%20%7B%0A%20%20%20%20bottom%3A%20%2D0%2E3em%3B%0A%20%20%20%20left%3A%2050%25%3B%0A%20%20%20%20margin%2Dleft%3A%20%2D1%2E8em%3B%20%7D%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PROGRESS%20BAR%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eprogress%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20none%3B%0A%20%20height%3A%203px%3B%0A%20%20width%3A%20100%25%3B%0A%20%20bottom%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20z%2Dindex%3A%2010%3B%0A%20%20background%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3B%0A%20%20color%3A%20%23fff%3B%20%7D%0A%0A%2Ereveal%20%2Eprogress%3Aafter%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20display%3A%20block%3B%0A%20%20position%3A%20absolute%3B%0A%20%20height%3A%2010px%3B%0A%20%20width%3A%20100%25%3B%0A%20%20top%3A%20%2D10px%3B%20%7D%0A%0A%2Ereveal%20%2Eprogress%20span%20%7B%0A%20%20display%3A%20block%3B%0A%20%20height%3A%20100%25%3B%0A%20%20width%3A%200px%3B%0A%20%20background%2Dcolor%3A%20currentColor%3B%0A%20%20transition%3A%20width%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20SLIDE%20NUMBER%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslide%2Dnumber%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20right%3A%208px%3B%0A%20%20bottom%3A%208px%3B%0A%20%20z%2Dindex%3A%2031%3B%0A%20%20font%2Dfamily%3A%20Helvetica%2C%20sans%2Dserif%3B%0A%20%20font%2Dsize%3A%2012px%3B%0A%20%20line%2Dheight%3A%201%3B%0A%20%20color%3A%20%23fff%3B%0A%20%20background%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%2E4%29%3B%0A%20%20padding%3A%205px%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dnumber%20a%20%7B%0A%20%20color%3A%20currentColor%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dnumber%2Ddelimiter%20%7B%0A%20%20margin%3A%200%203px%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20SLIDES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%7B%0A%20%20position%3A%20relative%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20overflow%3A%20hidden%3B%0A%20%20%2Dms%2Dtouch%2Daction%3A%20pinch%2Dzoom%3B%0A%20%20%20%20%20%20touch%2Daction%3A%20pinch%2Dzoom%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20top%3A%200%3B%0A%20%20right%3A%200%3B%0A%20%20bottom%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20margin%3A%20auto%3B%0A%20%20pointer%2Devents%3A%20none%3B%0A%20%20overflow%3A%20visible%3B%0A%20%20z%2Dindex%3A%201%3B%0A%20%20text%2Dalign%3A%20center%3B%0A%20%20%2Dwebkit%2Dperspective%3A%20600px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%20600px%3B%0A%20%20%2Dwebkit%2Dperspective%2Dorigin%3A%2050%25%2040%25%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%2Dorigin%3A%2050%25%2040%25%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%7B%0A%20%20%2Dwebkit%2Dperspective%3A%20600px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%20600px%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%20%7B%0A%20%20display%3A%20none%3B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20padding%3A%2020px%200px%3B%0A%20%20pointer%2Devents%3A%20auto%3B%0A%20%20z%2Dindex%3A%2010%3B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20flat%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20flat%3B%0A%20%20transition%3A%20%2Dwebkit%2Dtransform%2Dorigin%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20%2Dwebkit%2Dtransform%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20visibility%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20opacity%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%0A%20%20transition%3A%20transform%2Dorigin%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20transform%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20visibility%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%2C%20opacity%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%20%7D%0A%0A%2F%2A%20Global%20transition%20speed%20settings%20%2A%2F%0A%2Ereveal%5Bdata%2Dtransition%2Dspeed%3D%22fast%22%5D%20%2Eslides%20section%20%7B%0A%20%20transition%2Dduration%3A%20400ms%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dtransition%2Dspeed%3D%22slow%22%5D%20%2Eslides%20section%20%7B%0A%20%20transition%2Dduration%3A%201200ms%3B%20%7D%0A%0A%2F%2A%20Slide%2Dspecific%20transition%20speed%20overrides%20%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%2Dspeed%3D%22fast%22%5D%20%7B%0A%20%20transition%2Dduration%3A%20400ms%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%2Dspeed%3D%22slow%22%5D%20%7B%0A%20%20transition%2Dduration%3A%201200ms%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%2Estack%20%7B%0A%20%20padding%2Dtop%3A%200%3B%0A%20%20padding%2Dbottom%3A%200%3B%0A%20%20pointer%2Devents%3A%20none%3B%0A%20%20height%3A%20100%25%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%2Epresent%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%2Epresent%20%7B%0A%20%20display%3A%20block%3B%0A%20%20z%2Dindex%3A%2011%3B%0A%20%20opacity%3A%201%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%3Aempty%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%3Aempty%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dbackground%2Dinteractive%5D%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dbackground%2Dinteractive%5D%20%7B%0A%20%20pointer%2Devents%3A%20none%3B%20%7D%0A%0A%2Ereveal%2Ecenter%2C%0A%2Ereveal%2Ecenter%20%2Eslides%2C%0A%2Ereveal%2Ecenter%20%2Eslides%20section%20%7B%0A%20%20min%2Dheight%3A%200%20%21important%3B%20%7D%0A%0A%2F%2A%20Don%27t%20allow%20interaction%20with%20invisible%20slides%20%2A%2F%0A%2Ereveal%20%2Eslides%20%3E%20section%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%2Epast%20%7B%0A%20%20pointer%2Devents%3A%20none%3B%20%7D%0A%0A%2Ereveal%2Eoverview%20%2Eslides%20%3E%20section%2C%0A%2Ereveal%2Eoverview%20%2Eslides%20%3E%20section%20%3E%20section%20%7B%0A%20%20pointer%2Devents%3A%20auto%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%2Efuture%20%7B%0A%20%20opacity%3A%200%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20Mixins%20for%20readability%20of%20transitions%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20SLIDE%20TRANSITION%0A%20%2A%20Aliased%20%27linear%27%20for%20backwards%20compatibility%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Eslide%20section%20%7B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dslide%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dslide%2Dout%5D%2Epast%2C%0A%2Ereveal%2Eslide%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28%2D150%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28%2D150%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dslide%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dslide%2Din%5D%2Efuture%2C%0A%2Ereveal%2Eslide%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28150%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28150%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dslide%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dslide%2Dout%5D%2Epast%2C%0A%2Ereveal%2Eslide%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20%2D150%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20%2D150%25%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dslide%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dslide%2Din%5D%2Efuture%2C%0A%2Ereveal%2Eslide%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20150%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20150%25%29%3B%20%7D%0A%0A%2Ereveal%2Elinear%20section%20%7B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dlinear%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dlinear%2Dout%5D%2Epast%2C%0A%2Ereveal%2Elinear%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28%2D150%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28%2D150%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dlinear%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dlinear%2Din%5D%2Efuture%2C%0A%2Ereveal%2Elinear%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28150%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28150%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dlinear%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dlinear%2Dout%5D%2Epast%2C%0A%2Ereveal%2Elinear%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20%2D150%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20%2D150%25%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dlinear%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dlinear%2Din%5D%2Efuture%2C%0A%2Ereveal%2Elinear%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20150%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20150%25%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20CONVEX%20TRANSITION%0A%20%2A%20Aliased%20%27default%27%20for%20backwards%20compatibility%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Ddefault%5D%2Estack%2C%0A%2Ereveal%2Edefault%20%2Eslides%20section%2Estack%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Ddefault%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Ddefault%2Dout%5D%2Epast%2C%0A%2Ereveal%2Edefault%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Ddefault%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Ddefault%2Din%5D%2Efuture%2C%0A%2Ereveal%2Edefault%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Ddefault%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Ddefault%2Dout%5D%2Epast%2C%0A%2Ereveal%2Edefault%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D300px%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%20%2D300px%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D300px%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%20%2D300px%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Ddefault%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Ddefault%2Din%5D%2Efuture%2C%0A%2Ereveal%2Edefault%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20300px%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20300px%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20300px%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20300px%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Dconvex%5D%2Estack%2C%0A%2Ereveal%2Econvex%20%2Eslides%20section%2Estack%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dconvex%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dconvex%2Dout%5D%2Epast%2C%0A%2Ereveal%2Econvex%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dconvex%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dconvex%2Din%5D%2Efuture%2C%0A%2Ereveal%2Econvex%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dconvex%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dconvex%2Dout%5D%2Epast%2C%0A%2Ereveal%2Econvex%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D300px%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%20%2D300px%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D300px%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%20%2D300px%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dconvex%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dconvex%2Din%5D%2Efuture%2C%0A%2Ereveal%2Econvex%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20300px%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20300px%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20300px%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20300px%2C%200%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20CONCAVE%20TRANSITION%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Dconcave%5D%2Estack%2C%0A%2Ereveal%2Econcave%20%2Eslides%20section%2Estack%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dconcave%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dconcave%2Dout%5D%2Epast%2C%0A%2Ereveal%2Econcave%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dconcave%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dconcave%2Din%5D%2Efuture%2C%0A%2Ereveal%2Econcave%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dconcave%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dconcave%2Dout%5D%2Epast%2C%0A%2Ereveal%2Econcave%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D80%25%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20%2D80%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D80%25%2C%200%29%20rotateX%28%2D70deg%29%20translate3d%280%2C%20%2D80%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dconcave%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dconcave%2Din%5D%2Efuture%2C%0A%2Ereveal%2Econcave%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%2080%25%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%2080%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%2080%25%2C%200%29%20rotateX%2870deg%29%20translate3d%280%2C%2080%25%2C%200%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20ZOOM%20TRANSITION%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Dzoom%5D%2C%0A%2Ereveal%2Ezoom%20%2Eslides%20section%3Anot%28%5Bdata%2Dtransition%5D%29%20%7B%0A%20%20transition%2Dtiming%2Dfunction%3A%20ease%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dzoom%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dzoom%2Dout%5D%2Epast%2C%0A%2Ereveal%2Ezoom%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%2816%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%2816%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%3Dzoom%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%5Bdata%2Dtransition%7E%3Dzoom%2Din%5D%2Efuture%2C%0A%2Ereveal%2Ezoom%20%2Eslides%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E2%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E2%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dzoom%5D%2Epast%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dzoom%2Dout%5D%2Epast%2C%0A%2Ereveal%2Ezoom%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%2816%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%2816%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%3Dzoom%5D%2Efuture%2C%0A%2Ereveal%20%2Eslides%20%3E%20section%20%3E%20section%5Bdata%2Dtransition%7E%3Dzoom%2Din%5D%2Efuture%2C%0A%2Ereveal%2Ezoom%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E2%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E2%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20CUBE%20TRANSITION%0A%20%2A%0A%20%2A%20WARNING%3A%0A%20%2A%20this%20is%20deprecated%20and%20will%20be%20removed%20in%20a%0A%20%2A%20future%20version%2E%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Ecube%20%2Eslides%20%7B%0A%20%20%2Dwebkit%2Dperspective%3A%201300px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%201300px%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20section%20%7B%0A%20%20padding%3A%2030px%3B%0A%20%20min%2Dheight%3A%20700px%3B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%0A%2Ereveal%2Ecenter%2Ecube%20%2Eslides%20section%20%7B%0A%20%20min%2Dheight%3A%200%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20section%3Anot%28%2Estack%29%3Abefore%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20left%3A%200%3B%0A%20%20top%3A%200%3B%0A%20%20background%3A%20rgba%280%2C%200%2C%200%2C%200%2E1%29%3B%0A%20%20border%2Dradius%3A%204px%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateZ%28%2D20px%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translateZ%28%2D20px%29%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20section%3Anot%28%2Estack%29%3Aafter%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20width%3A%2090%25%3B%0A%20%20height%3A%2030px%3B%0A%20%20left%3A%205%25%3B%0A%20%20bottom%3A%200%3B%0A%20%20background%3A%20none%3B%0A%20%20z%2Dindex%3A%201%3B%0A%20%20border%2Dradius%3A%204px%3B%0A%20%20box%2Dshadow%3A%200px%2095px%2025px%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateZ%28%2D90px%29%20rotateX%2865deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translateZ%28%2D90px%29%20rotateX%2865deg%29%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20%3E%20section%2Estack%20%7B%0A%20%20padding%3A%200%3B%0A%20%20background%3A%20none%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20%3E%20section%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%20100%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%20100%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20%3E%20section%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20%3E%20section%20%3E%20section%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%20100%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%20100%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%2890deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%2890deg%29%3B%20%7D%0A%0A%2Ereveal%2Ecube%20%2Eslides%20%3E%20section%20%3E%20section%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%28%2D90deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%28%2D90deg%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PAGE%20TRANSITION%0A%20%2A%0A%20%2A%20WARNING%3A%0A%20%2A%20this%20is%20deprecated%20and%20will%20be%20removed%20in%20a%0A%20%2A%20future%20version%2E%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Epage%20%2Eslides%20%7B%0A%20%20%2Dwebkit%2Dperspective%2Dorigin%3A%200%25%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%2Dorigin%3A%200%25%2050%25%3B%0A%20%20%2Dwebkit%2Dperspective%3A%203000px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%203000px%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20section%20%7B%0A%20%20padding%3A%2030px%3B%0A%20%20min%2Dheight%3A%20700px%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20section%2Epast%20%7B%0A%20%20z%2Dindex%3A%2012%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20section%3Anot%28%2Estack%29%3Abefore%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20left%3A%200%3B%0A%20%20top%3A%200%3B%0A%20%20background%3A%20rgba%280%2C%200%2C%200%2C%200%2E1%29%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateZ%28%2D20px%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translateZ%28%2D20px%29%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20section%3Anot%28%2Estack%29%3Aafter%20%7B%0A%20%20content%3A%20%27%27%3B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20width%3A%2090%25%3B%0A%20%20height%3A%2030px%3B%0A%20%20left%3A%205%25%3B%0A%20%20bottom%3A%200%3B%0A%20%20background%3A%20none%3B%0A%20%20z%2Dindex%3A%201%3B%0A%20%20border%2Dradius%3A%204px%3B%0A%20%20box%2Dshadow%3A%200px%2095px%2025px%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translateZ%28%2D90px%29%20rotateX%2865deg%29%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20%3E%20section%2Estack%20%7B%0A%20%20padding%3A%200%3B%0A%20%20background%3A%20none%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20%3E%20section%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D40%25%2C%200%2C%200%29%20rotateY%28%2D80deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D40%25%2C%200%2C%200%29%20rotateY%28%2D80deg%29%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20%3E%20section%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%20100%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%20100%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20%3E%20section%20%3E%20section%2Epast%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D40%25%2C%200%29%20rotateX%2880deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D40%25%2C%200%29%20rotateX%2880deg%29%3B%20%7D%0A%0A%2Ereveal%2Epage%20%2Eslides%20%3E%20section%20%3E%20section%2Efuture%20%7B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%200%25%20100%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%200%25%20100%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%200%2C%200%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20FADE%20TRANSITION%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Dfade%5D%2C%0A%2Ereveal%2Efade%20%2Eslides%20section%3Anot%28%5Bdata%2Dtransition%5D%29%2C%0A%2Ereveal%2Efade%20%2Eslides%20%3E%20section%20%3E%20section%3Anot%28%5Bdata%2Dtransition%5D%29%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20none%3B%0A%20%20transition%3A%20opacity%200%2E5s%3B%20%7D%0A%0A%2Ereveal%2Efade%2Eoverview%20%2Eslides%20section%2C%0A%2Ereveal%2Efade%2Eoverview%20%2Eslides%20%3E%20section%20%3E%20section%20%7B%0A%20%20transition%3A%20none%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20NO%20TRANSITION%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eslides%20section%5Bdata%2Dtransition%3Dnone%5D%2C%0A%2Ereveal%2Enone%20%2Eslides%20section%3Anot%28%5Bdata%2Dtransition%5D%29%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20none%3B%0A%20%20transition%3A%20none%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PAUSED%20MODE%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Epause%2Doverlay%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20background%3A%20black%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20opacity%3A%200%3B%0A%20%20z%2Dindex%3A%20100%3B%0A%20%20transition%3A%20all%201s%20ease%3B%20%7D%0A%0A%2Ereveal%20%2Epause%2Doverlay%20%2Eresume%2Dbutton%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20bottom%3A%2020px%3B%0A%20%20right%3A%2020px%3B%0A%20%20color%3A%20%23ccc%3B%0A%20%20border%2Dradius%3A%202px%3B%0A%20%20padding%3A%206px%2014px%3B%0A%20%20border%3A%202px%20solid%20%23ccc%3B%0A%20%20font%2Dsize%3A%2016px%3B%0A%20%20background%3A%20transparent%3B%0A%20%20cursor%3A%20pointer%3B%20%7D%0A%20%20%2Ereveal%20%2Epause%2Doverlay%20%2Eresume%2Dbutton%3Ahover%20%7B%0A%20%20%20%20color%3A%20%23fff%3B%0A%20%20%20%20border%2Dcolor%3A%20%23fff%3B%20%7D%0A%0A%2Ereveal%2Epaused%20%2Epause%2Doverlay%20%7B%0A%20%20visibility%3A%20visible%3B%0A%20%20opacity%3A%201%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20FALLBACK%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Eno%2Dtransforms%20%7B%0A%20%20overflow%2Dy%3A%20auto%3B%20%7D%0A%0A%2Eno%2Dtransforms%20%2Ereveal%20%7B%0A%20%20overflow%3A%20visible%3B%20%7D%0A%0A%2Eno%2Dtransforms%20%2Ereveal%20%2Eslides%20%7B%0A%20%20position%3A%20relative%3B%0A%20%20width%3A%2080%25%3B%0A%20%20max%2Dwidth%3A%201280px%3B%0A%20%20height%3A%20auto%3B%0A%20%20top%3A%200%3B%0A%20%20margin%3A%200%20auto%3B%0A%20%20text%2Dalign%3A%20center%3B%20%7D%0A%0A%2Eno%2Dtransforms%20%2Ereveal%20%2Econtrols%2C%0A%2Eno%2Dtransforms%20%2Ereveal%20%2Eprogress%20%7B%0A%20%20display%3A%20none%3B%20%7D%0A%0A%2Eno%2Dtransforms%20%2Ereveal%20%2Eslides%20section%20%7B%0A%20%20display%3A%20block%3B%0A%20%20opacity%3A%201%3B%0A%20%20position%3A%20relative%3B%0A%20%20height%3A%20auto%3B%0A%20%20min%2Dheight%3A%200%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20margin%3A%2010vh%200%3B%0A%20%20margin%3A%2070px%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Eno%2Dtransition%2C%0A%2Ereveal%20%2Eno%2Dtransition%20%2A%20%7B%0A%20%20transition%3A%20none%20%21important%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PER%2DSLIDE%20BACKGROUNDS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Ebackgrounds%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20%2Dwebkit%2Dperspective%3A%20600px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%20600px%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dbackground%20%7B%0A%20%20display%3A%20none%3B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20overflow%3A%20hidden%3B%0A%20%20background%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%0A%20%20transition%3A%20all%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dbackground%2Dcontent%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20background%2Dposition%3A%2050%25%2050%25%3B%0A%20%20background%2Drepeat%3A%20no%2Drepeat%3B%0A%20%20background%2Dsize%3A%20cover%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dbackground%2Estack%20%7B%0A%20%20display%3A%20block%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dbackground%2Epresent%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20visible%3B%0A%20%20z%2Dindex%3A%202%3B%20%7D%0A%0A%2Eprint%2Dpdf%20%2Ereveal%20%2Eslide%2Dbackground%20%7B%0A%20%20opacity%3A%201%20%21important%3B%0A%20%20visibility%3A%20visible%20%21important%3B%20%7D%0A%0A%2F%2A%20Video%20backgrounds%20%2A%2F%0A%2Ereveal%20%2Eslide%2Dbackground%20video%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20max%2Dwidth%3A%20none%3B%0A%20%20max%2Dheight%3A%20none%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20%2Do%2Dobject%2Dfit%3A%20cover%3B%0A%20%20%20%20%20object%2Dfit%3A%20cover%3B%20%7D%0A%0A%2Ereveal%20%2Eslide%2Dbackground%5Bdata%2Dbackground%2Dsize%3D%22contain%22%5D%20video%20%7B%0A%20%20%2Do%2Dobject%2Dfit%3A%20contain%3B%0A%20%20%20%20%20object%2Dfit%3A%20contain%3B%20%7D%0A%0A%2F%2A%20Immediate%20transition%20style%20%2A%2F%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dnone%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%5Bdata%2Dbackground%2Dtransition%3Dnone%5D%20%7B%0A%20%20transition%3A%20none%3B%20%7D%0A%0A%2F%2A%20Slide%20%2A%2F%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28%2D100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28%2D100%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%28100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%28100%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20%2D100%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20%2D100%25%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dslide%5D%20%7B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate%280%2C%20100%25%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate%280%2C%20100%25%29%3B%20%7D%0A%0A%2F%2A%20Convex%20%2A%2F%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%2890deg%29%20translate3d%280%2C%20%2D100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%2890deg%29%20translate3d%280%2C%20%2D100%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dconvex%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%28%2D90deg%29%20translate3d%280%2C%20100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%28%2D90deg%29%20translate3d%280%2C%20100%25%2C%200%29%3B%20%7D%0A%0A%2F%2A%20Concave%20%2A%2F%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28%2D100%25%2C%200%2C%200%29%20rotateY%2890deg%29%20translate3d%28%2D100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%28100%25%2C%200%2C%200%29%20rotateY%28%2D90deg%29%20translate3d%28100%25%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%28%2D90deg%29%20translate3d%280%2C%20%2D100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20%2D100%25%2C%200%29%20rotateX%28%2D90deg%29%20translate3d%280%2C%20%2D100%25%2C%200%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dconcave%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%2890deg%29%20translate3d%280%2C%20100%25%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280%2C%20100%25%2C%200%29%20rotateX%2890deg%29%20translate3d%280%2C%20100%25%2C%200%29%3B%20%7D%0A%0A%2F%2A%20Zoom%20%2A%2F%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%7B%0A%20%20transition%2Dtiming%2Dfunction%3A%20ease%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%2816%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%2816%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E2%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E2%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Epast%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%2816%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%2816%29%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%2C%0A%2Ereveal%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%3E%20%2Eslide%2Dbackground%2Efuture%5Bdata%2Dbackground%2Dtransition%3Dzoom%5D%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E2%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E2%29%3B%20%7D%0A%0A%2F%2A%20Global%20transition%20speed%20settings%20%2A%2F%0A%2Ereveal%5Bdata%2Dtransition%2Dspeed%3D%22fast%22%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%7B%0A%20%20transition%2Dduration%3A%20400ms%3B%20%7D%0A%0A%2Ereveal%5Bdata%2Dtransition%2Dspeed%3D%22slow%22%5D%20%3E%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%7B%0A%20%20transition%2Dduration%3A%201200ms%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20OVERVIEW%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Eoverview%20%7B%0A%20%20%2Dwebkit%2Dperspective%2Dorigin%3A%2050%25%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%2Dorigin%3A%2050%25%2050%25%3B%0A%20%20%2Dwebkit%2Dperspective%3A%20700px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%20700px%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20%7B%0A%20%20%20%20%2Dmoz%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%20%7B%0A%20%20%20%20height%3A%20100%25%3B%0A%20%20%20%20top%3A%200%20%21important%3B%0A%20%20%20%20opacity%3A%201%20%21important%3B%0A%20%20%20%20overflow%3A%20hidden%3B%0A%20%20%20%20visibility%3A%20visible%20%21important%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%20%20%20%20box%2Dsizing%3A%20border%2Dbox%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%3Ahover%2C%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%2Epresent%20%7B%0A%20%20%20%20outline%3A%2010px%20solid%20rgba%28150%2C%20150%2C%20150%2C%200%2E4%29%3B%0A%20%20%20%20outline%2Doffset%3A%2010px%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%20%2Efragment%20%7B%0A%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20transition%3A%20none%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%3Aafter%2C%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20section%3Abefore%20%7B%0A%20%20%20%20display%3A%20none%20%21important%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Eslides%20%3E%20section%2Estack%20%7B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20top%3A%200%20%21important%3B%0A%20%20%20%20background%3A%20none%3B%0A%20%20%20%20outline%3A%20none%3B%0A%20%20%20%20overflow%3A%20visible%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Ebackgrounds%20%7B%0A%20%20%20%20%2Dwebkit%2Dperspective%3A%20inherit%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20perspective%3A%20inherit%3B%0A%20%20%20%20%2Dmoz%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%7B%0A%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20visibility%3A%20visible%3B%0A%20%20%20%20outline%3A%2010px%20solid%20rgba%28150%2C%20150%2C%20150%2C%200%2E1%29%3B%0A%20%20%20%20outline%2Doffset%3A%2010px%3B%20%7D%0A%20%20%2Ereveal%2Eoverview%20%2Ebackgrounds%20%2Eslide%2Dbackground%2Estack%20%7B%0A%20%20%20%20overflow%3A%20visible%3B%20%7D%0A%0A%2Ereveal%2Eoverview%20%2Eslides%20section%2C%0A%2Ereveal%2Eoverview%2Ddeactivating%20%2Eslides%20section%20%7B%0A%20%20transition%3A%20none%3B%20%7D%0A%0A%2Ereveal%2Eoverview%20%2Ebackgrounds%20%2Eslide%2Dbackground%2C%0A%2Ereveal%2Eoverview%2Ddeactivating%20%2Ebackgrounds%20%2Eslide%2Dbackground%20%7B%0A%20%20transition%3A%20none%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20RTL%20SUPPORT%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Ertl%20%2Eslides%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h1%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h2%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h3%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h4%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h5%2C%0A%2Ereveal%2Ertl%20%2Eslides%20h6%20%7B%0A%20%20direction%3A%20rtl%3B%0A%20%20font%2Dfamily%3A%20sans%2Dserif%3B%20%7D%0A%0A%2Ereveal%2Ertl%20pre%2C%0A%2Ereveal%2Ertl%20code%20%7B%0A%20%20direction%3A%20ltr%3B%20%7D%0A%0A%2Ereveal%2Ertl%20ol%2C%0A%2Ereveal%2Ertl%20ul%20%7B%0A%20%20text%2Dalign%3A%20right%3B%20%7D%0A%0A%2Ereveal%2Ertl%20%2Eprogress%20span%20%7B%0A%20%20float%3A%20right%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PARALLAX%20BACKGROUND%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%2Ehas%2Dparallax%2Dbackground%20%2Ebackgrounds%20%7B%0A%20%20transition%3A%20all%200%2E8s%20ease%3B%20%7D%0A%0A%2F%2A%20Global%20transition%20speed%20settings%20%2A%2F%0A%2Ereveal%2Ehas%2Dparallax%2Dbackground%5Bdata%2Dtransition%2Dspeed%3D%22fast%22%5D%20%2Ebackgrounds%20%7B%0A%20%20transition%2Dduration%3A%20400ms%3B%20%7D%0A%0A%2Ereveal%2Ehas%2Dparallax%2Dbackground%5Bdata%2Dtransition%2Dspeed%3D%22slow%22%5D%20%2Ebackgrounds%20%7B%0A%20%20transition%2Dduration%3A%201200ms%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20OVERLAY%20FOR%20LINK%20PREVIEWS%20AND%20HELP%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%3E%20%2Eoverlay%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20z%2Dindex%3A%201000%3B%0A%20%20background%3A%20rgba%280%2C%200%2C%200%2C%200%2E9%29%3B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20transition%3A%20all%200%2E3s%20ease%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Evisible%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20visible%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20%2Espinner%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20block%3B%0A%20%20top%3A%2050%25%3B%0A%20%20left%3A%2050%25%3B%0A%20%20width%3A%2032px%3B%0A%20%20height%3A%2032px%3B%0A%20%20margin%3A%20%2D16px%200%200%20%2D16px%3B%0A%20%20z%2Dindex%3A%2010%3B%0A%20%20background%2Dimage%3A%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODlhIAAgAPMAAJmZmf%252F%252F%252F6%252Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%252FLy8vz8%252FAAAAAAAAAAAACH%252FC05FVFNDQVBFMi4wAwEAAAAh%252FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%252BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%252FV%252FnmOM82XiHRLYKhKP1oZmADdEAAAh%252BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%252FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%252BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%252BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%252BB6QDtuetcaBPnW6%252BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%252BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%252B%252BG%252Bw48edZPK%252BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%252BG%252BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%252BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%252BaV%252BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%252FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%252BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%252BE71SRQeyqUToLA7VxF0JDyIQh%252FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%252FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%252FjiuL04RGEBgwWhShRgQExHBAAh%252BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%252BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%252BE71SRQeyqUToLA7VxF0JDyIQh%252FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%252BE71SRQeyqUToLA7VxF0JDyIQh%252FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%252BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%252BMFCN6HAAIKgNggY0KtEBAAh%252BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%252BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%252BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%252BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%252Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%252BKr0SJ8MFihpNbx%252B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%252BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%253D%253D%29%3B%0A%20%20visibility%3A%20visible%3B%0A%20%20opacity%3A%200%2E6%3B%0A%20%20transition%3A%20all%200%2E3s%20ease%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20left%3A%200%3B%0A%20%20top%3A%200%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%2040px%3B%0A%20%20z%2Dindex%3A%202%3B%0A%20%20border%2Dbottom%3A%201px%20solid%20%23222%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20a%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%0A%20%20width%3A%2040px%3B%0A%20%20height%3A%2040px%3B%0A%20%20line%2Dheight%3A%2036px%3B%0A%20%20padding%3A%200%2010px%3B%0A%20%20float%3A%20right%3B%0A%20%20opacity%3A%200%2E6%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20a%3Ahover%20%7B%0A%20%20opacity%3A%201%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20a%20%2Eicon%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%0A%20%20width%3A%2020px%3B%0A%20%20height%3A%2020px%3B%0A%20%20background%2Dposition%3A%2050%25%2050%25%3B%0A%20%20background%2Dsize%3A%20100%25%3B%0A%20%20background%2Drepeat%3A%20no%2Drepeat%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20a%2Eclose%20%2Eicon%20%7B%0A%20%20background%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ%2F5wpM07QXuXc5X0opX2tEJcadjHuV80li%2FFgxTIEK%2F5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX%2BSfDjgx1wACQeJG1aChP9K%2FIMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA%2FSYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN%2B49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV%2BJCbntmvok7iTX4%2FUp9mgyTc%2FFJYDTcndgH%2FAA5A%2FCHsyEkVAAAAAElFTkSuQmCC%29%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20header%20a%2Eexternal%20%2Eicon%20%7B%0A%20%20background%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR%2B2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9%2BengMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR%2BAAqod%2FB97TRpQAAAABJRU5ErkJggg%3D%3D%29%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%20%2Eviewport%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20display%3A%20%2Dwebkit%2Dbox%3B%0A%20%20display%3A%20%2Dms%2Dflexbox%3B%0A%20%20display%3A%20flex%3B%0A%20%20top%3A%2040px%3B%0A%20%20right%3A%200%3B%0A%20%20bottom%3A%200%3B%0A%20%20left%3A%200%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%20%2Eviewport%20iframe%20%7B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20max%2Dwidth%3A%20100%25%3B%0A%20%20max%2Dheight%3A%20100%25%3B%0A%20%20border%3A%200%3B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20transition%3A%20all%200%2E3s%20ease%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%2Eloaded%20%2Eviewport%20iframe%20%7B%0A%20%20opacity%3A%201%3B%0A%20%20visibility%3A%20visible%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%2Eloaded%20%2Eviewport%2Dinner%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20z%2Dindex%3A%20%2D1%3B%0A%20%20left%3A%200%3B%0A%20%20top%3A%2045%25%3B%0A%20%20width%3A%20100%25%3B%0A%20%20text%2Dalign%3A%20center%3B%0A%20%20letter%2Dspacing%3A%20normal%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%20%2Ex%2Dframe%2Derror%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20transition%3A%20opacity%200%2E3s%20ease%200%2E3s%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%2Eloaded%20%2Ex%2Dframe%2Derror%20%7B%0A%20%20opacity%3A%201%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dpreview%2Eloaded%20%2Espinner%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20scale%280%2E2%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20scale%280%2E2%29%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%7B%0A%20%20overflow%3A%20auto%3B%0A%20%20color%3A%20%23fff%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20%7B%0A%20%20width%3A%20600px%3B%0A%20%20margin%3A%20auto%3B%0A%20%20padding%3A%2020px%2020px%2080px%2020px%3B%0A%20%20text%2Dalign%3A%20center%3B%0A%20%20letter%2Dspacing%3A%20normal%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20%2Etitle%20%7B%0A%20%20font%2Dsize%3A%2020px%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20table%20%7B%0A%20%20border%3A%201px%20solid%20%23fff%3B%0A%20%20border%2Dcollapse%3A%20collapse%3B%0A%20%20font%2Dsize%3A%2016px%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20table%20th%2C%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20table%20td%20%7B%0A%20%20width%3A%20200px%3B%0A%20%20padding%3A%2014px%3B%0A%20%20border%3A%201px%20solid%20%23fff%3B%0A%20%20vertical%2Dalign%3A%20middle%3B%20%7D%0A%0A%2Ereveal%20%3E%20%2Eoverlay%2Eoverlay%2Dhelp%20%2Eviewport%20%2Eviewport%2Dinner%20table%20th%20%7B%0A%20%20padding%2Dtop%3A%2020px%3B%0A%20%20padding%2Dbottom%3A%2020px%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PLAYBACK%20COMPONENT%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eplayback%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20left%3A%2015px%3B%0A%20%20bottom%3A%2020px%3B%0A%20%20z%2Dindex%3A%2030%3B%0A%20%20cursor%3A%20pointer%3B%0A%20%20transition%3A%20all%20400ms%20ease%3B%0A%20%20%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3A%20rgba%280%2C%200%2C%200%2C%200%29%3B%20%7D%0A%0A%2Ereveal%2Eoverview%20%2Eplayback%20%7B%0A%20%20opacity%3A%200%3B%0A%20%20visibility%3A%20hidden%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20CODE%20HIGHLGIHTING%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Ehljs%20table%20%7B%0A%20%20margin%3A%20initial%3B%20%7D%0A%0A%2Ereveal%20%2Ehljs%2Dln%2Dcode%2C%0A%2Ereveal%20%2Ehljs%2Dln%2Dnumbers%20%7B%0A%20%20padding%3A%200%3B%0A%20%20border%3A%200%3B%20%7D%0A%0A%2Ereveal%20%2Ehljs%2Dln%2Dnumbers%20%7B%0A%20%20opacity%3A%200%2E6%3B%0A%20%20padding%2Dright%3A%200%2E75em%3B%0A%20%20text%2Dalign%3A%20right%3B%0A%20%20vertical%2Dalign%3A%20top%3B%20%7D%0A%0A%2Ereveal%20%2Ehljs%2Ehas%2Dhighlights%20tr%3Anot%28%2Ehighlight%2Dline%29%20%7B%0A%20%20opacity%3A%200%2E4%3B%20%7D%0A%0A%2Ereveal%20%2Ehljs%3Anot%28%3Afirst%2Dchild%29%2Efragment%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%200%3B%0A%20%20width%3A%20100%25%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20ROLLING%20LINKS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eroll%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%0A%20%20line%2Dheight%3A%201%2E2%3B%0A%20%20overflow%3A%20hidden%3B%0A%20%20vertical%2Dalign%3A%20top%3B%0A%20%20%2Dwebkit%2Dperspective%3A%20400px%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%3A%20400px%3B%0A%20%20%2Dwebkit%2Dperspective%2Dorigin%3A%2050%25%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20perspective%2Dorigin%3A%2050%25%2050%25%3B%20%7D%0A%0A%2Ereveal%20%2Eroll%3Ahover%20%7B%0A%20%20background%3A%20none%3B%0A%20%20text%2Dshadow%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Eroll%20span%20%7B%0A%20%20display%3A%20block%3B%0A%20%20position%3A%20relative%3B%0A%20%20padding%3A%200%202px%3B%0A%20%20pointer%2Devents%3A%20none%3B%0A%20%20transition%3A%20all%20400ms%20ease%3B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%2050%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%2050%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dstyle%3A%20preserve%2D3d%3B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%20%7D%0A%0A%2Ereveal%20%2Eroll%3Ahover%20span%20%7B%0A%20%20background%3A%20rgba%280%2C%200%2C%200%2C%200%2E5%29%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280px%2C%200px%2C%20%2D45px%29%20rotateX%2890deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280px%2C%200px%2C%20%2D45px%29%20rotateX%2890deg%29%3B%20%7D%0A%0A%2Ereveal%20%2Eroll%20span%3Aafter%20%7B%0A%20%20content%3A%20attr%28data%2Dtitle%29%3B%0A%20%20display%3A%20block%3B%0A%20%20position%3A%20absolute%3B%0A%20%20left%3A%200%3B%0A%20%20top%3A%200%3B%0A%20%20padding%3A%200%202px%3B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20hidden%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20hidden%3B%0A%20%20%2Dwebkit%2Dtransform%2Dorigin%3A%2050%25%200%25%3B%0A%20%20%20%20%20%20%20%20%20%20transform%2Dorigin%3A%2050%25%200%25%3B%0A%20%20%2Dwebkit%2Dtransform%3A%20translate3d%280px%2C%20110%25%2C%200px%29%20rotateX%28%2D90deg%29%3B%0A%20%20%20%20%20%20%20%20%20%20transform%3A%20translate3d%280px%2C%20110%25%2C%200px%29%20rotateX%28%2D90deg%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20SPEAKER%20NOTES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20aside%2Enotes%20%7B%0A%20%20display%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Espeaker%2Dnotes%20%7B%0A%20%20display%3A%20none%3B%0A%20%20position%3A%20absolute%3B%0A%20%20width%3A%2033%2E3333333333%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20top%3A%200%3B%0A%20%20left%3A%20100%25%3B%0A%20%20padding%3A%2014px%2018px%2014px%2018px%3B%0A%20%20z%2Dindex%3A%201%3B%0A%20%20font%2Dsize%3A%2018px%3B%0A%20%20line%2Dheight%3A%201%2E4%3B%0A%20%20border%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E05%29%3B%0A%20%20color%3A%20%23222%3B%0A%20%20background%2Dcolor%3A%20%23f5f5f5%3B%0A%20%20overflow%3A%20auto%3B%0A%20%20box%2Dsizing%3A%20border%2Dbox%3B%0A%20%20text%2Dalign%3A%20left%3B%0A%20%20font%2Dfamily%3A%20Helvetica%2C%20sans%2Dserif%3B%0A%20%20%2Dwebkit%2Doverflow%2Dscrolling%3A%20touch%3B%20%7D%0A%20%20%2Ereveal%20%2Espeaker%2Dnotes%20%2Enotes%2Dplaceholder%20%7B%0A%20%20%20%20color%3A%20%23ccc%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%20%7D%0A%20%20%2Ereveal%20%2Espeaker%2Dnotes%3Afocus%20%7B%0A%20%20%20%20outline%3A%20none%3B%20%7D%0A%20%20%2Ereveal%20%2Espeaker%2Dnotes%3Abefore%20%7B%0A%20%20%20%20content%3A%20%27Speaker%20notes%27%3B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20margin%2Dbottom%3A%2010px%3B%0A%20%20%20%20opacity%3A%200%2E5%3B%20%7D%0A%0A%2Ereveal%2Eshow%2Dnotes%20%7B%0A%20%20max%2Dwidth%3A%2075%25%3B%0A%20%20overflow%3A%20visible%3B%20%7D%0A%0A%2Ereveal%2Eshow%2Dnotes%20%2Espeaker%2Dnotes%20%7B%0A%20%20display%3A%20block%3B%20%7D%0A%0A%40media%20screen%20and%20%28min%2Dwidth%3A%201600px%29%20%7B%0A%20%20%2Ereveal%20%2Espeaker%2Dnotes%20%7B%0A%20%20%20%20font%2Dsize%3A%2020px%3B%20%7D%20%7D%0A%0A%40media%20screen%20and%20%28max%2Dwidth%3A%201024px%29%20%7B%0A%20%20%2Ereveal%2Eshow%2Dnotes%20%7B%0A%20%20%20%20border%2Dleft%3A%200%3B%0A%20%20%20%20max%2Dwidth%3A%20none%3B%0A%20%20%20%20max%2Dheight%3A%2070%25%3B%0A%20%20%20%20max%2Dheight%3A%2070vh%3B%0A%20%20%20%20overflow%3A%20visible%3B%20%7D%0A%20%20%2Ereveal%2Eshow%2Dnotes%20%2Espeaker%2Dnotes%20%7B%0A%20%20%20%20top%3A%20100%25%3B%0A%20%20%20%20left%3A%200%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20height%3A%2042%2E8571428571%25%3B%0A%20%20%20%20height%3A%2030vh%3B%0A%20%20%20%20border%3A%200%3B%20%7D%20%7D%0A%0A%40media%20screen%20and%20%28max%2Dwidth%3A%20600px%29%20%7B%0A%20%20%2Ereveal%2Eshow%2Dnotes%20%7B%0A%20%20%20%20max%2Dheight%3A%2060%25%3B%0A%20%20%20%20max%2Dheight%3A%2060vh%3B%20%7D%0A%20%20%2Ereveal%2Eshow%2Dnotes%20%2Espeaker%2Dnotes%20%7B%0A%20%20%20%20top%3A%20100%25%3B%0A%20%20%20%20height%3A%2066%2E6666666667%25%3B%0A%20%20%20%20height%3A%2040vh%3B%20%7D%0A%20%20%2Ereveal%20%2Espeaker%2Dnotes%20%7B%0A%20%20%20%20font%2Dsize%3A%2014px%3B%20%7D%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20ZOOM%20PLUGIN%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ezoomed%20%2Ereveal%20%2A%2C%0A%2Ezoomed%20%2Ereveal%20%2A%3Abefore%2C%0A%2Ezoomed%20%2Ereveal%20%2A%3Aafter%20%7B%0A%20%20%2Dwebkit%2Dbackface%2Dvisibility%3A%20visible%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20backface%2Dvisibility%3A%20visible%20%21important%3B%20%7D%0A%0A%2Ezoomed%20%2Ereveal%20%2Eprogress%2C%0A%2Ezoomed%20%2Ereveal%20%2Econtrols%20%7B%0A%20%20opacity%3A%200%3B%20%7D%0A%0A%2Ezoomed%20%2Ereveal%20%2Eroll%20span%20%7B%0A%20%20background%3A%20none%3B%20%7D%0A%0A%2Ezoomed%20%2Ereveal%20%2Eroll%20span%3Aafter%20%7B%0A%20%20visibility%3A%20hidden%3B%20%7D%0A" rel="stylesheet">
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
</style>
<link href="data:text/css; charset=utf-8,%2F%2A%2A%0A%20%2A%20White%20theme%20for%20reveal%2Ejs%2E%20This%20is%20the%20opposite%20of%20the%20%27black%27%20theme%2E%0A%20%2A%0A%20%2A%20By%20Hakim%20El%20Hattab%2C%20http%3A%2F%2Fhakim%2Ese%0A%20%2A%2F%0A%40import%20url%28%2E%2E%2F%2E%2E%2Flib%2Ffont%2Fsource%2Dsans%2Dpro%2Fsource%2Dsans%2Dpro%2Ecss%29%3B%0Asection%2Ehas%2Ddark%2Dbackground%2C%20section%2Ehas%2Ddark%2Dbackground%20h1%2C%20section%2Ehas%2Ddark%2Dbackground%20h2%2C%20section%2Ehas%2Ddark%2Dbackground%20h3%2C%20section%2Ehas%2Ddark%2Dbackground%20h4%2C%20section%2Ehas%2Ddark%2Dbackground%20h5%2C%20section%2Ehas%2Ddark%2Dbackground%20h6%20%7B%0A%20%20color%3A%20%23fff%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20GLOBAL%20STYLES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0Abody%20%7B%0A%20%20background%3A%20%23fff%3B%0A%20%20background%2Dcolor%3A%20%23fff%3B%20%7D%0A%0A%2Ereveal%20%7B%0A%20%20font%2Dfamily%3A%20%22Source%20Sans%20Pro%22%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%20%20font%2Dsize%3A%2042px%3B%0A%20%20font%2Dweight%3A%20normal%3B%0A%20%20color%3A%20%23222%3B%20%7D%0A%0A%3A%3Aselection%20%7B%0A%20%20color%3A%20%23fff%3B%0A%20%20background%3A%20%2398bdef%3B%0A%20%20text%2Dshadow%3A%20none%3B%20%7D%0A%0A%3A%3A%2Dmoz%2Dselection%20%7B%0A%20%20color%3A%20%23fff%3B%0A%20%20background%3A%20%2398bdef%3B%0A%20%20text%2Dshadow%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Eslides%20section%2C%0A%2Ereveal%20%2Eslides%20section%20%3E%20section%20%7B%0A%20%20line%2Dheight%3A%201%2E3%3B%0A%20%20font%2Dweight%3A%20inherit%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20HEADERS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20h1%2C%0A%2Ereveal%20h2%2C%0A%2Ereveal%20h3%2C%0A%2Ereveal%20h4%2C%0A%2Ereveal%20h5%2C%0A%2Ereveal%20h6%20%7B%0A%20%20margin%3A%200%200%2020px%200%3B%0A%20%20color%3A%20%23222%3B%0A%20%20font%2Dfamily%3A%20%22Source%20Sans%20Pro%22%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%20%20font%2Dweight%3A%20600%3B%0A%20%20line%2Dheight%3A%201%2E2%3B%0A%20%20letter%2Dspacing%3A%20normal%3B%0A%20%20text%2Dtransform%3A%20uppercase%3B%0A%20%20text%2Dshadow%3A%20none%3B%0A%20%20word%2Dwrap%3A%20break%2Dword%3B%20%7D%0A%0A%2Ereveal%20h1%20%7B%0A%20%20font%2Dsize%3A%202%2E5em%3B%20%7D%0A%0A%2Ereveal%20h2%20%7B%0A%20%20font%2Dsize%3A%201%2E6em%3B%20%7D%0A%0A%2Ereveal%20h3%20%7B%0A%20%20font%2Dsize%3A%201%2E3em%3B%20%7D%0A%0A%2Ereveal%20h4%20%7B%0A%20%20font%2Dsize%3A%201em%3B%20%7D%0A%0A%2Ereveal%20h1%20%7B%0A%20%20text%2Dshadow%3A%20none%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20OTHER%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20p%20%7B%0A%20%20margin%3A%2020px%200%3B%0A%20%20line%2Dheight%3A%201%2E3%3B%20%7D%0A%0A%2F%2A%20Ensure%20certain%20elements%20are%20never%20larger%20than%20the%20slide%20itself%20%2A%2F%0A%2Ereveal%20img%2C%0A%2Ereveal%20video%2C%0A%2Ereveal%20iframe%20%7B%0A%20%20max%2Dwidth%3A%2095%25%3B%0A%20%20max%2Dheight%3A%2095%25%3B%20%7D%0A%0A%2Ereveal%20strong%2C%0A%2Ereveal%20b%20%7B%0A%20%20font%2Dweight%3A%20bold%3B%20%7D%0A%0A%2Ereveal%20em%20%7B%0A%20%20font%2Dstyle%3A%20italic%3B%20%7D%0A%0A%2Ereveal%20ol%2C%0A%2Ereveal%20dl%2C%0A%2Ereveal%20ul%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%0A%20%20text%2Dalign%3A%20left%3B%0A%20%20margin%3A%200%200%200%201em%3B%20%7D%0A%0A%2Ereveal%20ol%20%7B%0A%20%20list%2Dstyle%2Dtype%3A%20decimal%3B%20%7D%0A%0A%2Ereveal%20ul%20%7B%0A%20%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0A%0A%2Ereveal%20ul%20ul%20%7B%0A%20%20list%2Dstyle%2Dtype%3A%20square%3B%20%7D%0A%0A%2Ereveal%20ul%20ul%20ul%20%7B%0A%20%20list%2Dstyle%2Dtype%3A%20circle%3B%20%7D%0A%0A%2Ereveal%20ul%20ul%2C%0A%2Ereveal%20ul%20ol%2C%0A%2Ereveal%20ol%20ol%2C%0A%2Ereveal%20ol%20ul%20%7B%0A%20%20display%3A%20block%3B%0A%20%20margin%2Dleft%3A%2040px%3B%20%7D%0A%0A%2Ereveal%20dt%20%7B%0A%20%20font%2Dweight%3A%20bold%3B%20%7D%0A%0A%2Ereveal%20dd%20%7B%0A%20%20margin%2Dleft%3A%2040px%3B%20%7D%0A%0A%2Ereveal%20blockquote%20%7B%0A%20%20display%3A%20block%3B%0A%20%20position%3A%20relative%3B%0A%20%20width%3A%2070%25%3B%0A%20%20margin%3A%2020px%20auto%3B%0A%20%20padding%3A%205px%3B%0A%20%20font%2Dstyle%3A%20italic%3B%0A%20%20background%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E05%29%3B%0A%20%20box%2Dshadow%3A%200px%200px%202px%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3B%20%7D%0A%0A%2Ereveal%20blockquote%20p%3Afirst%2Dchild%2C%0A%2Ereveal%20blockquote%20p%3Alast%2Dchild%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%20%7D%0A%0A%2Ereveal%20q%20%7B%0A%20%20font%2Dstyle%3A%20italic%3B%20%7D%0A%0A%2Ereveal%20pre%20%7B%0A%20%20display%3A%20block%3B%0A%20%20position%3A%20relative%3B%0A%20%20width%3A%2090%25%3B%0A%20%20margin%3A%2020px%20auto%3B%0A%20%20text%2Dalign%3A%20left%3B%0A%20%20font%2Dsize%3A%200%2E55em%3B%0A%20%20font%2Dfamily%3A%20monospace%3B%0A%20%20line%2Dheight%3A%201%2E2em%3B%0A%20%20word%2Dwrap%3A%20break%2Dword%3B%0A%20%20box%2Dshadow%3A%200px%205px%2015px%20rgba%280%2C%200%2C%200%2C%200%2E15%29%3B%20%7D%0A%0A%2Ereveal%20code%20%7B%0A%20%20font%2Dfamily%3A%20monospace%3B%0A%20%20text%2Dtransform%3A%20none%3B%20%7D%0A%0A%2Ereveal%20pre%20code%20%7B%0A%20%20display%3A%20block%3B%0A%20%20padding%3A%205px%3B%0A%20%20overflow%3A%20auto%3B%0A%20%20max%2Dheight%3A%20400px%3B%0A%20%20word%2Dwrap%3A%20normal%3B%20%7D%0A%0A%2Ereveal%20table%20%7B%0A%20%20margin%3A%20auto%3B%0A%20%20border%2Dcollapse%3A%20collapse%3B%0A%20%20border%2Dspacing%3A%200%3B%20%7D%0A%0A%2Ereveal%20table%20th%20%7B%0A%20%20font%2Dweight%3A%20bold%3B%20%7D%0A%0A%2Ereveal%20table%20th%2C%0A%2Ereveal%20table%20td%20%7B%0A%20%20text%2Dalign%3A%20left%3B%0A%20%20padding%3A%200%2E2em%200%2E5em%200%2E2em%200%2E5em%3B%0A%20%20border%2Dbottom%3A%201px%20solid%3B%20%7D%0A%0A%2Ereveal%20table%20th%5Balign%3D%22center%22%5D%2C%0A%2Ereveal%20table%20td%5Balign%3D%22center%22%5D%20%7B%0A%20%20text%2Dalign%3A%20center%3B%20%7D%0A%0A%2Ereveal%20table%20th%5Balign%3D%22right%22%5D%2C%0A%2Ereveal%20table%20td%5Balign%3D%22right%22%5D%20%7B%0A%20%20text%2Dalign%3A%20right%3B%20%7D%0A%0A%2Ereveal%20table%20tbody%20tr%3Alast%2Dchild%20th%2C%0A%2Ereveal%20table%20tbody%20tr%3Alast%2Dchild%20td%20%7B%0A%20%20border%2Dbottom%3A%20none%3B%20%7D%0A%0A%2Ereveal%20sup%20%7B%0A%20%20vertical%2Dalign%3A%20super%3B%0A%20%20font%2Dsize%3A%20smaller%3B%20%7D%0A%0A%2Ereveal%20sub%20%7B%0A%20%20vertical%2Dalign%3A%20sub%3B%0A%20%20font%2Dsize%3A%20smaller%3B%20%7D%0A%0A%2Ereveal%20small%20%7B%0A%20%20display%3A%20inline%2Dblock%3B%0A%20%20font%2Dsize%3A%200%2E6em%3B%0A%20%20line%2Dheight%3A%201%2E2em%3B%0A%20%20vertical%2Dalign%3A%20top%3B%20%7D%0A%0A%2Ereveal%20small%20%2A%20%7B%0A%20%20vertical%2Dalign%3A%20top%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20LINKS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20a%20%7B%0A%20%20color%3A%20%232a76dd%3B%0A%20%20text%2Ddecoration%3A%20none%3B%0A%20%20%2Dwebkit%2Dtransition%3A%20color%20%2E15s%20ease%3B%0A%20%20%2Dmoz%2Dtransition%3A%20color%20%2E15s%20ease%3B%0A%20%20transition%3A%20color%20%2E15s%20ease%3B%20%7D%0A%0A%2Ereveal%20a%3Ahover%20%7B%0A%20%20color%3A%20%236ca0e8%3B%0A%20%20text%2Dshadow%3A%20none%3B%0A%20%20border%3A%20none%3B%20%7D%0A%0A%2Ereveal%20%2Eroll%20span%3Aafter%20%7B%0A%20%20color%3A%20%23fff%3B%0A%20%20background%3A%20%231a53a1%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20IMAGES%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20section%20img%20%7B%0A%20%20margin%3A%2015px%200px%3B%0A%20%20background%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E12%29%3B%0A%20%20border%3A%204px%20solid%20%23222%3B%0A%20%20box%2Dshadow%3A%200%200%2010px%20rgba%280%2C%200%2C%200%2C%200%2E15%29%3B%20%7D%0A%0A%2Ereveal%20section%20img%2Eplain%20%7B%0A%20%20border%3A%200%3B%0A%20%20box%2Dshadow%3A%20none%3B%20%7D%0A%0A%2Ereveal%20a%20img%20%7B%0A%20%20%2Dwebkit%2Dtransition%3A%20all%20%2E15s%20linear%3B%0A%20%20%2Dmoz%2Dtransition%3A%20all%20%2E15s%20linear%3B%0A%20%20transition%3A%20all%20%2E15s%20linear%3B%20%7D%0A%0A%2Ereveal%20a%3Ahover%20img%20%7B%0A%20%20background%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E2%29%3B%0A%20%20border%2Dcolor%3A%20%232a76dd%3B%0A%20%20box%2Dshadow%3A%200%200%2020px%20rgba%280%2C%200%2C%200%2C%200%2E55%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20NAVIGATION%20CONTROLS%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Econtrols%20%7B%0A%20%20color%3A%20%232a76dd%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PROGRESS%20BAR%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%2Ereveal%20%2Eprogress%20%7B%0A%20%20background%3A%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3B%0A%20%20color%3A%20%232a76dd%3B%20%7D%0A%0A%2Ereveal%20%2Eprogress%20span%20%7B%0A%20%20%2Dwebkit%2Dtransition%3A%20width%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%0A%20%20%2Dmoz%2Dtransition%3A%20width%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%0A%20%20transition%3A%20width%20800ms%20cubic%2Dbezier%280%2E26%2C%200%2E86%2C%200%2E44%2C%200%2E985%29%3B%20%7D%0A%0A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%0A%20%2A%20PRINT%20BACKGROUND%0A%20%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2F%0A%40media%20print%20%7B%0A%20%20%2Ebackgrounds%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23fff%3B%20%7D%20%7D%0A" rel="stylesheet" id="theme">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'https://revealjs.com/css/print/pdf.css' : 'https://revealjs.com/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="https://revealjs.com/lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h1 class="title">Rust Graz – 05 Data structures</h1>
<p class="author">Lukas Prokop</p>
<p class="date">27th of November, 2019</p>
</section>
<section class="slide level2">
<p><img src="data:image/png;base64,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yEBBUbnARCSa19stv+b07dE3a858+fXmzZvx7rvvCkxDFF1cB52IiIiIiIiIiPRgoNeL7vYjomMkLBbQiUioVatWYfPmzXK7fNJ0SBIvTYnMO2oEupsF9KgrLi5DcXGp3OYodIpnrsJK0RGIiIiIiIiIiIjCwmncxWGVioiE6e7uxrXXXiu33TkFyMpmwTTRjZ7CnSPQY2PGzFr59SOPPIKOjg6BaYiihyPQiYiIiIiIiIhIL1oad4mOkLBYQCciYa677jocOTI8BYnBYEBZxTTBiUg0/+AABgcH5DZHoMdGzew6JCUlAQD6+vpw3333CU5EFB0soBMRERERERERkV60cgS6MCygE5EQe/bswW233Sa3C4smISXFITARacHo6duNRiMys5wC0ySOpCQbZtaMjEL3eDwIhUICExFFR2ZOCYwmi+gYRERERERERERE42IBXRwW0IlIiGXLlmFgYHikcZLNhtLyKsGJSAtGF9CznW4YjUaBaRLL7Lnz5deffPIJ3nzzTYFpiKLDYDQiK69EdAwiIiIiIiIiIqJxdRxphH+wX3SMhMQCOhHF3Nq1a/HMM8/I7ZLSKpjNHBFIgLdnpIDO6dtjq6CgGMUlZXLb4/EITEMUPc7CSaIjEBERERERERERjSsUDKL94F7RMRISC+hEFFOBQABLly6V2+npmSgoLBeYiLTE5+2WX7vceQKTJKZZs+vl14899hhaWloEpiGKDq6DTkREREREREREetHSyGncRWABnYhiyuPxYMuWLXK7rGI6JEkSmIi0xOsbKaBzBHrszayphd1uBwAMDg7innvuERuIKAo4Ap2IiIiIiIiIiPSC66CLwQI6EcVMZ2cnrrnmGrmdm1eErOwcgYlISwYH+uEfHJDbLhbQY85isWJGTa3c9ng8CAaDAhMRqc/FAjoREREREREREelECwvoQrCATkQx89vf/hZtbW0AAKPRiLLyaYITkZZ4vSPrn5tMJmRmZgtMk7hqaxfIr/fu3YtXX31VYBoi9aVkOGFLTRcdg4iIiIiIiIiIaFwtjbtER0hILKATUUw0NDTg9ttvl9tFxZNgT04VmIi0ZnQB3el0w2DgR5QIObn5KC0bWSPa4/EITEMUHc4CroNORERERERERETa1+/tQs+xFtExEg6rE0QUE0uXLsXg4CAAwG5PRklpleBEpDU+78j6566cPIFJaPac+fLrp556CocOHRKYhkh9XAediIiIiIiIiIj0orWR07jHGgvoRBR1r776Kp577jm5XVw6FSazWWAi0qLRI9DdLq5/LtL0GXOQkjI8Q8TQ0BBWr14tOBGRupyFHIFORERERERERET6wHXQY48FdCKKqqGhISxdulRuZ2RkIb+gTGAi0qrPjEB3s4AuktlsxsyaWrm9YsUKBAIBgYmI1MUR6EREREREREREpBetTQ2iIyQcFtCJKKruuOMObN26VW6Xlk+DJEkCE5EWDfT3we8flNtuN6dwF622fqF8rjY1NeHFF18UnIhIPc6CckgSb4OJiIiIiIiIiEj7Wht3iY6QcPjNIRFFzbFjx3DdddfJ7fyCEmRl5whMRFo1evp2s9mM9IxMgWkIAJxON8rLK+W2x+MRmIZIXWarDemufNExiIiIiIiIiIiIxtV+eB8CQ4Pjb0iqYQGdiKLmmmuuQVtbGwDAZDKhpKxKcCLSqtEFdKcrBwYDP560YPbc+fLr559/HgcOHBCYhkhdXAediIiIiIiIiIj0IBgIoP3gPtExEgorFEQUFTt27MCdd94pt4uKK2G3pwpMRFo2ev1zN9c/14xp02chzZEOAAgEAli9erXgRETqcRZWjr8RERERERERERGRBrQ07RYdIaGwgE5EUXHZZZfB7/cDAJKTU1BcOkVwItKy0SPQXSyga4bRaMLMmXPl9sqVK+XzmkjvOAKdiIiIiIiIiIj0orWpQXSEhMICOhGp7vnnn8eLL74ot4tLp8JkMgtMRFr32RHoeQKT0L+qq18E6fiU+ocPH8azzz4rOBGROlhAJyIiIiIiIiIivWjlCPSYYgGdiFQ1NDSEyy+/XG5nZ7uQl18qMBFpXX9/L4aGRkY1cwS6tmRmZWPSpJEZJDwej8A0ROrJcBfCbLWJjkFERERERERERDSulsZdoiMkFBbQiUhVt912G7Zt2ya3i0urIEmSwESkdd6ekenbLRYL0tMzBaahE5kz9xT59Zo1a9DQwOmCSP8kyYDs/DLRMYiIiIiIiIiIiMbl62qHr6tddIyEwQI6Eammo6MDN9xwg9wuLCpDZpZbYCLSA9/o9c9duXzgQoOqqmciI2P4wYZQKIS77rpLcCIidXAadyIiIiIiIiIi0gtO4x47LKATkWquuuoqtLcPPwFlMplQVDJlnD2IAO+o9c85fbs2GQwGzKypldt33XUXBgYGBCYiUoezYJLoCERERERERERERGFpaWQBPVZYQCciVezYsQMrVqyQ2yVlU2C3pwpMRHrhHT0CnQV0zaqtXwiDYfi2obW1FU8++aTgRETKcQQ6ERERERERERHpRWszl9aMFRbQiUgVy5Ytw9DQEAAgJSUVhUWVghORXvT6Rkagu1lA16z09ExUTq6S2x6PR2AaInW4+FlFREREREREREQ60coR6DHDAjoRKfbMM8/gpZdektvFpVNhMpkFJiK96OvzyQ9eAByBrnVzaxfIr1977TVs375dYBoi5Wyp6Uh2ZImOQURERERERERENK62g3sRDAyNvyEpxgI6ESni9/uxfPlyue1y5SA3r0RcINKV0dO3W61JcDgyBKah8UyeMg1ZWU65fddddwlMQ6QOZyHXQSciIiIiIiIiIu0LDA2i48gB0TESAgvoRKTIX//6V+zatUtuF5VUQZIkgYlIT3w9n13/nD872mYwGFAzq05u33vvvejv7xeYiEg5VxEL6EREREREREREpA8tnMY9JlhAJ6KItba24vrrr5fbJSWTkJHpHGMPos/yern+ud7U1i+A0WQCALS3t+PRRx8VnIhIGWdBhegIREREREREREREYWltYgE9FlhAJ6KIXX311ejs7AQAmM1mFBRPFpyI9Mbn/ewIdNK+1FQHJk+ultsej0dgGiLlOIU7ERERERERERHpRStHoMcEC+hEFJHt27dj1apVcru0fCpstmSBiUhvQqEQfL4euc0Cun7U1i2QX69btw5bt24VmIZImeyCMhiMRtExiIiIiIiIiIiIxtXCEegxYRIdgIj0admyZRgaGgIApKamIZ9T4NIE9ff5EAgMyW1O4a4fkyqrkJXtRHtbKwBgxYoV+Mtf/iI4FVFkjCYLMtxFaD+0T3QU0jh7WiZmL/k6ymsWINmRhWRHtmoPX4SCQfgH+zHkH8DQQD/8gwPwdbWju+0wutuPoKvtMNoP7sOR/Z8gMDSoynsSERERERERkf70dBxFn7cLthSH6ChxjQV0IpqwJ598EmvWrJHbJaVVMJnMAhORHnlHTd+elGRDaio/8PVCkiTMnjMfL7/0NADgvvvuwx/+8AckJ3MWCtInZ2EFC+g0JktSMr577d1wOPOj0r9kMMCSZIclyQ6kDv+3rLySz20XGBrEkf2f4OCu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" alt="Data structures; 27th of November 2019 Rust Graz, lab10" /></p>
</section>
<section><section id="prologue" class="titleslide slide level1"><h1>Prologue</h1></section><section id="clarification-1-size-of-physical-and-virtual-memory-addresses" class="slide level2">
<h2>Clarification 1: size of physical and virtual memory addresses</h2>
<p>On 64-bit machines, we have 64-bit addresses for virtual and physical memory.</p>
<p>In the last years, Intel CPUs used 4-level paging and thus the lower 48 bits virtually to address bytes in memory. Most recently, <a href="https://en.wikipedia.org/wiki/Intel_5-level_paging">Intel CPU Ice Lake (Aug 2019) uses 5-level paging</a> and thus uses 57 bits effectively.</p>
</section><section id="clarification-1-size-of-physical-and-virtual-memory-addresses-1" class="slide level2">
<h2>Clarification 1: size of physical and virtual memory addresses</h2>
<p>For example, <a href="https://en.wikipedia.org/wiki/Tagged_pointer#Examples">the Objective-C runtime on iOS 7 on ARM64, notably used on the iPhone 5S,</a> uses <em>tagged pointers</em>.</p>
<p>48 bits ⇒ 256 TiB, 57 bits ⇒ 128 PiB</p>
</section><section id="clarification-2-stack-heap-collide.-why-a-segfault" class="slide level2">
<h2>Clarification 2: Stack & heap collide. Why a segfault?</h2>
<ul>
<li>Collision is called “Clashing”</li>
<li>There is a guard page between stack and heap</li>
<li>Access to the guard page triggers a segfault</li>
<li>64-bit address space is huge. You have plenty of space.</li>
</ul>
<p>via <a href="https://www.openwall.com/lists/oss-security/2017/06/19/1">Qualys Security Advisory</a> and <a href="https://stackoverflow.com/a/1335389">stackoverflow</a></p>
</section><section id="clarification-2-stack-heap-collide.-why-a-segfault-1" class="slide level2">
<h2>Clarification 2: Stack & heap collide. Why a segfault?</h2>
<p><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2ZzgiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDc5LjM3NDk5OCAxMDUuODMzMzQiCiAgIGhlaWdodD0iNDAwIgogICB3aWR0aD0iMzAwIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bWFya2VyCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiCiAgICAgICBpZD0ibWFya2VyMTI3MSIKICAgICAgIHJlZlg9IjAuMCIKICAgICAgIHJlZlk9IjAuMCIKICAgICAgIG9yaWVudD0iYXV0byI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMC42KSByb3RhdGUoMTgwKSB0cmFuc2xhdGUoMCwwKSIKICAgICAgICAgZD0iTSA4LjcxODU4NzgsNC4wMzM3MzUyIEwgLTIuMjA3Mjg5NSwwLjAxNjAxMzI1NiBMIDguNzE4NTg4NCwtNC4wMDE3MDc4IEMgNi45NzMwOTAwLC0xLjYyOTY0NjkgNi45ODMxNDc2LDEuNjE1NzQ0MSA4LjcxODU4NzgsNC4wMzM3MzUyIHogIgogICAgICAgICBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLXdpZHRoOjAuNjI1O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utb3BhY2l0eToxO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGgxMjY5IiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZTsiCiAgICAgICBpZD0iQXJyb3cxTWVuZCIKICAgICAgIHJlZlg9IjAuMCIKICAgICAgIHJlZlk9IjAuMCIKICAgICAgIG9yaWVudD0iYXV0byI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMC40KSByb3RhdGUoMTgwKSB0cmFuc2xhdGUoMTAsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MXB0O3N0cm9rZS1vcGFjaXR5OjE7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAuMCwwLjAgTCA1LjAsLTUuMCBMIC0xMi41LDAuMCBMIDUuMCw1LjAgTCAwLjAsMC4wIHogIgogICAgICAgICBpZD0icGF0aDk0NiIgLz4KICAgIDwvbWFya2VyPgogICAgPG1hcmtlcgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGU7IgogICAgICAgaWQ9IkFycm93Mk1lbmQiCiAgICAgICByZWZYPSIwLjAiCiAgICAgICByZWZZPSIwLjAiCiAgICAgICBvcmllbnQ9ImF1dG8iPgogICAgICA8cGF0aAogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuNikgcm90YXRlKDE4MCkgdHJhbnNsYXRlKDAsMCkiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1MiBMIC0yLjIwNzI4OTUsMC4wMTYwMTMyNTYgTCA4LjcxODU4ODQsLTQuMDAxNzA3OCBDIDYuOTczMDkwMCwtMS42Mjk2NDY5IDYuOTgzMTQ3NiwxLjYxNTc0NDEgOC43MTg1ODc4LDQuMDMzNzM1MiB6ICIKICAgICAgICAgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDowLjYyNTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLW9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgIGlkPSJwYXRoOTY0IiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSIKICAgICAgIGlkPSJtYXJrZXIxMjcxLTAiCiAgICAgICByZWZYPSIwIgogICAgICAgcmVmWT0iMCIKICAgICAgIG9yaWVudD0iYXV0byI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoLTAuNikiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1MiAtMi4yMDcyODk1LDAuMDE2MDEzMjYgOC43MTg1ODg0LC00LjAwMTcwNzggYyAtMS43NDU0OTg0LDIuMzcyMDYwOSAtMS43MzU0NDA4LDUuNjE3NDUxOSAtNmUtNyw4LjAzNTQ0MyB6IgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYyNTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGgxMjY5LTYiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjEyNzEtMC02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iPgogICAgICA8cGF0aAogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKC0wLjYpIgogICAgICAgICBkPSJNIDguNzE4NTg3OCw0LjAzMzczNTIgLTIuMjA3Mjg5NSwwLjAxNjAxMzI2IDguNzE4NTg4NCwtNC4wMDE3MDc4IGMgLTEuNzQ1NDk4NCwyLjM3MjA2MDkgLTEuNzM1NDQwOCw1LjYxNzQ1MTkgLTZlLTcsOC4wMzU0NDMgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MjU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlkPSJwYXRoMTI2OS02LTEiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjEyNzEtMC02LTciCiAgICAgICByZWZYPSIwIgogICAgICAgcmVmWT0iMCIKICAgICAgIG9yaWVudD0iYXV0byI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoLTAuNikiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1MiAtMi4yMDcyODk1LDAuMDE2MDEzMjYgOC43MTg1ODg0LC00LjAwMTcwNzggYyAtMS43NDU0OTg0LDIuMzcyMDYwOSAtMS43MzU0NDA4LDUuNjE3NDUxOSAtNmUtNyw4LjAzNTQ0MyB6IgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYyNTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGgxMjY5LTYtMS05IiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSIKICAgICAgIGlkPSJtYXJrZXIxMjcxLTAtNi03LTMiCiAgICAgICByZWZYPSIwIgogICAgICAgcmVmWT0iMCIKICAgICAgIG9yaWVudD0iYXV0byI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoLTAuNikiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1MiAtMi4yMDcyODk1LDAuMDE2MDEzMjYgOC43MTg1ODg0LC00LjAwMTcwNzggYyAtMS43NDU0OTg0LDIuMzcyMDYwOSAtMS43MzU0NDA4LDUuNjE3NDUxOSAtNmUtNyw4LjAzNTQ0MyB6IgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYyNTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGgxMjY5LTYtMS05LTciIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjEyNzEtMC02LTctMy05IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iPgogICAgICA8cGF0aAogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKC0wLjYpIgogICAgICAgICBkPSJNIDguNzE4NTg3OCw0LjAzMzczNTIgLTIuMjA3Mjg5NSwwLjAxNjAxMzI2IDguNzE4NTg4NCwtNC4wMDE3MDc4IGMgLTEuNzQ1NDk4NCwyLjM3MjA2MDkgLTEuNzM1NDQwOCw1LjYxNzQ1MTkgLTZlLTcsOC4wMzU0NDMgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MjU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlkPSJwYXRoMTI2OS02LTEtOS03LTIiIC8+CiAgICA8L21hcmtlcj4KICA8L2RlZnM+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLC0xOTEuMTY2NjUpIgogICAgIGlkPSJsYXllcjEiPgogICAgPHBhdGgKICAgICAgIGlkPSJyZWN0ODE1IgogICAgICAgZD0iTSA0LjUzODMyMjgsMTkzLjY5MjUgSCA0My41MzEyMjUgYyAxLjA1ODIzNSwwIDEuOTEwMTcxLDAuODUxOTQgMS45MTAxNzEsMS45MTAxOCB2IDk4LjA5NzkgYyAwLDEuMDU4MjMgLTAuODUxOTM2LDEuOTEwMTcgLTEuOTEwMTcxLDEuOTEwMTcgSCA0LjUzODMyMjggYyAtMS4wNTgyMzQ1LDAgLTEuOTEwMTcwNywtMC44NTE5NCAtMS45MTAxNzA3LC0xLjkxMDE3IHYgLTk4LjA5NzkgYyAwLC0xLjA1ODI0IDAuODUxOTM2MiwtMS45MTAxOCAxLjkxMDE3MDcsLTEuOTEwMTggeiIKICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoODE3IgogICAgICAgZD0ibSAyLjY1MjE0NzgsMjgzLjk5MTgzIDQyLjcxMjk3NzIsMCIKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgPGcKICAgICAgIGlkPSJmbG93Um9vdDgxOSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0dlbnRpdW0gUGx1cyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonR2VudGl1bSBQbHVzJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8ZwogICAgICAgaWQ9InRleHQ4MjkiCiAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LXNpemU6MTAuNTgzMzMzMDJweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OidHZW50aXVtIFBsdXMnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0dlbnRpdW0gUGx1cyc7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgYXJpYS1sYWJlbD0iLnRleHQiPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEyODQiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAxNS42ODYxNDcsMjkyLjQ0OTI4IHEgMCwwLjE4MDg3IC0wLjA1Njg0LDAuMzM1OSAtMC4wNTE2OCwwLjE0OTg2IC0wLjE0OTg2MiwwLjI2MzU1IC0wLjA5MzAyLDAuMTEzNjggLTAuMjI3Mzc2LDAuMTc1NyAtMC4xMjkxOTEsMC4wNjcyIC0wLjI3OTA1MywwLjA2NzIgLTAuMjc5MDUzLDAgLTAuMzk3OTA5LC0wLjE0OTg3IC0wLjExODg1NSwtMC4xNDk4NiAtMC4xMTg4NTUsLTAuNDI4OTEgMCwtMC4xNzU3IDAuMDU2ODQsLTAuMzI1NTYgMC4wNTY4NCwtMC4xNTUwMyAwLjE1NTAyOSwtMC4yNjg3MiAwLjA5ODE5LC0wLjExODg2IDAuMjI3Mzc2LC0wLjE4NjAzIDAuMTM0MzU5LC0wLjA2NzIgMC4yNzkwNTMsLTAuMDY3MiAwLjI1ODM4MiwwIDAuMzgyNDA2LDAuMTU1MDMgMC4xMjkxOTEsMC4xNDk4NiAwLjEyOTE5MSwwLjQyODkxIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTI4NiIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDE5LjY5MTA3LDI5Mi40ODAyOSBxIC0wLjI1MzIxNCwwLjE4NjAzIC0wLjUwMTI2MSwwLjMzMDcyIC0wLjI0ODA0NywwLjEzOTUzIC0wLjQ3NTQyMywwLjIzNzcyIC0wLjIyMjIwOSwwLjA5MyAtMC40MTM0MTIsMC4xMzk1MiAtMC4xOTEyMDMsMC4wNTE3IC0wLjMyNTU2MSwwLjA1MTcgLTAuMTgwODY4LDAgLTAuMzQ2MjMyLC0wLjA2NzIgLTAuMTYwMTk3LC0wLjA2NzIgLTAuMjg0MjIxLC0wLjIxNzA0IC0wLjEyNDAyMywtMC4xNTUwMyAtMC4xOTYzNywtMC40MDMwOCAtMC4wNzIzNSwtMC4yNDgwNCAtMC4wNzIzNSwtMC42MDk3OCB2IC0zLjE3MjkzIGggLTAuNjY2NjI2IGwgLTAuMTA4NTIxLC0wLjE0NDcgMC40MDMwNzYsLTAuMzQ2MjMgaCAwLjM3MjA3MSB2IC0xLjI3MTI0IGwgMC42MTQ5NDksLTAuNTM3NDMgMC4xNjAxOTcsMC4xMjkxOSB2IDEuNjc5NDggaCAxLjY4OTgxOSBsIDAuMTQ5ODYyLDAuMTQ5ODYgcSAtMC4wNDY1MSwwLjA3MjMgLTAuMTE4ODU2LDAuMTU1MDMgLTAuMDY3MTgsMC4wODI3IC0wLjEzOTUyNiwwLjE1NTAzIC0wLjA3MjM1LDAuMDcyNCAtMC4xNDQ2OTQsMC4xMzQzNiAtMC4wNjcxOCwwLjA1NjggLTAuMTE4ODU2LDAuMDc3NSAtMC4xMjQwMjMsLTAuMDYyIC0wLjM3NzIzOCwtMC4xMTg4NiAtMC4yNTMyMTQsLTAuMDYyIC0wLjY3MTc5MywtMC4wNjIgaCAtMC4yNjg3MTggdiAyLjcyODUxIHEgMCwwLjMxMDA2IDAuMDI1ODQsMC41MTY3NyAwLjAzMTAxLDAuMjA2NyAwLjA5ODE5LDAuMzMwNzMgMC4wNjcxOCwwLjExODg1IDAuMTcwNTMyLDAuMTcwNTMgMC4xMDg1MiwwLjA1MTcgMC4yNjM1NSwwLjA1MTcgMC4xODA4NjcsMCAwLjQ1NDc1MiwtMC4wNzI0IDAuMjczODg1LC0wLjA3MjMgMC42NzY5NjEsLTAuMjc5MDUgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMjg4IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjIuMzk4OTE1LDI4OC42NjY1NyBxIC0wLjI2ODcxOCwwIC0wLjQ5NjA5NCwwLjEwMzM1IC0wLjIyMjIwOCwwLjEwMzM1IC0wLjM5NzkwOCwwLjI5NDU1IC0wLjE3MDUzMywwLjE4NjA0IC0wLjI4OTM4OCwwLjQ0OTU5IC0wLjExMzY4OSwwLjI1ODM4IC0wLjE2MDE5NywwLjU3MzYxIGggMi4yMTE3NTEgcSAwLjExODg1NiwwIDAuMTU1MDI5LC0wLjAzNjIgMC4wNDEzNCwtMC4wNDEzIDAuMDQxMzQsLTAuMTQ5ODYgMCwtMC4xMzk1MiAtMC4wNDEzNCwtMC4zNDYyMyAtMC4wMzYxNywtMC4yMTE4NyAtMC4xNTUwMjksLTAuNDA4MjQgLTAuMTEzNjg4LC0wLjIwMTU0IC0wLjMyNTU2MiwtMC4zNDEwNyAtMC4yMDY3MDUsLTAuMTM5NTIgLTAuNTQyNjAyLC0wLjEzOTUyIHogbSAxLjkxMjAyOCwxLjUzOTk1IHEgLTAuMDkzMDIsMC4xMDMzNiAtMC4yNDgwNDcsMC4xOTEyMSAtMC4xNTUwMjksMC4wODc5IC0wLjMyMDM5NCwwLjE1NTAyIGggLTIuNzE4MTggcSAwLjAwNTIsMC40MDMwOCAwLjEwODUyLDAuNzY5OTggMC4xMDg1MjEsMC4zNjE3NCAwLjMwNDg5MSwwLjY0MDc5IDAuMjAxNTM4LDAuMjczODkgMC40ODA1OTEsMC40MzkyNSAwLjI4NDIyLDAuMTY1MzcgMC42MzU2MiwwLjE2NTM3IDAuMTYwMTk3LDAgMC4zMTAwNTksLTAuMDIwNyAwLjE1NTAyOSwtMC4wMjA3IDAuMzMwNzI5LC0wLjA5MyAwLjE3NTcsLTAuMDcyNCAwLjM4NzU3MywtMC4yMTE4OCAwLjIxNzA0MSwtMC4xMzk1MiAwLjUwNjQyOSwtMC4zNzcyMyAwLjA2NzE4LDAuMDM2MiAwLjExMzY4OCwwLjEwMzM1IDAuMDUxNjgsMC4wNjcyIDAuMDc3NTIsMC4xMDg1MiAtMC4zNDYyMzIsMC4zNzcyNCAtMC42MDk3ODIsMC42MDk3OCAtMC4yNTgzODIsMC4yMjczOCAtMC40OTA5MjYsMC4zNTE0IC0wLjIyNzM3NiwwLjEyNDAyIC0wLjQ1NDc1MywwLjE2MDIgLTAuMjIyMjA4LDAuMDQxMyAtMC40ODU3NTgsMC4wNDEzIC0wLjM5NzkwOSwwIC0wLjc1OTY0NCwtMC4xNzA1MyAtMC4zNTY1NjcsLTAuMTcwNTQgLTAuNjMwNDUyLC0wLjQ4MDU5IC0wLjI3Mzg4NSwtMC4zMTUyMyAtMC40MzkyNSwtMC43NTQ0OCAtMC4xNjAxOTcsLTAuNDQ0NDIgLTAuMTYwMTk3LC0wLjk5MjE5IDAsLTAuMzQ2MjMgMC4wNzc1MSwtMC42ODIxMyAwLjA3NzUyLC0wLjMzNTg5IDAuMjIyMjA5LC0wLjYzNTYyIDAuMTQ5ODYxLC0wLjI5OTcyIDAuMzYxNzM1LC0wLjU1MjkzIDAuMjExODczLC0wLjI1MzIyIDAuNDgwNTksLTAuNDM5MjUgMC4xMTM2ODksLTAuMDc3NSAwLjI1MzIxNSwtMC4xNDk4NyAwLjE0NDY5NCwtMC4wNzc1IDAuMjk5NzIzLC0wLjEzNDM1IDAuMTU1MDMsLTAuMDU2OCAwLjMwNDg5MSwtMC4wODc5IDAuMTU1MDMsLTAuMDM2MiAwLjI5NDU1NiwtMC4wMzYyIDAuMzM1ODk3LDAgMC41OTk0NDYsMC4wOTMgMC4yNjM1NSwwLjA5MyAwLjQ1OTkyMSwwLjI1MzIxIDAuMTk2MzcsMC4xNTUwMyAwLjMzMDcyOSwwLjM2NjkxIDAuMTM0MzU5LDAuMjA2NyAwLjIxNzA0MSwwLjQzOTI1IDAuMDg3ODUsMC4yMzI1NCAwLjEyNDAyMywwLjQ3NTQyIDAuMDM2MTcsMC4yMzc3MSAwLjAzNjE3LDAuNDU0NzUgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMjkwIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjcuOTA3NjIzLDI5My4wODQ5IHYgLTAuMjIyMjEgcSAwLjEyOTE5MSwtMC4wMTAzIDAuMjQyODc5LC0wLjAzMSAwLjExMzY4OCwtMC4wMjA3IDAuMTc1NywtMC4wNjcyIDAuMDY3MTgsLTAuMDQ2NSAwLjA2NzE4LC0wLjEyOTIgMCwtMC4wODc4IC0wLjEwMzM1MywtMC4yMjczNyBsIC0xLjAyMzE5MywtMS4zOTAxIC0wLjk3NjY4NSwxLjM5MDEgcSAtMC4wOTgxOSwwLjEzOTUzIC0wLjA3NzUxLDAuMjI3MzcgMC4wMjA2NywwLjA4MjcgMC4xMDg1MiwwLjEyOTIgMC4wODc4NSwwLjA0NjUgMC4yMTcwNDEsMC4wNjcyIDAuMTM0MzU5LDAuMDIwNyAwLjI1ODM4MiwwLjAzMSB2IDAuMjIyMjEgaCAtMS45NTg1MzYgdiAtMC4yMjIyMSBxIDAuMjA2NzA1LC0wLjAzMSAwLjM1MTM5OSwtMC4wNzc1IDAuMTQ0Njk0LC0wLjA1MTcgMC4yNDI4OCwtMC4xMTM2OSAwLjEwMzM1MiwtMC4wNjcyIDAuMTcwNTMyLC0wLjEzOTUzIDAuMDcyMzUsLTAuMDc3NSAwLjEyOTE5MSwtMC4xNTUwMyBsIDEuMjU1NzM3LC0xLjc0NjY2IC0xLjIxNDM5NiwtMS42NjM5OCBxIC0wLjA2NzE4LC0wLjA5MyAtMC4xMzQzNTksLTAuMTcwNTMgLTAuMDY3MTgsLTAuMDgyNyAtMC4xNjUzNjQsLTAuMTM5NTMgLTAuMDkzMDIsLTAuMDYyIC0wLjIzMjU0NCwtMC4wOTgyIC0wLjEzOTUyNywtMC4wNDEzIC0wLjM0NjIzMiwtMC4wNTY4IHYgLTAuMjIyMjEgaCAyLjE3MDQxIHYgMC4yMjIyMSBxIC0wLjE2MDE5NywwLjAxNTUgLTAuMjc5MDUzLDAuMDQ2NSAtMC4xMTM2ODgsMC4wMjU4IC0wLjE3NTcsMC4wNzc1IC0wLjA1Njg0LDAuMDQ2NSAtMC4wNTE2OCwwLjEyOTIgMC4wMTAzNCwwLjA3NzUgMC4xMDMzNTMsMC4yMDE1MyBsIDAuODMxOTksMS4xNDcyMiAwLjc5NTgxNywtMS4xNDcyMiBxIDAuMDkzMDIsLTAuMTI0MDIgMC4xMDMzNTMsLTAuMjA2NyAwLjAxMDMzLC0wLjA4MjcgLTAuMDQ2NTEsLTAuMTI5MTkgLTAuMDUxNjgsLTAuMDUxNyAtMC4xNjUzNjQsLTAuMDc3NSAtMC4xMTM2ODksLTAuMDI1OCAtMC4yNzM4ODUsLTAuMDQxMyB2IC0wLjIyMjIxIGggMS45Njg4NzIgdiAwLjIyMjIxIHEgLTAuNDE4NTgsMC4wMzEgLTAuNjUxMTIzLDAuMTU1MDMgLTAuMjI3Mzc3LDAuMTE4ODYgLTAuMzYxNzM1LDAuMzEwMDYgbCAtMS4wODUyMDYsMS41MjQ0NSAxLjM3OTc2MSwxLjg4NjE5IHEgMC4wNjIwMSwwLjA3NzUgMC4xMzQzNTksMC4xNTUwMyAwLjA3MjM1LDAuMDcyMyAwLjE2NTM2NCwwLjEzOTUzIDAuMDk4MTksMC4wNjcyIDAuMjI3Mzc3LDAuMTE4ODUgMC4xMjkxOTEsMC4wNTE3IDAuMjk5NzIzLDAuMDcyMyB2IDAuMjIyMjEgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMjkyIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMzMuNTYxMDI1LDI5Mi40ODAyOSBxIC0wLjI1MzIxNCwwLjE4NjAzIC0wLjUwMTI2MSwwLjMzMDcyIC0wLjI0ODA0NywwLjEzOTUzIC0wLjQ3NTQyMywwLjIzNzcyIC0wLjIyMjIwOSwwLjA5MyAtMC40MTM0MTIsMC4xMzk1MiAtMC4xOTEyMDMsMC4wNTE3IC0wLjMyNTU2MSwwLjA1MTcgLTAuMTgwODY4LDAgLTAuMzQ2MjMyLC0wLjA2NzIgLTAuMTYwMTk3LC0wLjA2NzIgLTAuMjg0MjIxLC0wLjIxNzA0IC0wLjEyNDAyMywtMC4xNTUwMyAtMC4xOTYzNywtMC40MDMwOCAtMC4wNzIzNSwtMC4yNDgwNCAtMC4wNzIzNSwtMC42MDk3OCB2IC0zLjE3MjkzIGggLTAuNjY2NjI2IGwgLTAuMTA4NTIxLC0wLjE0NDcgMC40MDMwNzYsLTAuMzQ2MjMgaCAwLjM3MjA3MSB2IC0xLjI3MTI0IGwgMC42MTQ5NDksLTAuNTM3NDMgMC4xNjAxOTcsMC4xMjkxOSB2IDEuNjc5NDggaCAxLjY4OTgyIGwgMC4xNDk4NjEsMC4xNDk4NiBxIC0wLjA0NjUxLDAuMDcyMyAtMC4xMTg4NTYsMC4xNTUwMyAtMC4wNjcxOCwwLjA4MjcgLTAuMTM5NTI2LDAuMTU1MDMgLTAuMDcyMzUsMC4wNzI0IC0wLjE0NDY5NCwwLjEzNDM2IC0wLjA2NzE4LDAuMDU2OCAtMC4xMTg4NTYsMC4wNzc1IC0wLjEyNDAyMywtMC4wNjIgLTAuMzc3MjM4LC0wLjExODg2IC0wLjI1MzIxNCwtMC4wNjIgLTAuNjcxNzkzLC0wLjA2MiBoIC0wLjI2ODcxOCB2IDIuNzI4NTEgcSAwLDAuMzEwMDYgMC4wMjU4NCwwLjUxNjc3IDAuMDMxMDEsMC4yMDY3IDAuMDk4MTksMC4zMzA3MyAwLjA2NzE4LDAuMTE4ODUgMC4xNzA1MzIsMC4xNzA1MyAwLjEwODUyLDAuMDUxNyAwLjI2MzU1LDAuMDUxNyAwLjE4MDg2NywwIDAuNDU0NzUyLC0wLjA3MjQgMC4yNzM4ODUsLTAuMDcyMyAwLjY3Njk2MiwtMC4yNzkwNSB6IiAvPgogICAgPC9nPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoODE3LTMiCiAgICAgICBkPSJtIDIuNjUyMTQ3OSwyNzIuMzUwMTggNDIuNzEyOTc3MSwwIgogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICA8ZwogICAgICAgaWQ9InRleHQ4MjktNiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMC41ODMzMzMwMnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0dlbnRpdW0gUGx1cyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonR2VudGl1bSBQbHVzJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICBhcmlhLWxhYmVsPSIuZGF0YSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTI5NSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDE0Ljk3ODE4MSwyODEuMzM2NzkgcSAwLDAuMTgwODcgLTAuMDU2ODQsMC4zMzU5IC0wLjA1MTY4LDAuMTQ5ODYgLTAuMTQ5ODYyLDAuMjYzNTUgLTAuMDkzMDIsMC4xMTM2OSAtMC4yMjczNzYsMC4xNzU3IC0wLjEyOTE5MSwwLjA2NzIgLTAuMjc5MDUzLDAuMDY3MiAtMC4yNzkwNTMsMCAtMC4zOTc5MDgsLTAuMTQ5ODYgLTAuMTE4ODU2LC0wLjE0OTg3IC0wLjExODg1NiwtMC40Mjg5MiAwLC0wLjE3NTcgMC4wNTY4NCwtMC4zMjU1NiAwLjA1Njg0LC0wLjE1NTAzIDAuMTU1MDI5LC0wLjI2ODcyIDAuMDk4MTgsLTAuMTE4ODUgMC4yMjczNzYsLTAuMTg2MDMgMC4xMzQzNTksLTAuMDY3MiAwLjI3OTA1MywtMC4wNjcyIDAuMjU4MzgyLDAgMC4zODI0MDYsMC4xNTUwMyAwLjEyOTE5MSwwLjE0OTg2IDAuMTI5MTkxLDAuNDI4OTEgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMjk3IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjAuOTIwOTcsMjgxLjUzODMzIHEgLTAuMjM3NzExLDAuMTYwMiAtMC40MjM3NDYsMC4yNzM4OSAtMC4xODA4NjgsMC4xMDg1MiAtMC4zMjAzOTQsMC4xNzU3IC0wLjEzNDM1OSwwLjA3MjMgLTAuMjMyNTQ0LDAuMTAzMzUgLTAuMDk4MTksMC4wMzYyIC0wLjE3MDUzMiwwLjAzNjIgLTAuMTcwNTMzLDAgLTAuMjc5MDUzLC0wLjIzMjU0IC0wLjEwODUyMSwtMC4yMzI1NSAtMC4xNDQ2OTQsLTAuNzk1ODIgLTAuMTk2MzcsMC4yMzc3MSAtMC4zOTI3NDEsMC40Mjg5MSAtMC4xOTEyMDMsMC4xOTEyMSAtMC4zOTc5MDgsMC4zMjU1NyAtMC4yMDE1MzksMC4xMjkxOSAtMC40Mjg5MTUsMC4yMDE1MyAtMC4yMjczNzYsMC4wNzIzIC0wLjQ5MDkyNiwwLjA3MjMgLTAuMjg5Mzg4LDAgLTAuNTk0Mjc5LC0wLjE2NTM2IC0wLjMwNDg5MSwtMC4xNzA1NCAtMC41NjMyNzMsLTAuNDg1NzYgLTAuMjUzMjE0LC0wLjMxNTIzIC0wLjQxODU3OSwtMC43Njk5OCAtMC4xNjAxOTcsLTAuNDU0NzUgLTAuMTYwMTk3LC0xLjAyODM2IDAsLTAuMjk0NTYgMC4wNzc1MiwtMC42MDk3OCAwLjA4MjY4LC0wLjMxNTIzIDAuMjMyNTQ0LC0wLjYwOTc5IDAuMTQ5ODYxLC0wLjI5NDU1IDAuMzY2OTAyLC0wLjU1ODEgMC4yMTcwNDEsLTAuMjYzNTUgMC40ODU3NTksLTAuNDU5OTIgMC4yNjg3MTcsLTAuMjAxNTQgMC41ODkxMTEsLTAuMzE1MjMgMC4zMjAzOTQsLTAuMTEzNjkgMC42ODIxMjksLTAuMTEzNjkgMC4yNDI4NzksMCAwLjQ4MDU5MSwwLjA2MiAwLjI0Mjg3OSwwLjA1NjggMC41MjE5MzIsMC4yNjM1NSB2IC0xLjk0ODIxIHEgMCwtMC4yODQyMiAtMC4wMTU1LC0wLjQ0OTU4IC0wLjAxNTUsLTAuMTcwNTMgLTAuMDg3ODUsLTAuMjU4MzggLTAuMDcyMzUsLTAuMDkzIC0wLjIyMjIwOSwtMC4xMjQwMyAtMC4xNDk4NjIsLTAuMDM2MiAtMC40MjM3NDcsLTAuMDU2OCB2IC0wLjIwMTU0IHEgMC40MjM3NDcsLTAuMDU2OCAwLjc1OTY0NCwtMC4xNDk4NiAwLjMzNTg5NywtMC4wOTgyIDAuNjA0NjE0LC0wLjE4NjAzIGwgMC4xNjAxOTcsMC4xNTUwMiB2IDYuNTQyMjQgcSAwLDAuMTgwODcgMC4wMDUyLDAuMzEwMDYgMC4wMTAzMywwLjEyOTE5IDAuMDI1ODQsMC4yMTcwNCAwLjAxNTUsMC4wODc5IDAuMDM2MTcsMC4xNDQ2OSAwLjAyMDY3LDAuMDU2OCAwLjA1MTY4LDAuMDkzIDAuMDQ2NTEsMC4wNTY4IDAuMTc1NywwLjAzNjIgMC4xMzQzNTgsLTAuMDI1OCAwLjQ0NDQxNywtMC4xNDQ3IHogbSAtMS41ODEyOTgsLTAuOTE0NjcgdiAtMi40MjM2MyBxIC0wLjE3MDUzMywtMC4yOTQ1NSAtMC40ODA1OTEsLTAuNDU0NzUgLTAuMzEwMDU5LC0wLjE2NTM2IC0wLjY4MjEyOSwtMC4xNjUzNiAtMC4zMzA3MjksMCAtMC42MDQ2MTQsMC4xMjQwMiAtMC4yNzM4ODUsMC4xMTg4NSAtMC40NzU0MjMsMC4zNjE3MyAtMC4xOTYzNzEsMC4yNDI4OCAtMC4zMTAwNTksMC42MDQ2MiAtMC4xMDg1MjEsMC4zNjE3MyAtMC4xMDg1MjEsMC44NDc0OSAwLDAuNDM5MjUgMC4xMjQwMjQsMC44MDA5OSAwLjEyOTE5MSwwLjM1NjU2IDAuMzI1NTYxLDAuNjA5NzggMC4xOTYzNzEsMC4yNTMyMSAwLjQyODkxNSwwLjM5Mjc0IDAuMjM3NzExLDAuMTM0MzYgMC40NDk1ODUsMC4xMzQzNiAwLjE3NTcsMCAwLjM0NjIzMiwtMC4wNzIzIDAuMTcwNTMyLC0wLjA3MjQgMC4zMzU4OTcsLTAuMTg2MDMgMC4xNjUzNjQsLTAuMTE4ODYgMC4zMjU1NjEsLTAuMjY4NzIgMC4xNjUzNjUsLTAuMTQ5ODYgMC4zMjU1NjIsLTAuMzA0ODkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMjk5IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjIuODA3MTYsMjgxLjQ1NTY1IHEgMC4zMTAwNTksMCAwLjY1NjI5MSwtMC4xNTUwMyAwLjM1MTM5OSwtMC4xNjAyIDAuNzQ0MTQsLTAuNTAxMjYgdiAtMS4zMzg0MiBxIC0wLjQzNDA4MiwwLjA3MjMgLTAuNzE4MzAyLDAuMTM5NTIgLTAuMjc5MDUzLDAuMDY3MiAtMC40NTk5MiwwLjEzOTUzIC0wLjE4MDg2OCwwLjA2NzIgLTAuMjg5Mzg4LDAuMTQ0NjkgLTAuMTA4NTIxLDAuMDc3NSAtMC4xOTEyMDMsMC4xNjUzNyAtMC4xMzQzNTksMC4xMzk1MyAtMC4yMTcwNDEsMC4zMjAzOSAtMC4wODI2OCwwLjE3NTcgLTAuMDgyNjgsMC40MTg1OCAwLDAuMjA2NzEgMC4wNjIwMSwwLjMzNTkgMC4wNjIwMSwwLjEyOTE5IDAuMTQ5ODYyLDAuMjA2NyAwLjA4Nzg1LDAuMDcyNCAwLjE4MDg2NywwLjA5ODIgMC4wOTgxOSwwLjAyNTggMC4xNjUzNjUsMC4wMjU4IHogbSAyLjk2NjIyNywwLjA5MyBxIC0wLjQzOTI1LDAuMzA0ODkgLTAuNzI4NjM4LDAuNDM5MjUgLTAuMjg0MjIsMC4xMzk1MiAtMC40Mjg5MTQsMC4xMzk1MiAtMC4xNzA1MzIsMCAtMC4yODQyMiwtMC4yMzc3MSAtMC4xMTM2ODgsLTAuMjM3NzEgLTAuMTI0MDI0LC0wLjY1NjI5IC0wLjIzMjU0NCwwLjIzMjU0IC0wLjQ2NTA4OCwwLjQwMzA4IC0wLjIzMjU0NCwwLjE3MDUzIC0wLjQ1NDc1MiwwLjI3OTA1IC0wLjIyMjIwOSwwLjEwODUyIC0wLjQyMzc0NywwLjE2MDE5IC0wLjE5NjM3LDAuMDUxNyAtMC4zNjE3MzUsMC4wNTE3IC0wLjE4NjAzNSwwIC0wLjM4MjQwNiwtMC4wNjIgLTAuMTk2MzcsLTAuMDYyIC0wLjM1NjU2NywtMC4xOTYzNyAtMC4xNTUwMjksLTAuMTM0MzYgLTAuMjU4MzgyLC0wLjM0NjIzIC0wLjEwMzM1MywtMC4yMTE4OCAtMC4xMDMzNTMsLTAuNTExNiAwLC0wLjM5Mjc0IDAuMTM0MzU5LC0wLjY1NjI5IDAuMTM5NTI2LC0wLjI2MzU1IDAuMzMwNzI5LC0wLjQ1NDc1IDAuMTI0MDIzLC0wLjEyNDAzIDAuMjc5MDUzLC0wLjIzMjU1IDAuMTYwMTk3LC0wLjExMzY4IDAuNDE4NTc5LC0wLjIxNzA0IDAuMjYzNTUsLTAuMTAzMzUgMC42NTYyOSwtMC4xOTYzNyAwLjM5Mjc0MSwtMC4wOTMgMC45ODcwMiwtMC4xODA4NyB2IC0wLjcyODYzIHEgMCwtMC4xNzU3IC0wLjA0MTM0LC0wLjMyNTU2IC0wLjA0MTM0LC0wLjE1NTAzIC0wLjEzOTUyNiwtMC4yNjM1NSAtMC4wOTgxOSwtMC4xMTM2OSAtMC4yNjg3MTgsLTAuMTcwNTQgLTAuMTY1MzY0LC0wLjA2MiAtMC40MTg1NzksLTAuMDU2OCAtMC4xNjUzNjQsMC4wMDUgLTAuMzI1NTYxLDAuMDU2OCAtMC4xNjAxOTcsMC4wNTE3IC0wLjI3OTA1MywwLjE0NDcgLTAuMTE4ODU2LDAuMDkzIC0wLjE4NjAzNSwwLjIyMjIxIC0wLjA2NzE4LDAuMTI0MDIgLTAuMDUxNjgsMC4yNzkwNSAwLjAwNTIsMC4wNDY1IC0wLjEwODUyLDAuMTA4NTIgLTAuMTA4NTIxLDAuMDU2OCAtMC4yNjM1NSwwLjEwMzM1IC0wLjE0OTg2MiwwLjA0NjUgLTAuMjk5NzIzLDAuMDcyNCAtMC4xNDQ2OTQsMC4wMjU4IC0wLjIwNjcwNiwwLjAxMDMgbCAtMC4wNzIzNSwtMC4yMDE1MyBxIDAuMTE4ODU2LC0wLjI1ODM5IDAuMzYxNzM1LC0wLjQ5NjEgMC4yNDI4NzksLTAuMjM3NzEgMC41NTI5MzgsLTAuNDE4NTggMC4zMTUyMjYsLTAuMTgwODYgMC42NjE0NTgsLTAuMjg5MzggMC4zNTE0LC0wLjEwODUzIDAuNjc2OTYxLC0wLjEwODUzIDAuNTY4NDQxLDAgMC44NzMzMzIsMC4yOTk3MyAwLjMxMDA1OSwwLjI5NDU1IDAuMzEwMDU5LDAuODI2ODIgdiAyLjkxNDU1IHEgMCwwLjIxNzA0IDAuMDU2ODQsMC4zMTAwNiAwLjA1Njg0LDAuMDkzIDAuMTQ5ODYxLDAuMDkzIDAuMDcyMzUsMCAwLjE4NjAzNiwtMC4wMjU4IDAuMTEzNjg4LC0wLjAyNTggMC4zMjAzOTMsLTAuMTEzNjkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzAxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjkuMzM5MDYxLDI4MS4zNjc4IHEgLTAuMjUzMjE0LDAuMTg2MDMgLTAuNTAxMjYxLDAuMzMwNzMgLTAuMjQ4MDQ3LDAuMTM5NTIgLTAuNDc1NDIzLDAuMjM3NzEgLTAuMjIyMjA5LDAuMDkzIC0wLjQxMzQxMiwwLjEzOTUyIC0wLjE5MTIwMiwwLjA1MTcgLTAuMzI1NTYxLDAuMDUxNyAtMC4xODA4NjgsMCAtMC4zNDYyMzIsLTAuMDY3MiAtMC4xNjAxOTcsLTAuMDY3MiAtMC4yODQyMjEsLTAuMjE3MDQgLTAuMTI0MDIzLC0wLjE1NTAzIC0wLjE5NjM3LC0wLjQwMzA4IC0wLjA3MjM1LC0wLjI0ODA0IC0wLjA3MjM1LC0wLjYwOTc4IHYgLTMuMTcyOTMgaCAtMC42NjY2MjYgbCAtMC4xMDg1MjEsLTAuMTQ0NjkgMC40MDMwNzcsLTAuMzQ2MjQgaCAwLjM3MjA3IHYgLTEuMjcxMjQgbCAwLjYxNDk0OSwtMC41Mzc0MyAwLjE2MDE5NywwLjEyOTE5IHYgMS42Nzk0OCBoIDEuNjg5ODIgbCAwLjE0OTg2MSwwLjE0OTg3IHEgLTAuMDQ2NTEsMC4wNzIzIC0wLjExODg1NSwwLjE1NTAyIC0wLjA2NzE4LDAuMDgyNyAtMC4xMzk1MjcsMC4xNTUwMyAtMC4wNzIzNSwwLjA3MjQgLTAuMTQ0Njk0LDAuMTM0MzYgLTAuMDY3MTgsMC4wNTY4IC0wLjExODg1NiwwLjA3NzUgLTAuMTI0MDIzLC0wLjA2MiAtMC4zNzcyMzgsLTAuMTE4ODYgLTAuMjUzMjE0LC0wLjA2MiAtMC42NzE3OTMsLTAuMDYyIEggMjcuNDk5MzggdiAyLjcyODUyIHEgMCwwLjMxMDA1IDAuMDI1ODQsMC41MTY3NiAwLjAzMTAxLDAuMjA2NzEgMC4wOTgxOSwwLjMzMDczIDAuMDY3MTgsMC4xMTg4NSAwLjE3MDUzMiwwLjE3MDUzIDAuMTA4NTIxLDAuMDUxNyAwLjI2MzU1LDAuMDUxNyAwLjE4MDg2NywwIDAuNDU0NzUyLC0wLjA3MjMgMC4yNzM4ODYsLTAuMDcyNCAwLjY3Njk2MiwtMC4yNzkwNSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMDMiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAzMS4zMDI3NjUsMjgxLjQ1NTY1IHEgMC4zMTAwNTgsMCAwLjY1NjI5LC0wLjE1NTAzIDAuMzUxNCwtMC4xNjAyIDAuNzQ0MTQxLC0wLjUwMTI2IHYgLTEuMzM4NDIgcSAtMC40MzQwODIsMC4wNzIzIC0wLjcxODMwMywwLjEzOTUyIC0wLjI3OTA1MiwwLjA2NzIgLTAuNDU5OTIsMC4xMzk1MyAtMC4xODA4NjcsMC4wNjcyIC0wLjI4OTM4OCwwLjE0NDY5IC0wLjEwODUyLDAuMDc3NSAtMC4xOTEyMDMsMC4xNjUzNyAtMC4xMzQzNTgsMC4xMzk1MyAtMC4yMTcwNDEsMC4zMjAzOSAtMC4wODI2OCwwLjE3NTcgLTAuMDgyNjgsMC40MTg1OCAwLDAuMjA2NzEgMC4wNjIwMSwwLjMzNTkgMC4wNjIwMSwwLjEyOTE5IDAuMTQ5ODYxLDAuMjA2NyAwLjA4Nzg1LDAuMDcyNCAwLjE4MDg2OCwwLjA5ODIgMC4wOTgxOSwwLjAyNTggMC4xNjUzNjUsMC4wMjU4IHogbSAyLjk2NjIyNywwLjA5MyBxIC0wLjQzOTI1LDAuMzA0ODkgLTAuNzI4NjM4LDAuNDM5MjUgLTAuMjg0MjIsMC4xMzk1MiAtMC40Mjg5MTQsMC4xMzk1MiAtMC4xNzA1MzMsMCAtMC4yODQyMjEsLTAuMjM3NzEgLTAuMTEzNjg4LC0wLjIzNzcxIC0wLjEyNDAyMywtMC42NTYyOSAtMC4yMzI1NDQsMC4yMzI1NCAtMC40NjUwODgsMC40MDMwOCAtMC4yMzI1NDQsMC4xNzA1MyAtMC40NTQ3NTMsMC4yNzkwNSAtMC4yMjIyMDgsMC4xMDg1MiAtMC40MjM3NDYsMC4xNjAxOSAtMC4xOTYzNzEsMC4wNTE3IC0wLjM2MTczNSwwLjA1MTcgLTAuMTg2MDM2LDAgLTAuMzgyNDA2LC0wLjA2MiAtMC4xOTYzNywtMC4wNjIgLTAuMzU2NTY3LC0wLjE5NjM3IC0wLjE1NTAzLC0wLjEzNDM2IC0wLjI1ODM4MywtMC4zNDYyMyAtMC4xMDMzNTIsLTAuMjExODggLTAuMTAzMzUyLC0wLjUxMTYgMCwtMC4zOTI3NCAwLjEzNDM1OCwtMC42NTYyOSAwLjEzOTUyNywtMC4yNjM1NSAwLjMzMDcyOSwtMC40NTQ3NSAwLjEyNDAyNCwtMC4xMjQwMyAwLjI3OTA1MywtMC4yMzI1NSAwLjE2MDE5NywtMC4xMTM2OCAwLjQxODU3OSwtMC4yMTcwNCAwLjI2MzU1LC0wLjEwMzM1IDAuNjU2MjkxLC0wLjE5NjM3IDAuMzkyNzQxLC0wLjA5MyAwLjk4NzAyLC0wLjE4MDg3IHYgLTAuNzI4NjMgcSAwLC0wLjE3NTcgLTAuMDQxMzQsLTAuMzI1NTYgLTAuMDQxMzQsLTAuMTU1MDMgLTAuMTM5NTI3LC0wLjI2MzU1IC0wLjA5ODE5LC0wLjExMzY5IC0wLjI2ODcxNywtMC4xNzA1NCAtMC4xNjUzNjUsLTAuMDYyIC0wLjQxODU3OSwtMC4wNTY4IC0wLjE2NTM2NSwwLjAwNSAtMC4zMjU1NjIsMC4wNTY4IC0wLjE2MDE5NywwLjA1MTcgLTAuMjc5MDUyLDAuMTQ0NyAtMC4xMTg4NTYsMC4wOTMgLTAuMTg2MDM2LDAuMjIyMjEgLTAuMDY3MTgsMC4xMjQwMiAtMC4wNTE2OCwwLjI3OTA1IDAuMDA1MiwwLjA0NjUgLTAuMTA4NTIxLDAuMTA4NTIgLTAuMTA4NTIsMC4wNTY4IC0wLjI2MzU0OSwwLjEwMzM1IC0wLjE0OTg2MiwwLjA0NjUgLTAuMjk5NzI0LDAuMDcyNCAtMC4xNDQ2OTQsMC4wMjU4IC0wLjIwNjcwNSwwLjAxMDMgbCAtMC4wNzIzNSwtMC4yMDE1MyBxIDAuMTE4ODU1LC0wLjI1ODM5IDAuMzYxNzM1LC0wLjQ5NjEgMC4yNDI4NzksLTAuMjM3NzEgMC41NTI5MzcsLTAuNDE4NTggMC4zMTUyMjcsLTAuMTgwODYgMC42NjE0NTksLTAuMjg5MzggMC4zNTEzOTksLTAuMTA4NTMgMC42NzY5NjEsLTAuMTA4NTMgMC41Njg0NDEsMCAwLjg3MzMzMiwwLjI5OTczIDAuMzEwMDU4LDAuMjk0NTUgMC4zMTAwNTgsMC44MjY4MiB2IDIuOTE0NTUgcSAwLDAuMjE3MDQgMC4wNTY4NCwwLjMxMDA2IDAuMDU2ODQsMC4wOTMgMC4xNDk4NjIsMC4wOTMgMC4wNzIzNSwwIDAuMTg2MDM1LC0wLjAyNTggMC4xMTM2ODgsLTAuMDI1OCAwLjMyMDM5NCwtMC4xMTM2OSB6IiAvPgogICAgPC9nPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoODE3LTMtNSIKICAgICAgIGQ9Im0gMi42NTIxNDc5LDI2MC43MDg1IDQyLjcxMjk3ODEsMCIKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgPGcKICAgICAgIGlkPSJ0ZXh0ODI5LTYtMyIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMC41ODMzMzMwMnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0dlbnRpdW0gUGx1cyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonR2VudGl1bSBQbHVzJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICBhcmlhLWxhYmVsPSIuYnNzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzA2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMTcuODI1NTUyLDI2OS42OTUxMyBxIDAsMC4xODA4NyAtMC4wNTY4NCwwLjMzNTkgLTAuMDUxNjgsMC4xNDk4NiAtMC4xNDk4NjIsMC4yNjM1NSAtMC4wOTMwMiwwLjExMzY4IC0wLjIyNzM3NiwwLjE3NTcgLTAuMTI5MTkxLDAuMDY3MiAtMC4yNzkwNTMsMC4wNjcyIC0wLjI3OTA1MywwIC0wLjM5NzkwOCwtMC4xNDk4NyAtMC4xMTg4NTYsLTAuMTQ5ODYgLTAuMTE4ODU2LC0wLjQyODkxIDAsLTAuMTc1NyAwLjA1Njg0LC0wLjMyNTU2IDAuMDU2ODQsLTAuMTU1MDMgMC4xNTUwMjksLTAuMjY4NzIgMC4wOTgxOSwtMC4xMTg4NiAwLjIyNzM3NywtMC4xODYwMyAwLjEzNDM1OCwtMC4wNjcyIDAuMjc5MDUyLC0wLjA2NzIgMC4yNTgzODIsMCAwLjM4MjQwNiwwLjE1NTAzIDAuMTI5MTkxLDAuMTQ5ODYgMC4xMjkxOTEsMC40Mjg5MSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMDgiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAyMy4yNDY0MSwyNjcuNzg4MjcgcSAwLDAuMjk5NzIgLTAuMDc3NTIsMC42MTQ5NSAtMC4wNzc1MSwwLjMxNTIyIC0wLjIyNzM3NiwwLjYxNDk1IC0wLjE0OTg2MiwwLjI5OTcyIC0wLjM2NjkwMywwLjU2ODQ0IC0wLjIxNzA0MSwwLjI2ODcyIC0wLjQ5NjA5NCwwLjQ3MDI1IC0wLjI3Mzg4NSwwLjE5NjM3IC0wLjYwNDYxNCwwLjMxMDA2IC0wLjMzMDcyOSwwLjExODg2IC0wLjcxMzEzNSwwLjExODg2IC0wLjA5ODE5LDAgLTAuMjczODg1LC0wLjA0NjUgLTAuMTcwNTMyLC0wLjA0MTMgLTAuMzk3OTA4LC0wLjEyNDAyIC0wLjIyMjIwOSwtMC4wODI3IC0wLjQ4NTc1OSwtMC4yMDE1NCAtMC4yNjM1NSwtMC4xMjQwMiAtMC41NDI2MDIsLTAuMjc5MDUgdiAtNi4yMDExOCBxIDAsLTAuMjM3NzEgLTAuMDI1ODQsLTAuMzY2OSAtMC4wMjU4NCwtMC4xMjkxOSAtMC4wOTgxOSwtMC4xOTEyIC0wLjA3MjM1LC0wLjA2NzIgLTAuMjA2NzA1LC0wLjA4NzkgLTAuMTI5MTkyLC0wLjAyMDcgLTAuMzQxMDY1LC0wLjA0NjUgdiAtMC4yMDY3MSBxIDAuMzQxMDY1LC0wLjA4MjcgMC42NTExMjMsLTAuMTY1MzYgMC4zMTAwNTksLTAuMDg3OCAwLjYwNDYxNCwtMC4yNDgwNSBsIDAuMDUxNjgsMC4wNTE3IHEgMC4wMzEwMSwwLjAzMSAwLjA2MjAxLDAuMDU2OCAwLjAzNjE3LDAuMDMxIDAuMDc3NTEsMC4wNjcyIHYgNC4wNzcyNyBxIDAuMjU4MzgyLC0wLjMxMDA2IDAuNTExNTk3LC0wLjUzNzQzIDAuMjU4MzgyLC0wLjIyNzM4IDAuNDkwOTI2LC0wLjM3MjA3IDAuMjM3NzExLC0wLjE0OTg2IDAuNDM5MjUsLTAuMjIyMjEgMC4yMDE1MzgsLTAuMDcyNCAwLjM1MTM5OSwtMC4wNzI0IDAuMzUxNCwwIDAuNjQ1OTU2LDAuMTY1MzcgMC4yOTk3MjMsMC4xNjUzNiAwLjUxMTU5NiwwLjQ4MDU5IDAuMjE3MDQxLDAuMzEwMDYgMC4zMzU4OTcsMC43NTk2NCAwLjEyNDAyNCwwLjQ0OTU5IDAuMTI0MDI0LDEuMDEyODYgeiBtIC0wLjY5NzYzMiwwLjQzNDA4IHEgMCwtMC41MTY3NiAtMC4xMDg1MjEsLTAuOTE0NjcgLTAuMTAzMzUzLC0wLjQwMzA4IC0wLjI4NDIyLC0wLjY3Njk2IC0wLjE3NTcsLTAuMjczODkgLTAuNDA4MjQ0LC0wLjQxODU4IC0wLjIzMjU0NCwtMC4xNDQ3IC0wLjQ4MDU5MSwtMC4xNDQ3IC0wLjA5MzAyLDAgLTAuMjQ4MDQ3LDAuMDU2OCAtMC4xNDk4NjEsMC4wNTE3IC0wLjM0MTA2NCwwLjE4MDg3IC0wLjE5MTIwMywwLjEyNDAyIC0wLjQwODI0NCwwLjM0MTA2IC0wLjIxNzA0MSwwLjIxMTg3IC0wLjQzNDA4MiwwLjUzMjI3IHYgMi4xMDMyMyBxIDAuMjA2NzA2LDAuMTU1MDMgMC40MTg1NzksMC4yNTgzOCAwLjIxNzA0MSwwLjEwMzM1IDAuNDA4MjQ0LDAuMTY1MzYgMC4xOTYzNywwLjA1NjggMC4zNTE0LDAuMDgyNyAwLjE2MDE5NywwLjAyNTggMC4yNTMyMTQsMC4wMjU4IDAuMzE1MjI3LDAgMC41NTI5MzgsLTAuMTM0MzYgMC4yMzc3MTIsLTAuMTM5NTMgMC4zOTc5MDksLTAuMzYxNzQgMC4xNjUzNjQsLTAuMjI3MzcgMC4yNDgwNDYsLTAuNTExNiAwLjA4MjY4LC0wLjI4NDIyIDAuMDgyNjgsLTAuNTgzOTQgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzEwIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjcuMzI4ODQ3LDI2OC44NjgzMSBxIDAsMC4zNjY5IC0wLjEwMzM1MiwwLjYzMDQ1IC0wLjEwMzM1MywwLjI1ODM4IC0wLjI2ODcxOCwwLjQzOTI1IC0wLjE2NTM2NCwwLjE4MDg3IC0wLjM2NjkwMywwLjI4OTM5IC0wLjIwMTUzOCwwLjEwODUyIC0wLjM5NzkwOCwwLjE2NTM2IC0wLjE5NjM3LDAuMDU2OCAtMC4zNzIwNywwLjA3MjMgLTAuMTcwNTMzLDAuMDIwNyAtMC4yNjg3MTgsMC4wMjA3IC0wLjI0ODA0NywwIC0wLjU5OTQ0NiwtMC4wOTMgLTAuMzQ2MjMyLC0wLjA5MyAtMC42OTI0NjUsLTAuMjg0MjIgLTAuMDM2MTcsLTAuMDE1NSAtMC4wNTE2OCwtMC4xNjUzNiAtMC4wMTAzNCwtMC4xNTUwMyAtMC4wMDUyLC0wLjM1MTQgMC4wMTAzNCwtMC4yMDE1NCAwLjAzMTAxLC0wLjQwMzA4IDAuMDI1ODQsLTAuMjAxNTQgMC4wNjIwMSwtMC4zMjAzOSBsIDAuMjIyMjA5LDAuMDU2OCBxIDAuMDEwMzQsMC4yMTcwNCAwLjExMzY4OCwwLjQwODI0IDAuMTAzMzUzLDAuMTkxMjEgMC4yNzM4ODUsMC4zMzA3MyAwLjE3NTcsMC4xMzk1MyAwLjQwMzA3NiwwLjIyMjIxIDAuMjMyNTQ0LDAuMDgyNyAwLjUwMTI2MSwwLjA4MjcgMC4xODYwMzYsMCAwLjM0MTA2NSwtMC4wNTY4IDAuMTU1MDI5LC0wLjA2MiAwLjI2ODcxNywtMC4xNjUzNiAwLjExMzY4OCwtMC4xMDg1MiAwLjE3NTcsLTAuMjU4MzkgMC4wNjIwMSwtMC4xNDk4NiAwLjA2MjAxLC0wLjMzMDczIDAsLTAuMjA2NyAtMC4xMTM2ODgsLTAuMzY2OSAtMC4xMDg1MjEsLTAuMTYwMiAtMC4yODkzODgsLTAuMjg5MzkgLTAuMTgwODY4LC0wLjEzNDM1IC0wLjQxMzQxMiwtMC4yNDgwNCAtMC4yMjczNzYsLTAuMTE4ODYgLTAuNDY1MDg4LC0wLjI0Mjg4IC0wLjIxNzA0MSwtMC4xMDg1MiAtMC40MTg1NzksLTAuMjMyNTUgLTAuMjAxNTM4LC0wLjEyNDAyIC0wLjM2MTczNSwtMC4yNzkwNSAtMC4xNTUwMjksLTAuMTU1MDMgLTAuMjUzMjE0LC0wLjM0NjIzIC0wLjA5MzAyLC0wLjE5MTIgLTAuMDkzMDIsLTAuNDM5MjUgMCwtMC4zMjAzOSAwLjEyOTE5MSwtMC41Njg0NCAwLjEyOTE5MSwtMC4yNTMyMiAwLjM0MTA2NSwtMC40MjM3NSAwLjIxNzA0MSwtMC4xNzA1MyAwLjQ5MDkyNiwtMC4yNTgzOCAwLjI3OTA1MywtMC4wOTMgMC41NzM2MDgsLTAuMDkzIDAuMTYwMTk3LDAgMC4zNTE0LDAuMDMxIDAuMTk2MzcsMC4wMjU4IDAuMzgyNDA1LDAuMDc3NSAwLjE5MTIwMywwLjA1MTcgMC4zNTY1NjgsMC4xMjQwMyAwLjE2NTM2NCwwLjA3MjMgMC4yNjg3MTcsMC4xNjUzNiAwLjAzMTAxLDAuMDMxIDAuMDA1MiwwLjEzOTUzIC0wLjAyMDY3LDAuMTA4NTIgLTAuMDcyMzUsMC4yMzc3MSAtMC4wNDY1MSwwLjEyOTE5IC0wLjEwMzM1MywwLjI0Mjg4IC0wLjA1Njg0LDAuMTEzNjkgLTAuMDg3ODUsMC4xNTUwMyBsIC0wLjIwMTUzOCwtMC4wNDEzIHEgLTAuMjQ4MDQ3LC0wLjM3MjA3IC0wLjUxNjc2NCwtMC41MTY3NyAtMC4yNjM1NSwtMC4xNDk4NiAtMC41MTY3NjUsLTAuMTQ5ODYgLTAuMTcwNTMyLDAgLTAuMzA0ODksMC4wNTY4IC0wLjEzNDM1OSwwLjA1NjggLTAuMjMyNTQ0LDAuMTQ5ODcgLTAuMDkzMDIsMC4wODc5IC0wLjE0NDY5NCwwLjE5NjM3IC0wLjA0NjUxLDAuMTA4NTIgLTAuMDQ2NTEsMC4yMTcwNCAwLDAuMTY1MzYgMC4wOTgxOSwwLjI5OTcyIDAuMDk4MTksMC4xMjkxOSAwLjI1ODM4MiwwLjI0ODA1IDAuMTYwMTk3LDAuMTEzNjkgMC4zNjE3MzUsMC4yMjIyMSAwLjIwNjcwNiwwLjEwMzM1IDAuNDIzNzQ3LDAuMjE3MDQgMC4yMjIyMDksMC4xMTM2OSAwLjQ0OTU4NSwwLjI0Mjg4IDAuMjI3Mzc2LDAuMTI5MTkgMC40MDgyNDQsMC4yOTk3MiAwLjE4MDg2NywwLjE2NTM2IDAuMjk0NTU1LDAuMzgyNDEgMC4xMTM2ODgsMC4yMTE4NyAwLjExMzY4OCwwLjUwMTI2IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTMxMiIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDMxLjQyMTYyMSwyNjguODY4MzEgcSAwLDAuMzY2OSAtMC4xMDMzNTMsMC42MzA0NSAtMC4xMDMzNTMsMC4yNTgzOCAtMC4yNjg3MTcsMC40MzkyNSAtMC4xNjUzNjUsMC4xODA4NyAtMC4zNjY5MDMsMC4yODkzOSAtMC4yMDE1MzgsMC4xMDg1MiAtMC4zOTc5MDksMC4xNjUzNiAtMC4xOTYzNywwLjA1NjggLTAuMzcyMDcsMC4wNzIzIC0wLjE3MDUzMiwwLjAyMDcgLTAuMjY4NzE3LDAuMDIwNyAtMC4yNDgwNDcsMCAtMC41OTk0NDcsLTAuMDkzIC0wLjM0NjIzMiwtMC4wOTMgLTAuNjkyNDY0LC0wLjI4NDIyIC0wLjAzNjE3LC0wLjAxNTUgLTAuMDUxNjgsLTAuMTY1MzYgLTAuMDEwMzMsLTAuMTU1MDMgLTAuMDA1MiwtMC4zNTE0IDAuMDEwMzMsLTAuMjAxNTQgMC4wMzEwMSwtMC40MDMwOCAwLjAyNTg0LC0wLjIwMTU0IDAuMDYyMDEsLTAuMzIwMzkgbCAwLjIyMjIwOSwwLjA1NjggcSAwLjAxMDMzLDAuMjE3MDQgMC4xMTM2ODgsMC40MDgyNCAwLjEwMzM1MywwLjE5MTIxIDAuMjczODg1LDAuMzMwNzMgMC4xNzU3LDAuMTM5NTMgMC40MDMwNzYsMC4yMjIyMSAwLjIzMjU0NCwwLjA4MjcgMC41MDEyNjIsMC4wODI3IDAuMTg2MDM1LDAgMC4zNDEwNjQsLTAuMDU2OCAwLjE1NTAzLC0wLjA2MiAwLjI2ODcxOCwtMC4xNjUzNiAwLjExMzY4OCwtMC4xMDg1MiAwLjE3NTcsLTAuMjU4MzkgMC4wNjIwMSwtMC4xNDk4NiAwLjA2MjAxLC0wLjMzMDczIDAsLTAuMjA2NyAtMC4xMTM2ODgsLTAuMzY2OSAtMC4xMDg1MiwtMC4xNjAyIC0wLjI4OTM4OCwtMC4yODkzOSAtMC4xODA4NjcsLTAuMTM0MzUgLTAuNDEzNDExLC0wLjI0ODA0IC0wLjIyNzM3NywtMC4xMTg4NiAtMC40NjUwODgsLTAuMjQyODggLTAuMjE3MDQxLC0wLjEwODUyIC0wLjQxODU3OSwtMC4yMzI1NSAtMC4yMDE1MzgsLTAuMTI0MDIgLTAuMzYxNzM1LC0wLjI3OTA1IC0wLjE1NTAzLC0wLjE1NTAzIC0wLjI1MzIxNSwtMC4zNDYyMyAtMC4wOTMwMiwtMC4xOTEyIC0wLjA5MzAyLC0wLjQzOTI1IDAsLTAuMzIwMzkgMC4xMjkxOTEsLTAuNTY4NDQgMC4xMjkxOTEsLTAuMjUzMjIgMC4zNDEwNjQsLTAuNDIzNzUgMC4yMTcwNDEsLTAuMTcwNTMgMC40OTA5MjYsLTAuMjU4MzggMC4yNzkwNTMsLTAuMDkzIDAuNTczNjA5LC0wLjA5MyAwLjE2MDE5NywwIDAuMzUxMzk5LDAuMDMxIDAuMTk2MzcxLDAuMDI1OCAwLjM4MjQwNiwwLjA3NzUgMC4xOTEyMDMsMC4wNTE3IDAuMzU2NTY3LDAuMTI0MDMgMC4xNjUzNjUsMC4wNzIzIDAuMjY4NzE4LDAuMTY1MzYgMC4wMzEwMSwwLjAzMSAwLjAwNTIsMC4xMzk1MyAtMC4wMjA2NywwLjEwODUyIC0wLjA3MjM1LDAuMjM3NzEgLTAuMDQ2NTEsMC4xMjkxOSAtMC4xMDMzNTIsMC4yNDI4OCAtMC4wNTY4NCwwLjExMzY5IC0wLjA4Nzg1LDAuMTU1MDMgbCAtMC4yMDE1MzgsLTAuMDQxMyBxIC0wLjI0ODA0NywtMC4zNzIwNyAtMC41MTY3NjUsLTAuNTE2NzcgLTAuMjYzNTUsLTAuMTQ5ODYgLTAuNTE2NzY0LC0wLjE0OTg2IC0wLjE3MDUzMiwwIC0wLjMwNDg5MSwwLjA1NjggLTAuMTM0MzU5LDAuMDU2OCAtMC4yMzI1NDQsMC4xNDk4NyAtMC4wOTMwMiwwLjA4NzkgLTAuMTQ0Njk0LDAuMTk2MzcgLTAuMDQ2NTEsMC4xMDg1MiAtMC4wNDY1MSwwLjIxNzA0IDAsMC4xNjUzNiAwLjA5ODE5LDAuMjk5NzIgMC4wOTgxOSwwLjEyOTE5IDAuMjU4MzgzLDAuMjQ4MDUgMC4xNjAxOTcsMC4xMTM2OSAwLjM2MTczNSwwLjIyMjIxIDAuMjA2NzA1LDAuMTAzMzUgMC40MjM3NDYsMC4yMTcwNCAwLjIyMjIwOSwwLjExMzY5IDAuNDQ5NTg1LDAuMjQyODggMC4yMjczNzcsMC4xMjkxOSAwLjQwODI0NCwwLjI5OTcyIDAuMTgwODY4LDAuMTY1MzYgMC4yOTQ1NTYsMC4zODI0MSAwLjExMzY4OCwwLjIxMTg3IDAuMTEzNjg4LDAuNTAxMjYgeiIgLz4KICAgIDwvZz4KICAgIDxnCiAgICAgICBpZD0idGV4dDgyOS02LTMtNiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMC41ODMzMzMwMnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0dlbnRpdW0gUGx1cyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonR2VudGl1bSBQbHVzJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICBhcmlhLWxhYmVsPSJoZWFwIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzE1IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMTYuOTU1MTAzLDI1NC40NTU3NiB2IC0wLjIyMjIgcSAwLjM3MjA3MSwtMC4wOTgyIDAuNTQ3NzcxLC0wLjE3MDU0IDAuMTc1Njk5LC0wLjA3MjMgMC4xNzU2OTksLTAuMTQ0NjkgdiAtMi43MzM2OCBxIDAsLTAuMzE1MjMgLTAuMDQxMzQsLTAuNTExNiAtMC4wMzYxNywtMC4xOTYzNyAtMC4xMTg4NTUsLTAuMzEwMDYgLTAuMDgyNjgsLTAuMTEzNjkgLTAuMjA2NzA2LC0wLjE1NTAzIC0wLjEyNDAyNCwtMC4wNDEzIC0wLjI5NDU1NiwtMC4wNDEzIC0wLjE4MDg2NywwIC0wLjM5Mjc0MSwwLjA5MyAtMC4yMDY3MDUsMC4wOTMgLTAuNDM0MDgyLDAuMjczODggLTAuMjI3Mzc2LDAuMTgwODcgLTAuNDU5OTIsMC40NTQ3NiAtMC4yMzI1NDQsMC4yNjg3MSAtMC40NTQ3NTMsMC42MzA0NSB2IDIuMjk5NiBxIDAsMC4wNzc1IDAuMTkxMjAzLDAuMTYwMiAwLjE5NjM3MSwwLjA4MjcgMC41MzIyNjcsMC4xNTUwMyB2IDAuMjIyMiBoIC0yLjIyMjA4NiB2IC0wLjIyMjIgcSAwLjM0MTA2NCwtMC4wODc5IDAuNTMyMjY3LC0wLjE1NTAzIDAuMTkxMjAzLC0wLjA3MjQgMC4xOTEyMDMsLTAuMTYwMiB2IC02LjE3MDE3IHEgMCwtMC4yMTcwNCAtMC4wMjA2NywtMC4zMzU4OSAtMC4wMTU1LC0wLjEyNDAzIC0wLjA5MzAyLC0wLjE5MTIxIC0wLjA3MjM1LC0wLjA2NzIgLTAuMjE3MDQxLC0wLjA5MyAtMC4xNDQ2OTQsLTAuMDMxIC0wLjM5Mjc0MSwtMC4wNjIgdiAtMC4yMDY3MSBxIDAuMjE3MDQxLC0wLjA0MTMgMC4zOTI3NDEsLTAuMDgyNyAwLjE4MDg2NywtMC4wNDEzIDAuMzMwNzI5LC0wLjA4NzkgMC4xNTUwMjksLTAuMDUxNyAwLjI5NDU1NiwtMC4xMDg1MiAwLjEzOTUyNiwtMC4wNTY4IDAuMjg5Mzg4LC0wLjEzNDM2IGwgMC4xOTEyMDIsMC4xNzU3IHYgNC4yOTk0OCBxIDAuMjIyMjA5LC0wLjMzMDczIDAuNDkwOTI3LC0wLjU5NDI4IDAuMjczODg1LC0wLjI2MzU1IDAuNTQ3NzcsLTAuNDQ5NTkgMC4yNzM4ODUsLTAuMTg2MDMgMC41MzIyNjcsLTAuMjg0MjIgMC4yNjM1NSwtMC4wOTgyIDAuNDY1MDg4LC0wLjA5ODIgMC4yMjIyMDgsMCAwLjQyODkxNCwwLjA2NzIgMC4yMDY3MDYsMC4wNjcyIDAuMzYxNzM1LDAuMjA2NyAwLjE2MDE5NywwLjEzOTUzIDAuMjUzMjE1LDAuMzU2NTcgMC4wOTgxOSwwLjIxMTg3IDAuMDk4MTksMC41MDEyNiB2IDMuMjkxNzkgcSAwLDAuMDcyNCAwLjE1NTAyOSwwLjE0NDY5IDAuMTYwMTk3LDAuMDY3MiAwLjU2ODQ0MSwwLjE3MDU0IHYgMC4yMjIyIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTMxNyIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDIxLjkwNTcwNiwyNTAuMDM3NDMgcSAtMC4yNjg3MTgsMCAtMC40OTYwOTQsMC4xMDMzNSAtMC4yMjIyMDksMC4xMDMzNiAtMC4zOTc5MDksMC4yOTQ1NiAtMC4xNzA1MzIsMC4xODYwMyAtMC4yODkzODgsMC40NDk1OCAtMC4xMTM2ODgsMC4yNTgzOSAtMC4xNjAxOTcsMC41NzM2MSBoIDIuMjExNzUyIHEgMC4xMTg4NTUsMCAwLjE1NTAyOSwtMC4wMzYyIDAuMDQxMzQsLTAuMDQxMyAwLjA0MTM0LC0wLjE0OTg2IDAsLTAuMTM5NTMgLTAuMDQxMzQsLTAuMzQ2MjQgLTAuMDM2MTcsLTAuMjExODcgLTAuMTU1MDI5LC0wLjQwODI0IC0wLjExMzY4OSwtMC4yMDE1NCAtMC4zMjU1NjIsLTAuMzQxMDYgLTAuMjA2NzA2LC0wLjEzOTUzIC0wLjU0MjYwMiwtMC4xMzk1MyB6IG0gMS45MTIwMjcsMS41Mzk5NiBxIC0wLjA5MzAyLDAuMTAzMzUgLTAuMjQ4MDQ2LDAuMTkxMiAtMC4xNTUwMywwLjA4NzkgLTAuMzIwMzk0LDAuMTU1MDMgaCAtMi43MTgxODEgcSAwLjAwNTIsMC40MDMwOCAwLjEwODUyMSwwLjc2OTk4IDAuMTA4NTIsMC4zNjE3MyAwLjMwNDg5MSwwLjY0MDc5IDAuMjAxNTM4LDAuMjczODggMC40ODA1OTEsMC40MzkyNSAwLjI4NDIyLDAuMTY1MzYgMC42MzU2MiwwLjE2NTM2IDAuMTYwMTk3LDAgMC4zMTAwNTgsLTAuMDIwNyAwLjE1NTAzLC0wLjAyMDcgMC4zMzA3MywtMC4wOTMgMC4xNzU2OTksLTAuMDcyMyAwLjM4NzU3MywtMC4yMTE4NyAwLjIxNzA0MSwtMC4xMzk1MyAwLjUwNjQyOSwtMC4zNzcyNCAwLjA2NzE4LDAuMDM2MiAwLjExMzY4OCwwLjEwMzM1IDAuMDUxNjgsMC4wNjcyIDAuMDc3NTIsMC4xMDg1MiAtMC4zNDYyMzIsMC4zNzcyNCAtMC42MDk3ODIsMC42MDk3OSAtMC4yNTgzODIsMC4yMjczNyAtMC40OTA5MjYsMC4zNTE0IC0wLjIyNzM3NywwLjEyNDAyIC0wLjQ1NDc1MywwLjE2MDE5IC0wLjIyMjIwOSwwLjA0MTMgLTAuNDg1NzU4LDAuMDQxMyAtMC4zOTc5MDksMCAtMC43NTk2NDQsLTAuMTcwNTMgLTAuMzU2NTY3LC0wLjE3MDUzIC0wLjYzMDQ1MiwtMC40ODA1OSAtMC4yNzM4ODUsLTAuMzE1MjMgLTAuNDM5MjUsLTAuNzU0NDcgLTAuMTYwMTk3LC0wLjQ0NDQyIC0wLjE2MDE5NywtMC45OTIxOSAwLC0wLjM0NjIzIDAuMDc3NTEsLTAuNjgyMTMgMC4wNzc1MSwtMC4zMzU5IDAuMjIyMjA4LC0wLjYzNTYyIDAuMTQ5ODYyLC0wLjI5OTcyIDAuMzYxNzM1LC0wLjU1Mjk0IDAuMjExODc0LC0wLjI1MzIxIDAuNDgwNTkxLC0wLjQzOTI1IDAuMTEzNjg4LC0wLjA3NzUgMC4yNTMyMTUsLTAuMTQ5ODYgMC4xNDQ2OTQsLTAuMDc3NSAwLjI5OTcyMywtMC4xMzQzNiAwLjE1NTAyOSwtMC4wNTY4IDAuMzA0ODkxLC0wLjA4NzkgMC4xNTUwMjksLTAuMDM2MiAwLjI5NDU1NiwtMC4wMzYyIDAuMzM1ODk2LDAgMC41OTk0NDYsMC4wOTMgMC4yNjM1NSwwLjA5MyAwLjQ1OTkyLDAuMjUzMjIgMC4xOTYzNzEsMC4xNTUwMyAwLjMzMDczLDAuMzY2OSAwLjEzNDM1OCwwLjIwNjcxIDAuMjE3MDQxLDAuNDM5MjUgMC4wODc4NSwwLjIzMjU1IDAuMTI0MDIzLDAuNDc1NDIgMC4wMzYxNywwLjIzNzcyIDAuMDM2MTcsMC40NTQ3NiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMTkiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAyNi4wNjA0OSwyNTMuOTM5IHEgMC4zMTAwNTksMCAwLjY1NjI5MSwtMC4xNTUwMyAwLjM1MTQsLTAuMTYwMiAwLjc0NDE0MSwtMC41MDEyNiB2IC0xLjMzODQyIHEgLTAuNDM0MDgzLDAuMDcyNCAtMC43MTgzMDMsMC4xMzk1MyAtMC4yNzkwNTMsMC4wNjcyIC0wLjQ1OTkyLDAuMTM5NTIgLTAuMTgwODY4LDAuMDY3MiAtMC4yODkzODgsMC4xNDQ3IC0wLjEwODUyMSwwLjA3NzUgLTAuMTkxMjAzLDAuMTY1MzYgLTAuMTM0MzU5LDAuMTM5NTMgLTAuMjE3MDQxLDAuMzIwNCAtMC4wODI2OCwwLjE3NTcgLTAuMDgyNjgsMC40MTg1NyAwLDAuMjA2NzEgMC4wNjIwMSwwLjMzNTkgMC4wNjIwMSwwLjEyOTE5IDAuMTQ5ODYxLDAuMjA2NzEgMC4wODc4NSwwLjA3MjMgMC4xODA4NjgsMC4wOTgyIDAuMDk4MTgsMC4wMjU4IDAuMTY1MzY0LDAuMDI1OCB6IG0gMi45NjYyMjcsMC4wOTMgcSAtMC40MzkyNDksMC4zMDQ4OSAtMC43Mjg2MzcsMC40MzkyNSAtMC4yODQyMjEsMC4xMzk1MiAtMC40Mjg5MTUsMC4xMzk1MiAtMC4xNzA1MzIsMCAtMC4yODQyMiwtMC4yMzc3MSAtMC4xMTM2ODgsLTAuMjM3NzEgLTAuMTI0MDIzLC0wLjY1NjI5IC0wLjIzMjU0NCwwLjIzMjU1IC0wLjQ2NTA4OCwwLjQwMzA4IC0wLjIzMjU0NCwwLjE3MDUzIC0wLjQ1NDc1MywwLjI3OTA1IC0wLjIyMjIwOSwwLjEwODUyIC0wLjQyMzc0NywwLjE2MDIgLTAuMTk2MzcsMC4wNTE3IC0wLjM2MTczNSwwLjA1MTcgLTAuMTg2MDM1LDAgLTAuMzgyNDA1LC0wLjA2MiAtMC4xOTYzNzEsLTAuMDYyIC0wLjM1NjU2OCwtMC4xOTYzNyAtMC4xNTUwMjksLTAuMTM0MzYgLTAuMjU4MzgyLC0wLjM0NjIzIC0wLjEwMzM1MywtMC4yMTE4NyAtMC4xMDMzNTMsLTAuNTExNiAwLC0wLjM5Mjc0IDAuMTM0MzU5LC0wLjY1NjI5IDAuMTM5NTI2LC0wLjI2MzU1IDAuMzMwNzI5LC0wLjQ1NDc1IDAuMTI0MDI0LC0wLjEyNDAyIDAuMjc5MDUzLC0wLjIzMjU0IDAuMTYwMTk3LC0wLjExMzY5IDAuNDE4NTc5LC0wLjIxNzA1IDAuMjYzNTUsLTAuMTAzMzUgMC42NTYyOTEsLTAuMTk2MzcgMC4zOTI3NDEsLTAuMDkzIDAuOTg3MDIsLTAuMTgwODYgdiAtMC43Mjg2NCBxIDAsLTAuMTc1NyAtMC4wNDEzNCwtMC4zMjU1NiAtMC4wNDEzNCwtMC4xNTUwMyAtMC4xMzk1MjYsLTAuMjYzNTUgLTAuMDk4MTksLTAuMTEzNjkgLTAuMjY4NzE3LC0wLjE3MDUzIC0wLjE2NTM2NSwtMC4wNjIgLTAuNDE4NTgsLTAuMDU2OCAtMC4xNjUzNjQsMC4wMDUgLTAuMzI1NTYxLDAuMDU2OCAtMC4xNjAxOTcsMC4wNTE3IC0wLjI3OTA1MywwLjE0NDY5IC0wLjExODg1NiwwLjA5MyAtMC4xODYwMzUsMC4yMjIyMSAtMC4wNjcxOCwwLjEyNDAyIC0wLjA1MTY4LDAuMjc5MDUgMC4wMDUyLDAuMDQ2NSAtMC4xMDg1MjEsMC4xMDg1MiAtMC4xMDg1MiwwLjA1NjggLTAuMjYzNTUsMC4xMDMzNSAtMC4xNDk4NjEsMC4wNDY1IC0wLjI5OTcyMywwLjA3MjQgLTAuMTQ0Njk0LDAuMDI1OCAtMC4yMDY3MDYsMC4wMTAzIGwgLTAuMDcyMzUsLTAuMjAxNTQgcSAwLjExODg1NiwtMC4yNTgzOCAwLjM2MTczNSwtMC40OTYwOSAwLjI0Mjg4LC0wLjIzNzcyIDAuNTUyOTM4LC0wLjQxODU4IDAuMzE1MjI2LC0wLjE4MDg3IDAuNjYxNDU4LC0wLjI4OTM5IDAuMzUxNCwtMC4xMDg1MiAwLjY3Njk2MiwtMC4xMDg1MiAwLjU2ODQ0LDAgMC44NzMzMzEsMC4yOTk3MiAwLjMxMDA1OSwwLjI5NDU2IDAuMzEwMDU5LDAuODI2ODIgdiAyLjkxNDU1IHEgMCwwLjIxNzA1IDAuMDU2ODQsMC4zMTAwNiAwLjA1Njg0LDAuMDkzIDAuMTQ5ODYyLDAuMDkzIDAuMDcyMzUsMCAwLjE4NjAzNSwtMC4wMjU4IDAuMTEzNjg4LC0wLjAyNTggMC4zMjAzOTQsLTAuMTEzNjkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzIxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMzMuNTk0OTE0LDI1Mi4yNTQzNSBxIDAsLTAuNDQ5NTkgLTAuMTA4NTIsLTAuODM3MTYgLTAuMTAzMzUzLC0wLjM4NzU3IC0wLjI3OTA1MywtMC42NzE3OSAtMC4xNzU3LC0wLjI4NDIyIC0wLjQwODI0NCwtMC40NDQ0MiAtMC4yMzI1NDQsLTAuMTYwMiAtMC40ODA1OTEsLTAuMTYwMiAtMC4wOTMwMiwwIC0wLjI0Mjg3OSwwLjA1NjggLTAuMTQ5ODYxLDAuMDU2OCAtMC4zNDEwNjQsMC4xOTEyIC0wLjE5MTIwMywwLjEzNDM2IC0wLjQwODI0NCwwLjM2MTczIC0wLjIxNzA0MSwwLjIyMjIxIC0wLjQ0NDQxNywwLjU1Mjk0IHYgMi4wNTE1NiBxIDAuMjMyNTQ0LDAuMTc1NyAwLjQyODkxNCwwLjI4OTM4IDAuMjAxNTM4LDAuMTEzNjkgMC4zNzIwNywwLjE4MDg3IDAuMTc1NywwLjA2MiAwLjMzMDczLDAuMDg3OSAwLjE1NTAyOSwwLjAyNTggMC4yOTQ1NTUsMC4wMjU4IDAuMjc5MDUzLDAgMC41MTE1OTcsLTAuMTA4NTIgMC4yMzc3MTEsLTAuMTA4NTIgMC40MDgyNDQsLTAuMzIwMzkgMC4xNzA1MzIsLTAuMjExODggMC4yNjg3MTcsLTAuNTI3MSAwLjA5ODE5LC0wLjMxNTIzIDAuMDk4MTksLTAuNzI4NjQgeiBtIDAuNjk3NjMyLC0wLjM0MTA3IHEgMCwwLjI5OTczIC0wLjA3NzUxLDAuNjE0OTUgLTAuMDc3NTEsMC4zMTUyMyAtMC4yMTE4NzMsMC42MTQ5NSAtMC4xMzQzNTksMC4yOTk3MyAtMC4zMjAzOTQsMC41Njg0NCAtMC4xODYwMzUsMC4yNjg3MiAtMC40MDgyNDQsMC40NzAyNiAtMC4yMTcwNDEsMC4xOTYzNyAtMC40NTk5MiwwLjMxMDA2IC0wLjI0Mjg3OSwwLjExODg1IC0wLjQ5NjA5NCwwLjExODg1IC0wLjMwNDg5LDAgLTAuNjg3Mjk2LC0wLjE3MDUzIC0wLjM4MjQwNiwtMC4xNzA1MyAtMC43NDkzMDgsLTAuNDkwOTIgdiAyLjQ0NDI5IHEgMCwwLjA4MjcgMC4xOTEyMDIsMC4xNjUzNyAwLjE5NjM3MSwwLjA4MjcgMC42ODIxMjksMC4xNTUwMiB2IDAuMjIyMjEgaCAtMi4zNzE5NDggdiAtMC4yMjIyMSBxIDAuMzQxMDY1LC0wLjA4MjcgMC41MzIyNjcsLTAuMTYwMTkgMC4xOTEyMDMsLTAuMDcyNCAwLjE5MTIwMywtMC4xNjAyIHYgLTUuNjEyMDYgcSAwLC0wLjE5MTIgLTAuMDIwNjcsLTAuMzE1MjMgLTAuMDIwNjcsLTAuMTI0MDIgLTAuMDk4MTksLTAuMTk2MzcgLTAuMDcyMzUsLTAuMDc3NSAtMC4yMTcwNDEsLTAuMTA4NTIgLTAuMTM5NTI2LC0wLjAzNjIgLTAuMzg3NTczLC0wLjA0NjUgdiAtMC4yMDY3IHEgMC4xNzU3LC0wLjAzNjIgMC4zMzU4OTcsLTAuMDc3NSAwLjE2MDE5NywtMC4wNDY1IDAuMzEwMDU5LC0wLjA5MyAwLjE0OTg2MSwtMC4wNTE3IDAuMjk0NTU1LC0wLjEwODUyIDAuMTQ5ODYyLC0wLjA2MiAwLjI5OTcyNCwtMC4xMzQzNiBsIDAuMTgwODY3LDAuMTgwODYgMC4wNDY1MSwxLjAyMzIgcSAwLjI1ODM4MiwtMC4zMTAwNiAwLjUxNjc2NCwtMC41Mzc0NCAwLjI2MzU1LC0wLjIyNzM3IDAuNTAxMjYyLC0wLjM3MjA3IDAuMjM3NzExLC0wLjE0OTg2IDAuNDM5MjQ5LC0wLjIyMjIxIDAuMjA2NzA2LC0wLjA3MjMgMC4zNTY1NjgsLTAuMDcyMyAwLjM1MTM5OSwwIDAuNjUxMTIzLDAuMTY1MzYgMC4yOTk3MjMsMC4xNjUzNyAwLjUxNjc2NCwwLjQ4MDU5IDAuMjE3MDQxLDAuMzEwMDYgMC4zMzU4OTcsMC43NTk2NSAwLjEyNDAyMywwLjQ0OTU4IDAuMTI0MDIzLDEuMDEyODUgeiIgLz4KICAgIDwvZz4KICAgIDxnCiAgICAgICBpZD0idGV4dDgyOS02LTMtNi05IgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjEwLjU4MzMzMzAycHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTonR2VudGl1bSBQbHVzJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidHZW50aXVtIFBsdXMnO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGFyaWEtbGFiZWw9InN0YWNrIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzI0IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMTYuMjE2OTkyLDIwNS4zNjgyOCBxIDAsMC4zNjY5IC0wLjEwMzM1MywwLjYzMDQ1IC0wLjEwMzM1MywwLjI1ODM4IC0wLjI2ODcxNywwLjQzOTI1IC0wLjE2NTM2NSwwLjE4MDg3IC0wLjM2NjkwMywwLjI4OTM5IC0wLjIwMTUzOCwwLjEwODUyIC0wLjM5NzkwOSwwLjE2NTM2IC0wLjE5NjM3LDAuMDU2OCAtMC4zNzIwNywwLjA3MjQgLTAuMTcwNTMyLDAuMDIwNyAtMC4yNjg3MTcsMC4wMjA3IC0wLjI0ODA0NywwIC0wLjU5OTQ0NywtMC4wOTMgLTAuMzQ2MjMyLC0wLjA5MyAtMC42OTI0NjQsLTAuMjg0MjIgLTAuMDM2MTcsLTAuMDE1NSAtMC4wNTE2OCwtMC4xNjUzNiAtMC4wMTAzNCwtMC4xNTUwMyAtMC4wMDUyLC0wLjM1MTQgMC4wMTAzNCwtMC4yMDE1NCAwLjAzMTAxLC0wLjQwMzA4IDAuMDI1ODQsLTAuMjAxNTQgMC4wNjIwMSwtMC4zMjAzOSBsIDAuMjIyMjA5LDAuMDU2OCBxIDAuMDEwMzMsMC4yMTcwNCAwLjExMzY4OCwwLjQwODI0IDAuMTAzMzUzLDAuMTkxMjEgMC4yNzM4ODUsMC4zMzA3MyAwLjE3NTcsMC4xMzk1MyAwLjQwMzA3NywwLjIyMjIxIDAuMjMyNTQzLDAuMDgyNyAwLjUwMTI2MSwwLjA4MjcgMC4xODYwMzUsMCAwLjM0MTA2NCwtMC4wNTY4IDAuMTU1MDMsLTAuMDYyIDAuMjY4NzE4LC0wLjE2NTM2IDAuMTEzNjg4LC0wLjEwODUzIDAuMTc1NywtMC4yNTgzOSAwLjA2MjAxLC0wLjE0OTg2IDAuMDYyMDEsLTAuMzMwNzMgMCwtMC4yMDY3IC0wLjExMzY4OCwtMC4zNjY5IC0wLjEwODUyLC0wLjE2MDIgLTAuMjg5Mzg4LC0wLjI4OTM5IC0wLjE4MDg2NywtMC4xMzQzNiAtMC40MTM0MTEsLTAuMjQ4MDQgLTAuMjI3Mzc3LC0wLjExODg2IC0wLjQ2NTA4OCwtMC4yNDI4OCAtMC4yMTcwNDEsLTAuMTA4NTIgLTAuNDE4NTc5LC0wLjIzMjU1IC0wLjIwMTUzOCwtMC4xMjQwMiAtMC4zNjE3MzUsLTAuMjc5MDUgLTAuMTU1MDMsLTAuMTU1MDMgLTAuMjUzMjE1LC0wLjM0NjIzIC0wLjA5MzAyLC0wLjE5MTIgLTAuMDkzMDIsLTAuNDM5MjUgMCwtMC4zMjA0IDAuMTI5MTkxLC0wLjU2ODQ0IDAuMTI5MTkxLC0wLjI1MzIyIDAuMzQxMDY0LC0wLjQyMzc1IDAuMjE3MDQxLC0wLjE3MDUzIDAuNDkwOTI2LC0wLjI1ODM4IDAuMjc5MDUzLC0wLjA5MyAwLjU3MzYwOSwtMC4wOTMgMC4xNjAxOTcsMCAwLjM1MTM5OSwwLjAzMSAwLjE5NjM3MSwwLjAyNTggMC4zODI0MDYsMC4wNzc1IDAuMTkxMjAzLDAuMDUxNyAwLjM1NjU2NywwLjEyNDAzIDAuMTY1MzY1LDAuMDcyMyAwLjI2ODcxOCwwLjE2NTM2IDAuMDMxMDEsMC4wMzEgMC4wMDUyLDAuMTM5NTMgLTAuMDIwNjcsMC4xMDg1MiAtMC4wNzIzNSwwLjIzNzcxIC0wLjA0NjUxLDAuMTI5MTkgLTAuMTAzMzUyLDAuMjQyODggLTAuMDU2ODQsMC4xMTM2OSAtMC4wODc4NSwwLjE1NTAzIGwgLTAuMjAxNTM4LC0wLjA0MTMgcSAtMC4yNDgwNDcsLTAuMzcyMDcgLTAuNTE2NzY1LC0wLjUxNjc3IC0wLjI2MzU1LC0wLjE0OTg2IC0wLjUxNjc2NCwtMC4xNDk4NiAtMC4xNzA1MzIsMCAtMC4zMDQ4OTEsMC4wNTY4IC0wLjEzNDM1OSwwLjA1NjggLTAuMjMyNTQ0LDAuMTQ5ODcgLTAuMDkzMDIsMC4wODc5IC0wLjE0NDY5NCwwLjE5NjM3IC0wLjA0NjUxLDAuMTA4NTIgLTAuMDQ2NTEsMC4yMTcwNCAwLDAuMTY1MzYgMC4wOTgxOCwwLjI5OTcyIDAuMDk4MTksMC4xMjkxOSAwLjI1ODM4MywwLjI0ODA1IDAuMTYwMTk3LDAuMTEzNjkgMC4zNjE3MzUsMC4yMjIyMSAwLjIwNjcwNSwwLjEwMzM1IDAuNDIzNzQ2LDAuMjE3MDQgMC4yMjIyMDksMC4xMTM2OCAwLjQ0OTU4NSwwLjI0Mjg4IDAuMjI3Mzc3LDAuMTI5MTkgMC40MDgyNDQsMC4yOTk3MiAwLjE4MDg2OCwwLjE2NTM2IDAuMjk0NTU2LDAuMzgyNCAwLjExMzY4OCwwLjIxMTg4IDAuMTEzNjg4LDAuNTAxMjcgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzI2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjAuMTg1NzQyLDIwNi4yMjYxIHEgLTAuMjUzMjE1LDAuMTg2MDQgLTAuNTAxMjYxLDAuMzMwNzMgLTAuMjQ4MDQ3LDAuMTM5NTMgLTAuNDc1NDI0LDAuMjM3NzIgLTAuMjIyMjA4LDAuMDkzIC0wLjQxMzQxMSwwLjEzOTUyIC0wLjE5MTIwMywwLjA1MTcgLTAuMzI1NTYyLDAuMDUxNyAtMC4xODA4NjcsMCAtMC4zNDYyMzIsLTAuMDY3MiAtMC4xNjAxOTcsLTAuMDY3MiAtMC4yODQyMiwtMC4yMTcwNCAtMC4xMjQwMjMsLTAuMTU1MDMgLTAuMTk2MzcsLTAuNDAzMDggLTAuMDcyMzUsLTAuMjQ4MDUgLTAuMDcyMzUsLTAuNjA5NzggdiAtMy4xNzI5MyBoIC0wLjY2NjYyNiBsIC0wLjEwODUyMSwtMC4xNDQ3IDAuNDAzMDc2LC0wLjM0NjIzIGggMC4zNzIwNzEgdiAtMS4yNzEyNCBsIDAuNjE0OTQ5LC0wLjUzNzQzIDAuMTYwMTk3LDAuMTI5MTkgdiAxLjY3OTQ4IGggMS42ODk4MTkgbCAwLjE0OTg2MiwwLjE0OTg2IHEgLTAuMDQ2NTEsMC4wNzI0IC0wLjExODg1NiwwLjE1NTAzIC0wLjA2NzE4LDAuMDgyNyAtMC4xMzk1MjYsMC4xNTUwMyAtMC4wNzIzNSwwLjA3MjQgLTAuMTQ0Njk0LDAuMTM0MzYgLTAuMDY3MTgsMC4wNTY4IC0wLjExODg1NiwwLjA3NzUgLTAuMTI0MDIzLC0wLjA2MiAtMC4zNzcyMzgsLTAuMTE4ODUgLTAuMjUzMjE0LC0wLjA2MiAtMC42NzE3OTQsLTAuMDYyIGggLTAuMjY4NzE3IHYgMi43Mjg1MSBxIDAsMC4zMTAwNiAwLjAyNTg0LDAuNTE2NzcgMC4wMzEwMSwwLjIwNjcgMC4wOTgxOSwwLjMzMDczIDAuMDY3MTgsMC4xMTg4NSAwLjE3MDUzMywwLjE3MDUzIDAuMTA4NTIsMC4wNTE3IDAuMjYzNTQ5LDAuMDUxNyAwLjE4MDg2OCwwIDAuNDU0NzUzLC0wLjA3MjMgMC4yNzM4ODUsLTAuMDcyNCAwLjY3Njk2MSwtMC4yNzkwNiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMjgiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAyMi4xNDk0NDYsMjA2LjMxMzk1IHEgMC4zMTAwNTksMCAwLjY1NjI5MSwtMC4xNTUwMiAwLjM1MTQsLTAuMTYwMiAwLjc0NDE0LC0wLjUwMTI3IHYgLTEuMzM4NDIgcSAtMC40MzQwODIsMC4wNzI0IC0wLjcxODMwMiwwLjEzOTUzIC0wLjI3OTA1MywwLjA2NzIgLTAuNDU5OTIsMC4xMzk1MyAtMC4xODA4NjgsMC4wNjcyIC0wLjI4OTM4OCwwLjE0NDY5IC0wLjEwODUyMSwwLjA3NzUgLTAuMTkxMjAzLDAuMTY1MzcgLTAuMTM0MzU5LDAuMTM5NTIgLTAuMjE3MDQxLDAuMzIwMzkgLTAuMDgyNjgsMC4xNzU3IC0wLjA4MjY4LDAuNDE4NTggMCwwLjIwNjcgMC4wNjIwMSwwLjMzNTkgMC4wNjIwMSwwLjEyOTE5IDAuMTQ5ODYyLDAuMjA2NyAwLjA4Nzg1LDAuMDcyNCAwLjE4MDg2OCwwLjA5ODIgMC4wOTgxOSwwLjAyNTggMC4xNjUzNjQsMC4wMjU4IHogbSAyLjk2NjIyNywwLjA5MyBxIC0wLjQzOTI0OSwwLjMwNDg5IC0wLjcyODYzNywwLjQzOTI1IC0wLjI4NDIyMSwwLjEzOTUzIC0wLjQyODkxNSwwLjEzOTUzIC0wLjE3MDUzMiwwIC0wLjI4NDIyLC0wLjIzNzcxIC0wLjExMzY4OCwtMC4yMzc3MSAtMC4xMjQwMjQsLTAuNjU2MjkgLTAuMjMyNTQ0LDAuMjMyNTQgLTAuNDY1MDg3LDAuNDAzMDcgLTAuMjMyNTQ0LDAuMTcwNTMgLTAuNDU0NzUzLDAuMjc5MDUgLTAuMjIyMjA5LDAuMTA4NTMgLTAuNDIzNzQ3LDAuMTYwMiAtMC4xOTYzNywwLjA1MTcgLTAuMzYxNzM1LDAuMDUxNyAtMC4xODYwMzUsMCAtMC4zODI0MDUsLTAuMDYyIC0wLjE5NjM3MSwtMC4wNjIgLTAuMzU2NTY4LC0wLjE5NjM3IC0wLjE1NTAyOSwtMC4xMzQzNiAtMC4yNTgzODIsLTAuMzQ2MjQgLTAuMTAzMzUzLC0wLjIxMTg3IC0wLjEwMzM1MywtMC41MTE1OSAwLC0wLjM5Mjc0IDAuMTM0MzU5LC0wLjY1NjI5IDAuMTM5NTI2LC0wLjI2MzU1IDAuMzMwNzI5LC0wLjQ1NDc2IDAuMTI0MDI0LC0wLjEyNDAyIDAuMjc5MDUzLC0wLjIzMjU0IDAuMTYwMTk3LC0wLjExMzY5IDAuNDE4NTc5LC0wLjIxNzA0IDAuMjYzNTUsLTAuMTAzMzUgMC42NTYyOTEsLTAuMTk2MzcgMC4zOTI3NCwtMC4wOTMgMC45ODcwMTksLTAuMTgwODcgdiAtMC43Mjg2NCBxIDAsLTAuMTc1NyAtMC4wNDEzNCwtMC4zMjU1NiAtMC4wNDEzNCwtMC4xNTUwMyAtMC4xMzk1MjYsLTAuMjYzNTUgLTAuMDk4MTksLTAuMTEzNjkgLTAuMjY4NzE4LC0wLjE3MDUzIC0wLjE2NTM2NCwtMC4wNjIgLTAuNDE4NTc5LC0wLjA1NjggLTAuMTY1MzY0LDAuMDA1IC0wLjMyNTU2MSwwLjA1NjggLTAuMTYwMTk3LDAuMDUxNyAtMC4yNzkwNTMsMC4xNDQ2OSAtMC4xMTg4NTYsMC4wOTMgLTAuMTg2MDM1LDAuMjIyMjEgLTAuMDY3MTgsMC4xMjQwMyAtMC4wNTE2OCwwLjI3OTA2IDAuMDA1MiwwLjA0NjUgLTAuMTA4NTIxLDAuMTA4NTIgLTAuMTA4NTIsMC4wNTY4IC0wLjI2MzU1LDAuMTAzMzUgLTAuMTQ5ODYxLDAuMDQ2NSAtMC4yOTk3MjMsMC4wNzI0IC0wLjE0NDY5NCwwLjAyNTggLTAuMjA2NzA2LDAuMDEwMyBsIC0wLjA3MjM1LC0wLjIwMTU0IHEgMC4xMTg4NTYsLTAuMjU4MzggMC4zNjE3MzUsLTAuNDk2MDkgMC4yNDI4NzksLTAuMjM3NzEgMC41NTI5MzgsLTAuNDE4NTggMC4zMTUyMjYsLTAuMTgwODcgMC42NjE0NTgsLTAuMjg5MzkgMC4zNTE0LC0wLjEwODUyIDAuNjc2OTYyLC0wLjEwODUyIDAuNTY4NDQsMCAwLjg3MzMzMSwwLjI5OTcyIDAuMzEwMDU5LDAuMjk0NTYgMC4zMTAwNTksMC44MjY4MyB2IDIuOTE0NTUgcSAwLDAuMjE3MDQgMC4wNTY4NCwwLjMxMDA2IDAuMDU2ODQsMC4wOTMgMC4xNDk4NjIsMC4wOTMgMC4wNzIzNSwwIDAuMTg2MDM1LC0wLjAyNTggMC4xMTM2ODgsLTAuMDI1OCAwLjMyMDM5NCwtMC4xMTM2OSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMzAiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAyOS41Mjg4NDEsMjA1Ljg0ODg3IHEgLTAuMzM1ODk3LDAuMzk3OTEgLTAuNTk0Mjc5LDAuNjI1MjggLTAuMjUzMjE1LDAuMjIyMjEgLTAuNDcwMjU2LDAuMzQxMDcgLTAuMjE3MDQxLDAuMTEzNjggLTAuNDIzNzQ2LDAuMTM5NTIgLTAuMjA2NzA2LDAuMDMxIC0wLjQ0OTU4NSwwLjAzMSAtMC4zNzcyMzgsMCAtMC43Mzg5NzMsLTAuMTY1MzcgLTAuMzU2NTY4LC0wLjE3MDUzIC0wLjYzNTYyLC0wLjQ4NTc1IC0wLjI3OTA1MywtMC4zMTUyMyAtMC40NDk1ODUsLTAuNzY5OTggLTAuMTY1MzY1LC0wLjQ1NDc2IC0wLjE2NTM2NSwtMS4wMjgzNiAwLC0wLjU1ODExIDAuMjAxNTM4LC0xLjA0Mzg3IDAuMjA2NzA2LC0wLjQ4NTc2IDAuNTU4MTA2LC0wLjg0MjMyIDAuMzU2NTY3LC0wLjM2MTc0IDAuODM3MTU4LC0wLjU2ODQ0IDAuNDgwNTkxLC0wLjIxMTg4IDEuMDM4Njk2LC0wLjIxMTg4IDAuMTcwNTMyLDAgMC4zNDYyMzIsMC4wMzEgMC4xODA4NjgsMC4wMjU4IDAuMzQxMDY1LDAuMDgyNyAwLjE2NTM2NCwwLjA1MTcgMC4yOTk3MjMsMC4xMjkxOSAwLjEzOTUyNiwwLjA3MjQgMC4yMjczNzYsMC4xNjUzNyAwLjAxMDM0LDAuMDYyIC0wLjAxNTUsMC4xNzU3IC0wLjAyNTg0LDAuMTEzNjggLTAuMDcyMzUsMC4yNDI4NyAtMC4wNDY1MSwwLjEyNDAzIC0wLjEwMzM1MywwLjI0Mjg4IC0wLjA1Njg0LDAuMTEzNjkgLTAuMTAzMzUyLDAuMTg2MDQgbCAtMC4xOTEyMDMsLTAuMDUxNyBxIC0wLjA0MTM0LC0wLjA5MyAtMC4xMzQzNTksLTAuMjAxNTQgLTAuMDkzMDIsLTAuMTA4NTIgLTAuMjQyODc5LC0wLjIwNjcgLTAuMTQ0Njk0LC0wLjA5ODIgLTAuMzUxNCwtMC4xNjAyIC0wLjIwMTUzOCwtMC4wNjcyIC0wLjQ2NTA4OCwtMC4wNjcyIC0wLjI3Mzg4NSwwIC0wLjUyNzA5OSwwLjEyNDAzIC0wLjI0ODA0NywwLjExODg1IC0wLjQ0NDQxOCwwLjM2MTczIC0wLjE5MTIwMiwwLjI0Mjg4IC0wLjMxMDA1OCwwLjYwNDYyIC0wLjExMzY4OCwwLjM2MTczIC0wLjExMzY4OCwwLjg0NzQ5IDAsMC40MzkyNSAwLjEyOTE5MSwwLjgwMDk4IDAuMTM0MzU4LDAuMzU2NTcgMC4zNTEzOTksMC42MDk3OSAwLjIyMjIwOSwwLjI1MzIxIDAuNTA2NDI5LDAuMzkyNzQgMC4yODkzODgsMC4xMzQzNSAwLjU5OTQ0NywwLjEzNDM1IDAuMTQ0Njk0LDAgMC4yNjg3MTcsLTAuMDEwMyAwLjEyNDAyNCwtMC4wMTU1IDAuMjY4NzE4LC0wLjA4MjcgMC4xNDk4NjIsLTAuMDY3MiAwLjM0MTA2NCwtMC4yMDE1NCAwLjE5NjM3MSwtMC4xMzQzNiAwLjQ4NTc1OSwtMC4zODI0MSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMzIiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAyOS45NzMyNTcsMjA2LjgzMDcyIHYgLTAuMjIyMjEgcSAwLjM0MTA2NSwtMC4wODc5IDAuNTMyMjY3LC0wLjE1NTAzIDAuMTkxMjAzLC0wLjA2NzIgMC4xOTEyMDMsLTAuMTYwMiB2IC02LjE1OTgzIHEgMCwtMC4yMzc3MSAtMC4wMzEwMSwtMC4zNjY5IC0wLjAyNTg0LC0wLjEyOTE5IC0wLjEwODUyLC0wLjE5MTIgLTAuMDc3NTEsLTAuMDY3MiAtMC4yMjIyMDksLTAuMDg3OCAtMC4xMzk1MjYsLTAuMDIwNyAtMC4zNjE3MzUsLTAuMDQ2NSB2IC0wLjIwNjcxIHEgMC4zNTY1NjcsLTAuMDcyMyAwLjY5NzYzMiwtMC4xNjUzNiAwLjM0NjIzMiwtMC4wOTgyIDAuNjA5NzgyLC0wLjI0ODA1IGwgMC4xOTEyMDMsMC4xNzU3IHYgNS4wOTUzIGwgMS41OTE2MzQsLTEuMzkwMSBxIDAuMTcwNTMyLC0wLjE0OTg2IDAuMjA2NzA1LC0wLjIzNzcxIDAuMDM2MTcsLTAuMDkzIC0wLjAxNTUsLTAuMTM5NTMgLTAuMDQ2NTEsLTAuMDQ2NSAtMC4xNjUzNjQsLTAuMDYyIC0wLjExMzY4OCwtMC4wMTU1IC0wLjI0ODA0NywtMC4wMTU1IHYgLTAuMjIyMjEgaCAxLjk1ODUzNyB2IDAuMjIyMjEgcSAtMC4yMjczNzcsMC4wMjU4IC0wLjQxODU3OSwwLjA4NzkgLTAuMTkxMjAzLDAuMDU2OCAtMC40MDgyNDQsMC4yMzI1NCBsIC0xLjc2MjE2NiwxLjQxMDc3IDEuOTQzMDMzLDIuMjc4OTMgcSAwLjA3MjM1LDAuMDgyNyAwLjE0OTg2MiwwLjEzOTUzIDAuMDc3NTEsMC4wNTE3IDAuMTcwNTMyLDAuMDgyNyAwLjA5MzAyLDAuMDMxIDAuMjA2NzA2LDAuMDQxMyAwLjExODg1NiwwLjAwNSAwLjI2ODcxNywtMC4wMDUgbCAwLjAzMTAxLDAuMjIyMjEgcSAtMC4xNDk4NjEsMC4wMzYyIC0wLjI5OTcyMywwLjA2MiAtMC4xNDQ2OTQsMC4wMjU4IC0wLjI3Mzg4NSwwLjA0MTMgLTAuMTI0MDI0LDAuMDIwNyAtMC4yMjczNzYsMC4wMzEgLTAuMDk4MTksMC4wMTAzIC0wLjE0OTg2MiwwLjAxMDMgLTAuMjE3MDQxLDAgLTAuMzUxNCwtMC4wNjIgLTAuMTI5MTkxLC0wLjA2MiAtMC4yNDI4NzksLTAuMjExODcgbCAtMS45NjM3MDQsLTIuNDc1MyB2IDIuMTYwMDcgcSAwLDAuMDQxMyAwLjAxNTUsMC4wNzI0IDAuMDIwNjcsMC4wMzEgMC4wNzc1MSwwLjA2NzIgMC4wNTY4NCwwLjAzMSAwLjE3MDUzMiwwLjA3MjQgMC4xMTM2ODgsMC4wNDEzIDAuMzA0ODkxLDAuMTAzMzUgdiAwLjIyMjIxIHoiIC8+CiAgICA8L2c+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg5MzMiCiAgICAgICBkPSJtIDI0LjAyOTY5LDIxMS40MDU0NiAwLDYuNzA1NTciCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjUyOTE2Njc7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI0Fycm93Mk1lbmQpIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoOTM1IgogICAgICAgZD0ibSAyNC4wMzk4NTksMjQzLjY0NjUxIDAsLTcuMDQ3NDYiCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjUyOTE2Njc7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjEyNzEpIiAvPgogICAgPGcKICAgICAgIGlkPSJ0ZXh0ODI5LTYtMy02LTktMiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo0LjU4NjExMTA3cHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTonR2VudGl1bSBQbHVzJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidHZW50aXVtIFBsdXMnO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGFyaWEtbGFiZWw9ImxvdyBtZW0gYWRkciI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTMzNSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDUwLjU4MjY4MSwyOTIuNzEyMSB2IC0wLjA5NjMgcSAwLjA5NjI5LC0wLjAxNTcgMC4xNjEyMywtMC4wMzE0IDAuMDY0OTQsLTAuMDE3OSAwLjEwMzAwOSwtMC4wMzM2IDAuMDM4MDcsLTAuMDE3OSAwLjA1Mzc0LC0wLjAzNTggMC4wMTc5MSwtMC4wMTc5IDAuMDE3OTEsLTAuMDM1OCB2IC0yLjY2OTI2IHEgMCwtMC4xMDA3NyAtMC4wMTM0NCwtMC4xNTY3NSAtMC4wMTM0NCwtMC4wNTYgLTAuMDQ5MjYsLTAuMDgyOSAtMC4wMzU4MywtMC4wMjkxIC0wLjA5NjI5LC0wLjAzODEgLTAuMDYwNDYsLTAuMDExMiAtMC4xNTQ1MTMsLTAuMDIyNCB2IC0wLjA4OTYgcSAwLjE2MTIzMSwtMC4wMzEzIDAuMjk1NTg5LC0wLjA2OTQgMC4xMzQzNTksLTAuMDM4MSAwLjI3MzE5NiwtMC4xMDk3MyBsIDAuMDgwNjIsMC4wNzYxIHYgMy4xNjE5MSBxIDAsMC4wMzM2IDAuMDc2MTQsMC4wNjk0IDAuMDc2MTQsMC4wMzU4IDAuMjU5NzYsMC4wNjcyIHYgMC4wOTYzIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTMzNyIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDUzLjQ3MzYzMywyOTEuNjkzMjEgcSAwLC0wLjE3NjkxIC0wLjA1ODIyLC0wLjMzNTkgLTAuMDU4MjIsLTAuMTYxMjMgLTAuMTUwMDM0LC0wLjI4MjE1IC0wLjA5MTgxLC0wLjEyMzE2IC0wLjIwODI1NiwtMC4xOTQ4MiAtMC4xMTY0NDQsLTAuMDcxNyAtMC4yMzA2NDksLTAuMDcxNyAtMC4xNzAxODgsMCAtMC4yODY2MzIsMC4wNjQ5IC0wLjExNjQ0NSwwLjA2NDkgLTAuMTg4MTAyLDAuMTc5MTUgLTAuMDY5NDIsMC4xMTE5NiAtMC4xMDA3NywwLjI2NjQ4IC0wLjAzMTM1LDAuMTU0NTEgLTAuMDMxMzUsMC4zMzM2NSAwLDAuMTc2OTEgMC4wNjI3LDAuMzM4MTQgMC4wNjI3LDAuMTU4OTkgMC4xNTY3NTIsMC4yNzk5MSAwLjA5NjI5LDAuMTIwOTMgMC4yMTA0OTUsMC4xOTI1OCAwLjExNDIwNSwwLjA2OTQgMC4yMTcyMTMsMC4wNjk0IDAuMTU4OTkxLDAgMC4yNzMxOTYsLTAuMDU4MiAwLjExNDIwNSwtMC4wNjA1IDAuMTg4MTAzLC0wLjE3MDE5IDAuMDczOSwtMC4xMDk3MiAwLjEwOTcyNiwtMC4yNjQyNCAwLjAzNTgzLC0wLjE1NDUxIDAuMDM1ODMsLTAuMzQ3MDkgeiBtIDAuMzQ3MDkzLC0wLjA2NzIgcSAwLDAuMTUwMDMgLTAuMDM4MDcsMC4yOTMzNSAtMC4wMzgwNywwLjE0MzMyIC0wLjEwNTI0OCwwLjI3MDk2IC0wLjA2NzE4LDAuMTI3NjQgLTAuMTYxMjMsMC4yMzczNiAtMC4wOTQwNSwwLjEwNzQ5IC0wLjIwODI1NiwwLjE4NTg3IC0wLjExMTk2NiwwLjA3ODQgLTAuMjM5NjA3LDAuMTIwOTIgLTAuMTI3NjQsMC4wNDQ4IC0wLjI2NDIzOCwwLjA0NDggLTAuMjEyNzM1LDAgLTAuMzg1MTYyLC0wLjA4MDYgLTAuMTcwMTg4LC0wLjA4MDYgLTAuMjkzMzUsLTAuMjIxNjkgLTAuMTIwOTIzLC0wLjE0MTA4IC0wLjE4ODEwMiwtMC4zMzU5IC0wLjA2NDk0LC0wLjE5NDgyIC0wLjA2NDk0LC0wLjQyMzIzIDAsLTAuMTQ3NzkgMC4wMzU4MywtMC4yOTExMSAwLjAzODA3LC0wLjE0MzMxIDAuMTAzMDA4LC0wLjI3MDk1IDAuMDY3MTgsLTAuMTI5ODggMC4xNTg5OTEsLTAuMjM3MzcgMC4wOTQwNSwtMC4xMDk3MyAwLjIwNjAxNywtMC4xODgxIDAuMTE0MjA1LC0wLjA3ODQgMC4yNDQwODUsLTAuMTIzMTcgMC4xMzIxMTksLTAuMDQ0OCAwLjI3MDk1NywtMC4wNDQ4IDAuMjEwNDk1LDAgMC4zODA2ODMsMC4wODA2IDAuMTcyNDI3LDAuMDgwNiAwLjI5MzM1LDAuMjIzOTMgMC4xMjMxNjIsMC4xNDEwOCAwLjE4ODEwMiwwLjMzNTkgMC4wNjcxOCwwLjE5NDgyIDAuMDY3MTgsMC40MjMyMyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzMzkiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1Ny4xOTUzNjksMjkwLjcyNTgzIHEgLTAuMDY5NDIsMC4wMTU3IC0wLjEwOTcyNiwwLjAzMTQgLTAuMDQwMzEsMC4wMTM0IC0wLjA2NDk0LDAuMDI5MSAtMC4wMjIzOSwwLjAxMzQgLTAuMDMzNTksMC4wMzM2IC0wLjAwOSwwLjAxNzkgLTAuMDE1NjgsMC4wNDQ4IGwgLTAuNDk0ODg4LDEuNzE1MzIgcSAtMC4wMTM0NCwwLjA0OTMgLTAuMDUzNzQsMC4wODUxIC0wLjAzODA3LDAuMDMzNiAtMC4wODUwOSwwLjA1NiAtMC4wNDcwMywwLjAyNDYgLTAuMDk0MDUsMC4wMzgxIC0wLjA0NDc5LDAuMDEzNCAtMC4wNzM5LDAuMDIwMiBsIC0wLjUzMjk1NiwtMS41MTgyNiAtMC40NTkwNTksMS4zMTg5NiBxIC0wLjAxNzkxLDAuMDUxNSAtMC4wNTU5OCwwLjA4NzMgLTAuMDM1ODMsMC4wMzM2IC0wLjA4MDYyLDAuMDU2IC0wLjA0NDc5LDAuMDI0NiAtMC4wODk1NywwLjAzNTggLTAuMDQyNTUsMC4wMTM0IC0wLjA3MTY2LDAuMDIwMiBsIC0wLjU4NjcsLTEuOTE0NjIgcSAtMC4wMjAxNSwtMC4wODczIC0wLjI0NDA4NSwtMC4xMzg4MyB2IC0wLjA5NjMgaCAwLjg2NDM3NCB2IDAuMDk2MyBxIC0wLjEwOTcyNiwwLjAxMTIgLTAuMTcwMTg3LDAuMDI2OSAtMC4wNjA0NiwwLjAxMzQgLTAuMDg3MzMsMC4wMzM2IC0wLjAyNjg3LDAuMDE3OSAtMC4wMjkxMSwwLjAzODEgMCwwLjAyMDIgMC4wMDY3LDAuMDQwMyBsIDAuNDIwOTkxLDEuNDIxOTcgMC41NTA4NzEsLTEuNjU3MDkgaCAwLjE1NDUxMiBsIDAuNTgyMjIxLDEuNjU3MDkgMC4zODc0MDEsLTEuNDIxOTcgcSAwLjAxMzQ0LC0wLjA1MTUgLTAuMDQ3MDIsLTAuMDgyOSAtMC4wNjA0NiwtMC4wMzE0IC0wLjIxNDk3NCwtMC4wNTYgdiAtMC4wOTYzIGggMC43Mjc3NzYgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzQxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjAuOTE0ODY3LDI5Mi43MTIxIHYgLTAuMDk2MyBxIDAuMTYxMjMsLTAuMDQyNiAwLjIzNTEyOCwtMC4wNzM5IDAuMDc2MTQsLTAuMDMxMyAwLjA3NjE0LC0wLjA2MjcgdiAtMS4xODQ2IHEgMCwtMC4xMzY2IC0wLjAxNTY4LC0wLjIyNjE3IC0wLjAxMzQ0LC0wLjA5MTggLTAuMDQ0NzksLTAuMTQzMzEgLTAuMDI5MTEsLTAuMDUxNSAtMC4wNzgzOCwtMC4wNzE3IC0wLjA0NzAzLC0wLjAyMjQgLTAuMTE0MjA1LC0wLjAyMjQgLTAuMDczOSwwIC0wLjE1Njc1MiwwLjA0MjUgLTAuMDgyODUsMC4wNDAzIC0wLjE3MDE4OCwwLjExODY5IC0wLjA4NzMzLDAuMDc2MSAtMC4xNzY5MDUsMC4xODgxIC0wLjA4NzMzLDAuMTA5NzIgLTAuMTcyNDI3LDAuMjQ4NTYgdiAxLjA1MDI0IHEgMCwwLjAzMTMgMC4wNjk0MiwwLjA2MjcgMC4wNjk0MiwwLjAyOTEgMC4yNDYzMjUsMC4wNzM5IHYgMC4wOTYzIGggLTAuOTYyOTA0IHYgLTAuMDk2MyBxIDAuMTYxMjMsLTAuMDQyNiAwLjIzNTEyNywtMC4wNzM5IDAuMDc2MTQsLTAuMDMxMyAwLjA3NjE0LC0wLjA2MjcgdiAtMS4xODQ2IHEgMCwtMC4xMzY2IC0wLjAxMzQ0LC0wLjIyNjE3IC0wLjAxMzQ0LC0wLjA5MTggLTAuMDQ0NzksLTAuMTQzMzEgLTAuMDI5MTEsLTAuMDUxNSAtMC4wNzgzOCwtMC4wNzE3IC0wLjA0NzAzLC0wLjAyMjQgLTAuMTE2NDQ0LC0wLjAyMjQgLTAuMTUyMjc0LDAgLTAuMzIwMjIyLDAuMTU2NzUgLTAuMTY1NzA5LDAuMTU2NzUgLTAuMzU2MDUxLDAuNDQxMTQgdiAxLjA1MDI0IHEgMCwwLjAzMzYgMC4wODI4NiwwLjA2OTQgMC4wODUwOSwwLjAzNTggMC4yMzA2NDksMC4wNjcyIHYgMC4wOTYzIGggLTAuOTYyOTA0IHYgLTAuMDk2MyBxIDAuMTQ3Nzk0LC0wLjAzODEgMC4yMzA2NDksLTAuMDY3MiAwLjA4Mjg2LC0wLjAzMTMgMC4wODI4NiwtMC4wNjk0IHYgLTEuMzU5MjYgcSAwLC0wLjA4OTYgLTAuMDA5LC0wLjE0MTA4IC0wLjAwNjcsLTAuMDUxNSAtMC4wNDAzMSwtMC4wNzg0IC0wLjAzMTM1LC0wLjAyOTEgLTAuMDk0MDUsLTAuMDQyNSAtMC4wNjI3LC0wLjAxMzQgLTAuMTcwMTg4LC0wLjAyNjkgdiAtMC4wODk2IHEgMC4wODUwOSwtMC4wMTM0IDAuMTU2NzUyLC0wLjAzMTMgMC4wNzE2NiwtMC4wMjAyIDAuMTM2NTk4LC0wLjA0MjUgMC4wNjQ5NCwtMC4wMjI0IDAuMTIzMTYyLC0wLjA0OTMgMC4wNjA0NiwtMC4wMjY5IDAuMTIwOTIzLC0wLjA1NiBsIDAuMDc4MzgsMC4wNzg0IDAuMDI0NjMsMC41MTI4MSBxIDAuMTAwNzY5LC0wLjE0NzggMC4yMDM3NzgsLTAuMjU3NTIgMC4xMDMwMDgsLTAuMTExOTcgMC4yMDM3NzcsLTAuMTg1ODcgMC4xMDA3NjksLTAuMDczOSAwLjE5NDgyLC0wLjEwOTcyIDAuMDk0MDUsLTAuMDM4MSAwLjE3NDY2NiwtMC4wMzgxIDAuMTA3NDg3LDAgMC4xOTcwNiwwLjAyNjkgMC4wOTE4MSwwLjAyNDYgMC4xNTY3NTIsMC4wODczIDAuMDY3MTgsMC4wNjA1IDAuMTA1MjQ3LDAuMTYxMjMgMC4wMzgwNywwLjEwMDc3IDAuMDM4MDcsMC4yNTA4MSB2IDAuMDQ3IHEgMC4wOTQwNSwtMC4xNDEwOCAwLjE5NDgyLC0wLjI0NjMyIDAuMTAwNzY5LC0wLjEwNzQ5IDAuMTk5Mjk5LC0wLjE3OTE1IDAuMTAwNzY5LC0wLjA3MzkgMC4xOTQ4MiwtMC4xMDk3MiAwLjA5NjI5LC0wLjAzODEgMC4xNzkxNDUsLTAuMDM4MSAwLjEwNzQ4NywwIDAuMTk3MDU5LDAuMDI5MSAwLjA5MTgxLDAuMDI5MSAwLjE1Njc1MiwwLjA4OTYgMC4wNjcxOCwwLjA2MDUgMC4xMDUyNDgsMC4xNTQ1MSAwLjAzODA3LDAuMDkxOCAwLjAzODA3LDAuMjE3MjIgdiAxLjQyNjQ0IHEgMCwwLjAzMTMgMC4wNjk0MiwwLjA2MjcgMC4wNjk0MiwwLjAyOTEgMC4yNDYzMjQsMC4wNzM5IHYgMC4wOTYzIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM0MyIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDYzLjA1MTE3LDI5MC43OTc0OSBxIC0wLjExNjQ0NCwwIC0wLjIxNDk3NCwwLjA0NDggLTAuMDk2MjksMC4wNDQ4IC0wLjE3MjQyNywwLjEyNzY0IC0wLjA3MzksMC4wODA2IC0wLjEyNTQwMSwwLjE5NDgyIC0wLjA0OTI2LDAuMTExOTcgLTAuMDY5NDIsMC4yNDg1NyBoIDAuOTU4NDI2IHEgMC4wNTE1LDAgMC4wNjcxOCwtMC4wMTU3IDAuMDE3OTIsLTAuMDE3OSAwLjAxNzkyLC0wLjA2NDkgMCwtMC4wNjA1IC0wLjAxNzkyLC0wLjE1MDAzIC0wLjAxNTY4LC0wLjA5MTggLTAuMDY3MTgsLTAuMTc2OTEgLTAuMDQ5MjYsLTAuMDg3MyAtMC4xNDEwNzcsLTAuMTQ3NzkgLTAuMDg5NTcsLTAuMDYwNSAtMC4yMzUxMjgsLTAuMDYwNSB6IG0gMC44Mjg1NDYsMC42NjczMSBxIC0wLjA0MDMxLDAuMDQ0OCAtMC4xMDc0ODcsMC4wODI4IC0wLjA2NzE4LDAuMDM4MSAtMC4xMzg4MzcsMC4wNjcyIGggLTEuMTc3ODc5IHEgMC4wMDIyLDAuMTc0NjcgMC4wNDcwMywwLjMzMzY2IDAuMDQ3MDMsMC4xNTY3NSAwLjEzMjExOSwwLjI3NzY4IDAuMDg3MzMsMC4xMTg2OCAwLjIwODI1NiwwLjE5MDM0IDAuMTIzMTYzLDAuMDcxNyAwLjI3NTQzNiwwLjA3MTcgMC4wNjk0MiwwIDAuMTM0MzU5LC0wLjAwOSAwLjA2NzE4LC0wLjAwOSAwLjE0MzMxNSwtMC4wNDAzIDAuMDc2MTQsLTAuMDMxMyAwLjE2Nzk0OSwtMC4wOTE4IDAuMDk0MDUsLTAuMDYwNSAwLjIxOTQ1MiwtMC4xNjM0NyAwLjAyOTExLDAuMDE1NyAwLjA0OTI2LDAuMDQ0OCAwLjAyMjM5LDAuMDI5MSAwLjAzMzU5LDAuMDQ3IC0wLjE1MDAzNCwwLjE2MzQ3IC0wLjI2NDIzOSwwLjI2NDI0IC0wLjExMTk2NSwwLjA5ODUgLTAuMjEyNzM0LDAuMTUyMjcgLTAuMDk4NTMsMC4wNTM4IC0wLjE5NzA2LDAuMDY5NCAtMC4wOTYyOSwwLjAxNzkgLTAuMjEwNDk1LDAuMDE3OSAtMC4xNzI0MjcsMCAtMC4zMjkxNzksLTAuMDczOSAtMC4xNTQ1MTMsLTAuMDczOSAtMC4yNzMxOTYsLTAuMjA4MjYgLTAuMTE4Njg0LC0wLjEzNjU5IC0wLjE5MDM0MiwtMC4zMjY5NCAtMC4wNjk0MiwtMC4xOTI1OCAtMC4wNjk0MiwtMC40Mjk5NCAwLC0wLjE1MDA0IDAuMDMzNTksLTAuMjk1NTkgMC4wMzM1OSwtMC4xNDU1NiAwLjA5NjI5LC0wLjI3NTQ0IDAuMDY0OTQsLTAuMTI5ODggMC4xNTY3NTIsLTAuMjM5NjEgMC4wOTE4MSwtMC4xMDk3MiAwLjIwODI1NiwtMC4xOTAzNCAwLjA0OTI2LC0wLjAzMzYgMC4xMDk3MjYsLTAuMDY0OSAwLjA2MjcsLTAuMDMzNiAwLjEyOTg4LC0wLjA1ODIgMC4wNjcxOCwtMC4wMjQ2IDAuMTMyMTE5LC0wLjAzODEgMC4wNjcxOCwtMC4wMTU3IDAuMTI3NjQxLC0wLjAxNTcgMC4xNDU1NTUsMCAwLjI1OTc2LDAuMDQwMyAwLjExNDIwNSwwLjA0MDMgMC4xOTkyOTksMC4xMDk3MiAwLjA4NTA5LDAuMDY3MiAwLjE0MzMxNiwwLjE1ODk5IDAuMDU4MjIsMC4wODk2IDAuMDk0MDUsMC4xOTAzNCAwLjAzODA3LDAuMTAwNzcgMC4wNTM3NCwwLjIwNjAyIDAuMDE1NjgsMC4xMDMwMSAwLjAxNTY4LDAuMTk3MDYgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzQ1IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjYuNzE5MTYzLDI5Mi43MTIxIHYgLTAuMDk2MyBxIDAuMTYxMjMxLC0wLjA0MjYgMC4yMzUxMjgsLTAuMDczOSAwLjA3NjE0LC0wLjAzMTMgMC4wNzYxNCwtMC4wNjI3IHYgLTEuMTg0NiBxIDAsLTAuMTM2NiAtMC4wMTU2OCwtMC4yMjYxNyAtMC4wMTM0NCwtMC4wOTE4IC0wLjA0NDc5LC0wLjE0MzMxIC0wLjAyOTExLC0wLjA1MTUgLTAuMDc4MzgsLTAuMDcxNyAtMC4wNDcwMiwtMC4wMjI0IC0wLjExNDIwNSwtMC4wMjI0IC0wLjA3MzksMCAtMC4xNTY3NTEsMC4wNDI1IC0wLjA4Mjg1LDAuMDQwMyAtMC4xNzAxODgsMC4xMTg2OSAtMC4wODczMywwLjA3NjEgLTAuMTc2OTA2LDAuMTg4MSAtMC4wODczMywwLjEwOTcyIC0wLjE3MjQyNywwLjI0ODU2IHYgMS4wNTAyNCBxIDAsMC4wMzEzIDAuMDY5NDIsMC4wNjI3IDAuMDY5NDIsMC4wMjkxIDAuMjQ2MzI0LDAuMDczOSB2IDAuMDk2MyBoIC0wLjk2MjkwNCB2IC0wLjA5NjMgcSAwLjE2MTIzLC0wLjA0MjYgMC4yMzUxMjgsLTAuMDczOSAwLjA3NjE0LC0wLjAzMTMgMC4wNzYxNCwtMC4wNjI3IHYgLTEuMTg0NiBxIDAsLTAuMTM2NiAtMC4wMTM0NCwtMC4yMjYxNyAtMC4wMTM0NCwtMC4wOTE4IC0wLjA0NDc5LC0wLjE0MzMxIC0wLjAyOTExLC0wLjA1MTUgLTAuMDc4MzgsLTAuMDcxNyAtMC4wNDcwMywtMC4wMjI0IC0wLjExNjQ0NCwtMC4wMjI0IC0wLjE1MjI3MywwIC0wLjMyMDIyMSwwLjE1Njc1IC0wLjE2NTcxLDAuMTU2NzUgLTAuMzU2MDUxLDAuNDQxMTQgdiAxLjA1MDI0IHEgMCwwLjAzMzYgMC4wODI4NSwwLjA2OTQgMC4wODUwOSwwLjAzNTggMC4yMzA2NSwwLjA2NzIgdiAwLjA5NjMgaCAtMC45NjI5MDUgdiAtMC4wOTYzIHEgMC4xNDc3OTUsLTAuMDM4MSAwLjIzMDY1LC0wLjA2NzIgMC4wODI4NSwtMC4wMzEzIDAuMDgyODUsLTAuMDY5NCB2IC0xLjM1OTI2IHEgMCwtMC4wODk2IC0wLjAwOSwtMC4xNDEwOCAtMC4wMDY3LC0wLjA1MTUgLTAuMDQwMzEsLTAuMDc4NCAtMC4wMzEzNSwtMC4wMjkxIC0wLjA5NDA1LC0wLjA0MjUgLTAuMDYyNywtMC4wMTM0IC0wLjE3MDE4OCwtMC4wMjY5IHYgLTAuMDg5NiBxIDAuMDg1MDksLTAuMDEzNCAwLjE1Njc1MiwtMC4wMzEzIDAuMDcxNjYsLTAuMDIwMiAwLjEzNjU5OCwtMC4wNDI1IDAuMDY0OTQsLTAuMDIyNCAwLjEyMzE2MiwtMC4wNDkzIDAuMDYwNDYsLTAuMDI2OSAwLjEyMDkyMywtMC4wNTYgbCAwLjA3ODM4LDAuMDc4NCAwLjAyNDYzLDAuNTEyODEgcSAwLjEwMDc2OSwtMC4xNDc4IDAuMjAzNzc3LC0wLjI1NzUyIDAuMTAzMDA4LC0wLjExMTk3IDAuMjAzNzc3LC0wLjE4NTg3IDAuMTAwNzY5LC0wLjA3MzkgMC4xOTQ4MjEsLTAuMTA5NzIgMC4wOTQwNSwtMC4wMzgxIDAuMTc0NjY2LC0wLjAzODEgMC4xMDc0ODcsMCAwLjE5NzA1OSwwLjAyNjkgMC4wOTE4MSwwLjAyNDYgMC4xNTY3NTIsMC4wODczIDAuMDY3MTgsMC4wNjA1IDAuMTA1MjQ4LDAuMTYxMjMgMC4wMzgwNywwLjEwMDc3IDAuMDM4MDcsMC4yNTA4MSB2IDAuMDQ3IHEgMC4wOTQwNSwtMC4xNDEwOCAwLjE5NDgyLC0wLjI0NjMyIDAuMTAwNzY5LC0wLjEwNzQ5IDAuMTk5Mjk5LC0wLjE3OTE1IDAuMTAwNzY5LC0wLjA3MzkgMC4xOTQ4MiwtMC4xMDk3MiAwLjA5NjI5LC0wLjAzODEgMC4xNzkxNDUsLTAuMDM4MSAwLjEwNzQ4NywwIDAuMTk3MDYsMC4wMjkxIDAuMDkxODEsMC4wMjkxIDAuMTU2NzUyLDAuMDg5NiAwLjA2NzE4LDAuMDYwNSAwLjEwNTI0NywwLjE1NDUxIDAuMDM4MDcsMC4wOTE4IDAuMDM4MDcsMC4yMTcyMiB2IDEuNDI2NDQgcSAwLDAuMDMxMyAwLjA2OTQyLDAuMDYyNyAwLjA2OTQyLDAuMDI5MSAwLjI0NjMyNCwwLjA3MzkgdiAwLjA5NjMgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzQ3IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjkuNTQ1MTc1LDI5Mi40ODgxNyBxIDAuMTM0MzU5LDAgMC4yODQzOTIsLTAuMDY3MiAwLjE1MjI3NCwtMC4wNjk0IDAuMzIyNDYxLC0wLjIxNzIyIHYgLTAuNTc5OTggcSAtMC4xODgxMDIsMC4wMzE0IC0wLjMxMTI2NCwwLjA2MDUgLTAuMTIwOTIzLDAuMDI5MSAtMC4xOTkyOTksMC4wNjA1IC0wLjA3ODM4LDAuMDI5MSAtMC4xMjU0MDEsMC4wNjI3IC0wLjA0NzAzLDAuMDMzNiAtMC4wODI4NSwwLjA3MTcgLTAuMDU4MjIsMC4wNjA1IC0wLjA5NDA1LDAuMTM4ODQgLTAuMDM1ODMsMC4wNzYxIC0wLjAzNTgzLDAuMTgxMzggMCwwLjA4OTYgMC4wMjY4NywwLjE0NTU2IDAuMDI2ODcsMC4wNTYgMC4wNjQ5NCwwLjA4OTYgMC4wMzgwNywwLjAzMTQgMC4wNzgzOCwwLjA0MjYgMC4wNDI1NSwwLjAxMTIgMC4wNzE2NiwwLjAxMTIgeiBtIDEuMjg1MzY1LDAuMDQwMyBxIC0wLjE5MDM0MiwwLjEzMjEyIC0wLjMxNTc0MywwLjE5MDM1IC0wLjEyMzE2MiwwLjA2MDUgLTAuMTg1ODYzLDAuMDYwNSAtMC4wNzM5LDAgLTAuMTIzMTYyLC0wLjEwMzAxIC0wLjA0OTI2LC0wLjEwMzAxIC0wLjA1Mzc0LC0wLjI4NDM5IC0wLjEwMDc2OSwwLjEwMDc2IC0wLjIwMTUzOCwwLjE3NDY2IC0wLjEwMDc2OSwwLjA3MzkgLTAuMTk3MDU5LDAuMTIwOTIgLTAuMDk2MjksMC4wNDcgLTAuMTgzNjI0LDAuMDY5NCAtMC4wODUwOSwwLjAyMjQgLTAuMTU2NzUyLDAuMDIyNCAtMC4wODA2MSwwIC0wLjE2NTcwOSwtMC4wMjY5IC0wLjA4NTA5LC0wLjAyNjkgLTAuMTU0NTEyLC0wLjA4NTEgLTAuMDY3MTgsLTAuMDU4MiAtMC4xMTE5NjYsLTAuMTUwMDMgLTAuMDQ0NzksLTAuMDkxOCAtMC4wNDQ3OSwtMC4yMjE2OSAwLC0wLjE3MDE5IDAuMDU4MjIsLTAuMjg0NCAwLjA2MDQ2LC0wLjExNDIgMC4xNDMzMTYsLTAuMTk3MDYgMC4wNTM3NCwtMC4wNTM3IDAuMTIwOTIzLC0wLjEwMDc3IDAuMDY5NDIsLTAuMDQ5MyAwLjE4MTM4NCwtMC4wOTQxIDAuMTE0MjA1LC0wLjA0NDggMC4yODQzOTMsLTAuMDg1MSAwLjE3MDE4OCwtMC4wNDAzIDAuNDI3NzA4LC0wLjA3ODQgdiAtMC4zMTU3NCBxIDAsLTAuMDc2MSAtMC4wMTc5MSwtMC4xNDEwOCAtMC4wMTc5MiwtMC4wNjcyIC0wLjA2MDQ2LC0wLjExNDIgLTAuMDQyNTUsLTAuMDQ5MyAtMC4xMTY0NDUsLTAuMDczOSAtMC4wNzE2NiwtMC4wMjY5IC0wLjE4MTM4NCwtMC4wMjQ2IC0wLjA3MTY2LDAuMDAyIC0wLjE0MTA3NywwLjAyNDYgLTAuMDY5NDIsMC4wMjI0IC0wLjEyMDkyMywwLjA2MjcgLTAuMDUxNSwwLjA0MDMgLTAuMDgwNjEsMC4wOTYzIC0wLjAyOTExLDAuMDUzNyAtMC4wMjIzOSwwLjEyMDkzIDAuMDAyMiwwLjAyMDIgLTAuMDQ3MDIsMC4wNDcgLTAuMDQ3MDMsMC4wMjQ2IC0wLjExNDIwNSwwLjA0NDggLTAuMDY0OTQsMC4wMjAyIC0wLjEyOTg4LDAuMDMxMyAtMC4wNjI3LDAuMDExMiAtMC4wODk1NywwLjAwNCBsIC0wLjAzMTM1LC0wLjA4NzMgcSAwLjA1MTUsLTAuMTExOTYgMC4xNTY3NTIsLTAuMjE0OTcgMC4xMDUyNDcsLTAuMTAzMDEgMC4yMzk2MDYsLTAuMTgxMzkgMC4xMzY1OTgsLTAuMDc4NCAwLjI4NjYzMiwtMC4xMjU0IDAuMTUyMjczLC0wLjA0NyAwLjI5MzM1LC0wLjA0NyAwLjI0NjMyNCwwIDAuMzc4NDQ0LDAuMTI5ODggMC4xMzQzNTgsMC4xMjc2NCAwLjEzNDM1OCwwLjM1ODI5IHYgMS4yNjI5NyBxIDAsMC4wOTQxIDAuMDI0NjMsMC4xMzQzNiAwLjAyNDYzLDAuMDQwMyAwLjA2NDk0LDAuMDQwMyAwLjAzMTM1LDAgMC4wODA2MSwtMC4wMTEyIDAuMDQ5MjcsLTAuMDExMiAwLjEzODgzNywtMC4wNDkzIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM0OSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDczLjIxNTQwOCwyOTIuNTIzOTkgcSAtMC4xMDMwMDksMC4wNjk0IC0wLjE4MzYyNCwwLjExODY5IC0wLjA3ODM4LDAuMDQ3IC0wLjEzODgzNywwLjA3NjEgLTAuMDU4MjIsMC4wMzE0IC0wLjEwMDc2OSwwLjA0NDggLTAuMDQyNTUsMC4wMTU3IC0wLjA3MzksMC4wMTU3IC0wLjA3MzksMCAtMC4xMjA5MjIsLTAuMTAwNzcgLTAuMDQ3MDMsLTAuMTAwNzcgLTAuMDYyNywtMC4zNDQ4NiAtMC4wODUwOSwwLjEwMzAxIC0wLjE3MDE4OCwwLjE4NTg3IC0wLjA4Mjg1LDAuMDgyOSAtMC4xNzI0MjcsMC4xNDEwNyAtMC4wODczMywwLjA1NiAtMC4xODU4NjMsMC4wODczIC0wLjA5ODUzLDAuMDMxNCAtMC4yMTI3MzQsMC4wMzE0IC0wLjEyNTQwMiwwIC0wLjI1NzUyMSwtMC4wNzE3IC0wLjEzMjEyLC0wLjA3MzkgLTAuMjQ0MDg1LC0wLjIxMDUgLTAuMTA5NzI3LC0wLjEzNjU5IC0wLjE4MTM4NSwtMC4zMzM2NSAtMC4wNjk0MiwtMC4xOTcwNiAtMC4wNjk0MiwtMC40NDU2MyAwLC0wLjEyNzY0IDAuMDMzNTksLTAuMjY0MjQgMC4wMzU4MywtMC4xMzY1OSAwLjEwMDc2OSwtMC4yNjQyNCAwLjA2NDk0LC0wLjEyNzY0IDAuMTU4OTkyLC0wLjI0MTg0IDAuMDk0MDUsLTAuMTE0MjEgMC4yMTA0OTUsLTAuMTk5MyAwLjExNjQ0NCwtMC4wODczIDAuMjU1MjgyLC0wLjEzNjYgMC4xMzg4MzcsLTAuMDQ5MyAwLjI5NTU4OSwtMC4wNDkzIDAuMTA1MjQ3LDAgMC4yMDgyNTYsMC4wMjY5IDAuMTA1MjQ3LDAuMDI0NiAwLjIyNjE3LDAuMTE0MiB2IC0wLjg0NDIyIHEgMCwtMC4xMjMxNiAtMC4wMDY3LC0wLjE5NDgyIC0wLjAwNjcsLTAuMDczOSAtMC4wMzgwNywtMC4xMTE5NiAtMC4wMzEzNSwtMC4wNDAzIC0wLjA5NjI5LC0wLjA1MzggLTAuMDY0OTQsLTAuMDE1NyAtMC4xODM2MjQsLTAuMDI0NiB2IC0wLjA4NzMgcSAwLjE4MzYyNCwtMC4wMjQ2IDAuMzI5MTc5LC0wLjA2NDkgMC4xNDU1NTUsLTAuMDQyNiAwLjI2MTk5OSwtMC4wODA2IGwgMC4wNjk0MiwwLjA2NzIgdiAyLjgzNDk3IHEgMCwwLjA3ODQgMC4wMDIyLDAuMTM0MzYgMC4wMDQ1LDAuMDU2IDAuMDExMiwwLjA5NCAwLjAwNjcsMC4wMzgxIDAuMDE1NjgsMC4wNjI3IDAuMDA5LDAuMDI0NiAwLjAyMjM5LDAuMDQwMyAwLjAyMDE1LDAuMDI0NiAwLjA3NjE0LDAuMDE1NyAwLjA1ODIyLC0wLjAxMTIgMC4xOTI1ODEsLTAuMDYyNyB6IG0gLTAuNjg1MjMsLTAuMzk2MzUgdiAtMS4wNTAyNCBxIC0wLjA3MzksLTAuMTI3NjQgLTAuMjA4MjU2LC0wLjE5NzA2IC0wLjEzNDM1OCwtMC4wNzE3IC0wLjI5NTU4OSwtMC4wNzE3IC0wLjE0MzMxNiwwIC0wLjI2MTk5OSwwLjA1MzggLTAuMTE4Njg0LDAuMDUxNSAtMC4yMDYwMTcsMC4xNTY3NSAtMC4wODUwOSwwLjEwNTI0IC0wLjEzNDM1OSwwLjI2MiAtMC4wNDcwMywwLjE1Njc1IC0wLjA0NzAzLDAuMzY3MjQgMCwwLjE5MDM1IDAuMDUzNzQsMC4zNDcxIDAuMDU1OTgsMC4xNTQ1MSAwLjE0MTA3NywwLjI2NDI0IDAuMDg1MDksMC4xMDk3MiAwLjE4NTg2MywwLjE3MDE4IDAuMTAzMDA4LDAuMDU4MiAwLjE5NDgyLDAuMDU4MiAwLjA3NjE0LDAgMC4xNTAwMzQsLTAuMDMxNCAwLjA3MzksLTAuMDMxMyAwLjE0NTU1NSwtMC4wODA2IDAuMDcxNjYsLTAuMDUxNSAwLjE0MTA3NywtMC4xMTY0NCAwLjA3MTY2LC0wLjA2NDkgMC4xNDEwNzYsLTAuMTMyMTIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzUxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzUuNTk4MDM1LDI5Mi41MjM5OSBxIC0wLjEwMzAwOCwwLjA2OTQgLTAuMTgzNjIzLDAuMTE4NjkgLTAuMDc4MzgsMC4wNDcgLTAuMTM4ODM4LDAuMDc2MSAtMC4wNTgyMiwwLjAzMTQgLTAuMTAwNzY5LDAuMDQ0OCAtMC4wNDI1NSwwLjAxNTcgLTAuMDczOSwwLjAxNTcgLTAuMDczOSwwIC0wLjEyMDkyMywtMC4xMDA3NyAtMC4wNDcwMywtMC4xMDA3NyAtMC4wNjI3LC0wLjM0NDg2IC0wLjA4NTA5LDAuMTAzMDEgLTAuMTcwMTg3LDAuMTg1ODcgLTAuMDgyODUsMC4wODI5IC0wLjE3MjQyNywwLjE0MTA3IC0wLjA4NzMzLDAuMDU2IC0wLjE4NTg2MywwLjA4NzMgLTAuMDk4NTMsMC4wMzE0IC0wLjIxMjczNSwwLjAzMTQgLTAuMTI1NDAxLDAgLTAuMjU3NTIxLC0wLjA3MTcgLTAuMTMyMTE5LC0wLjA3MzkgLTAuMjQ0MDg1LC0wLjIxMDUgLTAuMTA5NzI2LC0wLjEzNjU5IC0wLjE4MTM4NCwtMC4zMzM2NSAtMC4wNjk0MiwtMC4xOTcwNiAtMC4wNjk0MiwtMC40NDU2MyAwLC0wLjEyNzY0IDAuMDMzNTksLTAuMjY0MjQgMC4wMzU4MywtMC4xMzY1OSAwLjEwMDc2OSwtMC4yNjQyNCAwLjA2NDk0LC0wLjEyNzY0IDAuMTU4OTkxLC0wLjI0MTg0IDAuMDk0MDUsLTAuMTE0MjEgMC4yMTA0OTUsLTAuMTk5MyAwLjExNjQ0NSwtMC4wODczIDAuMjU1MjgyLC0wLjEzNjYgMC4xMzg4MzcsLTAuMDQ5MyAwLjI5NTU4OSwtMC4wNDkzIDAuMTA1MjQ4LDAgMC4yMDgyNTYsMC4wMjY5IDAuMTA1MjQ4LDAuMDI0NiAwLjIyNjE3MSwwLjExNDIgdiAtMC44NDQyMiBxIDAsLTAuMTIzMTYgLTAuMDA2NywtMC4xOTQ4MiAtMC4wMDY3LC0wLjA3MzkgLTAuMDM4MDcsLTAuMTExOTYgLTAuMDMxMzUsLTAuMDQwMyAtMC4wOTYyOSwtMC4wNTM4IC0wLjA2NDk0LC0wLjAxNTcgLTAuMTgzNjIzLC0wLjAyNDYgdiAtMC4wODczIHEgMC4xODM2MjMsLTAuMDI0NiAwLjMyOTE3OCwtMC4wNjQ5IDAuMTQ1NTU2LC0wLjA0MjYgMC4yNjIsLTAuMDgwNiBsIDAuMDY5NDIsMC4wNjcyIHYgMi44MzQ5NyBxIDAsMC4wNzg0IDAuMDAyMiwwLjEzNDM2IDAuMDA0NSwwLjA1NiAwLjAxMTIsMC4wOTQgMC4wMDY3LDAuMDM4MSAwLjAxNTY4LDAuMDYyNyAwLjAwOSwwLjAyNDYgMC4wMjIzOSwwLjA0MDMgMC4wMjAxNSwwLjAyNDYgMC4wNzYxNCwwLjAxNTcgMC4wNTgyMiwtMC4wMTEyIDAuMTkyNTgxLC0wLjA2MjcgeiBtIC0wLjY4NTIyOSwtMC4zOTYzNSB2IC0xLjA1MDI0IHEgLTAuMDczOSwtMC4xMjc2NCAtMC4yMDgyNTYsLTAuMTk3MDYgLTAuMTM0MzU5LC0wLjA3MTcgLTAuMjk1NTg5LC0wLjA3MTcgLTAuMTQzMzE2LDAgLTAuMjYyLDAuMDUzOCAtMC4xMTg2ODQsMC4wNTE1IC0wLjIwNjAxNywwLjE1Njc1IC0wLjA4NTA5LDAuMTA1MjQgLTAuMTM0MzU4LDAuMjYyIC0wLjA0NzAzLDAuMTU2NzUgLTAuMDQ3MDMsMC4zNjcyNCAwLDAuMTkwMzUgMC4wNTM3NCwwLjM0NzEgMC4wNTU5OCwwLjE1NDUxIDAuMTQxMDc2LDAuMjY0MjQgMC4wODUwOSwwLjEwOTcyIDAuMTg1ODYzLDAuMTcwMTggMC4xMDMwMDgsMC4wNTgyIDAuMTk0ODIsMC4wNTgyIDAuMDc2MTQsMCAwLjE1MDAzNCwtMC4wMzE0IDAuMDczOSwtMC4wMzEzIDAuMTQ1NTU1LC0wLjA4MDYgMC4wNzE2NiwtMC4wNTE1IDAuMTQxMDc3LC0wLjExNjQ0IDAuMDcxNjYsLTAuMDY0OSAwLjE0MTA3NywtMC4xMzIxMiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzNTMiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA3Ny4zNTE0MTYsMjkwLjY0NTIxIHEgMC4wMjAxNSwwLjAxMzQgMC4wMTc5MiwwLjA3ODQgMCwwLjA2NDkgLTAuMDE3OTIsMC4xNTAwMyAtMC4wMTU2OCwwLjA4NTEgLTAuMDQyNTUsMC4xNzQ2NyAtMC4wMjY4NywwLjA4OTYgLTAuMDUzNzQsMC4xNTAwMyBoIC0wLjA5NjI5IHEgLTAuMDEzNDQsLTAuMDg5NiAtMC4wMzgwNywtMC4xNTIyNyAtMC4wMjQ2MywtMC4wNjI3IC0wLjA1ODIyLC0wLjA5ODUgLTAuMDMxMzUsLTAuMDM4MSAtMC4wNzE2NiwtMC4wNTM3IC0wLjAzODA3LC0wLjAxNzkgLTAuMDgwNjEsLTAuMDE3OSAtMC4wNDkyNywwIC0wLjExNjQ0NSwwLjA0MjYgLTAuMDY0OTQsMC4wNDAzIC0wLjEzNDM1OCwwLjEyOTg4IC0wLjA2OTQyLDAuMDg3MyAtMC4xMzg4MzgsMC4yMjYxNyAtMC4wNjcxOCwwLjEzNjYgLTAuMTIwOTIzLDAuMzI2OTQgdiAwLjg3NzgxIHEgMCwwLjAzMzYgMC4wODI4NSwwLjA2OTQgMC4wODUwOSwwLjAzNTggMC4yOTU1ODksMC4wNjcyIHYgMC4wOTYzIGggLTEuMDI3ODQ0IHYgLTAuMDk2MyBxIDAuMTQ3Nzk1LC0wLjAzMzYgMC4yMzA2NDksLTAuMDY0OSAwLjA4Mjg1LC0wLjAzMzYgMC4wODI4NSwtMC4wNzE3IHYgLTEuMzAzMjggcSAwLC0wLjA3MzkgLTAuMDA0NSwtMC4xMjMxNiAtMC4wMDQ1LC0wLjA1MTUgLTAuMDExMiwtMC4wODI5IC0wLjAwNjcsLTAuMDMxNCAtMC4wMTc5MSwtMC4wNDkzIC0wLjAwOSwtMC4wMTc5IC0wLjAxNzkxLC0wLjAyOTEgLTAuMDE1NjgsLTAuMDE1NyAtMC4wMzU4MywtMC4wMjQ2IC0wLjAxNzkxLC0wLjAxMTIgLTAuMDQ5MjYsLTAuMDE3OSAtMC4wMjkxMSwtMC4wMDcgLTAuMDcxNjYsLTAuMDA5IC0wLjA0MjU1LC0wLjAwNCAtMC4xMDUyNDgsLTAuMDA5IHYgLTAuMDg5NiBxIDAuMTQ1NTU1LC0wLjAzODEgMC4yODQzOTMsLTAuMDc2MSAwLjE0MTA3NiwtMC4wNDAzIDAuMjUzMDQyLC0wLjEwMzAxIGwgMC4wNzgzOCwwLjA3ODQgMC4wMjkxMSwwLjUwODMzIHEgMC4wNjA0NiwtMC4xMjMxNiAwLjEyOTg4LC0wLjIzMDY1IDAuMDcxNjYsLTAuMTA3NDkgMC4xNTIyNzMsLTAuMTg1ODYgMC4wODA2MSwtMC4wODA2IDAuMTY3OTQ5LC0wLjEyNTQxIDAuMDg5NTcsLTAuMDQ0OCAwLjE4NTg2MiwtMC4wNDQ4IDAuMDcxNjYsMCAwLjE1NDUxMywwLjAxNzkgMC4wODI4NSwwLjAxNzkgMC4xNjU3MDksMC4wNjQ5IHoiIC8+CiAgICA8L2c+CiAgICA8ZwogICAgICAgaWQ9InRleHQ4MjktNi0zLTYtOS0yLTMiCiAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LXNpemU6NC41ODYxMTEwN3B4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0dlbnRpdW0gUGx1cyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonR2VudGl1bSBQbHVzJztsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICBhcmlhLWxhYmVsPSJoaWdoIG1lbSBhZGRyIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzU2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNDkuODMxOTkzLDIwMC4xMDc4OSB2IC0wLjA5NjMgcSAwLjE2MTIzLC0wLjA0MjUgMC4yMzczNjcsLTAuMDczOSAwLjA3NjE0LC0wLjAzMTQgMC4wNzYxNCwtMC4wNjI3IHYgLTEuMTg0NiBxIDAsLTAuMTM2NiAtMC4wMTc5MSwtMC4yMjE2OSAtMC4wMTU2NywtMC4wODUxIC0wLjA1MTUsLTAuMTM0MzYgLTAuMDM1ODMsLTAuMDQ5MyAtMC4wODk1NywtMC4wNjcyIC0wLjA1Mzc0LC0wLjAxNzkgLTAuMTI3NjQxLC0wLjAxNzkgLTAuMDc4MzgsMCAtMC4xNzAxODcsMC4wNDAzIC0wLjA4OTU3LDAuMDQwMyAtMC4xODgxMDMsMC4xMTg2OSAtMC4wOTg1MywwLjA3ODQgLTAuMTk5Mjk4LDAuMTk3MDYgLTAuMTAwNzY5LDAuMTE2NDQgLTAuMTk3MDYsMC4yNzMxOSB2IDAuOTk2NSBxIDAsMC4wMzM2IDAuMDgyODYsMC4wNjk0IDAuMDg1MDksMC4wMzU4IDAuMjMwNjQ5LDAuMDY3MiB2IDAuMDk2MyBoIC0wLjk2MjkwNCB2IC0wLjA5NjMgcSAwLjE0Nzc5NCwtMC4wMzgxIDAuMjMwNjQ5LC0wLjA2NzIgMC4wODI4NSwtMC4wMzE0IDAuMDgyODUsLTAuMDY5NCB2IC0yLjY3Mzc0IHEgMCwtMC4wOTQgLTAuMDA5LC0wLjE0NTU2IC0wLjAwNjcsLTAuMDUzNyAtMC4wNDAzMSwtMC4wODI5IC0wLjAzMTM1LC0wLjAyOTEgLTAuMDk0MDUsLTAuMDQwMyAtMC4wNjI3LC0wLjAxMzQgLTAuMTcwMTg3LC0wLjAyNjkgdiAtMC4wODk2IHEgMC4wOTQwNSwtMC4wMTc5IDAuMTcwMTg3LC0wLjAzNTggMC4wNzgzOCwtMC4wMTc5IDAuMTQzMzE2LC0wLjAzODEgMC4wNjcxOCwtMC4wMjI0IDAuMTI3NjQxLC0wLjA0NyAwLjA2MDQ2LC0wLjAyNDYgMC4xMjU0MDIsLTAuMDU4MiBsIDAuMDgyODUsMC4wNzYxIHYgMS44NjMxMSBxIDAuMDk2MjksLTAuMTQzMzIgMC4yMTI3MzUsLTAuMjU3NTMgMC4xMTg2ODMsLTAuMTE0MiAwLjIzNzM2NywtMC4xOTQ4MiAwLjExODY4NCwtMC4wODA2IDAuMjMwNjQ5LC0wLjEyMzE2IDAuMTE0MjA1LC0wLjA0MjUgMC4yMDE1MzgsLTAuMDQyNSAwLjA5NjI5LDAgMC4xODU4NjMsMC4wMjkxIDAuMDg5NTcsMC4wMjkxIDAuMTU2NzUyLDAuMDg5NiAwLjA2OTQyLDAuMDYwNSAwLjEwOTcyNiwwLjE1NDUxIDAuMDQyNTUsMC4wOTE4IDAuMDQyNTUsMC4yMTcyMSB2IDEuNDI2NDUgcSAwLDAuMDMxNCAwLjA2NzE4LDAuMDYyNyAwLjA2OTQyLDAuMDI5MSAwLjI0NjMyNCwwLjA3MzkgdiAwLjA5NjMgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzU4IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNTEuMDIzMzA3LDIwMC4xMDc4OSB2IC0wLjA5NjMgcSAwLjE1MjI3MywtMC4wMzEzIDAuMjMyODg4LC0wLjA2NzIgMC4wODA2MiwtMC4wMzgxIDAuMDgwNjIsLTAuMDY5NCB2IC0xLjI2NzQ1IHEgMCwtMC4xMTQyMSAtMC4wMDQ1LC0wLjE4MzYzIC0wLjAwNDUsLTAuMDcxNyAtMC4wMzM1OSwtMC4xMDk3MiAtMC4wMjkxMSwtMC4wNDAzIC0wLjA5NDA1LC0wLjA1ODIgLTAuMDYyNywtMC4wMTc5IC0wLjE4MTM4NCwtMC4wMjkxIHYgLTAuMDg5NiBxIDAuMDY5NDIsLTAuMDEzNCAwLjE0NTU1NSwtMC4wMzE0IDAuMDc4MzgsLTAuMDIwMiAwLjE1NDUxMiwtMC4wNDI2IDAuMDc2MTQsLTAuMDI0NiAwLjE0NTU1NiwtMC4wNTE1IDAuMDY5NDIsLTAuMDI2OSAwLjEyNzY0LC0wLjA1MzcgaCAwLjA3NjE0IHYgMS45MTY4NSBxIDAsMC4wMjY5IDAuMDczOSwwLjA2NzIgMC4wNzYxNCwwLjAzODEgMC4yMzk2MDcsMC4wNjk0IHYgMC4wOTYzIHogbSAwLjcxNjU3OSwtMi44MjM3NyBxIDAsMC4wNjI3IC0wLjAyMDE1LDAuMTE4NjkgLTAuMDIwMTUsMC4wNTYgLTAuMDU1OTgsMC4wOTg1IC0wLjAzMzU5LDAuMDQwMyAtMC4wODA2MiwwLjA2NDkgLTAuMDQ3MDMsMC4wMjQ2IC0wLjEwMzAwOSwwLjAyNDYgLTAuMTAwNzY5LDAgLTAuMTQ1NTU1LC0wLjA1NiAtMC4wNDI1NSwtMC4wNTYgLTAuMDQyNTUsLTAuMTU5IDAsLTAuMDYyNyAwLjAyMDE1LC0wLjExODY4IDAuMDIwMTUsLTAuMDU2IDAuMDU1OTgsLTAuMDk2MyAwLjAzNTgzLC0wLjA0MjUgMC4wODA2MiwtMC4wNjQ5IDAuMDQ3MDIsLTAuMDI0NiAwLjEwMDc2OSwtMC4wMjQ2IDAuMTkwMzQxLDAgMC4xOTAzNDEsMC4yMTI3MyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzNjAiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1My42NTY3MzgsMTk4Ljc2NDMxIHEgMCwtMC4xMTg2OSAtMC4wNDAzMSwtMC4yMjM5MyAtMC4wMzgwNywtMC4xMDc0OSAtMC4xMTY0NDQsLTAuMTg1ODcgLTAuMDc2MTQsLTAuMDgwNiAtMC4xOTI1ODEsLTAuMTI1NCAtMC4xMTQyMDUsLTAuMDQ3IC0wLjI2NDIzOSwtMC4wNDcgLTAuMDU1OTgsMCAtMC4xMjU0MDEsMC4wMjkxIC0wLjA2NzE4LDAuMDI5MSAtMC4xMjc2NDEsMC4wODUxIC0wLjA2MDQ2LDAuMDU2IC0wLjEwMDc2OSwwLjE0MTA4IC0wLjA0MDMxLDAuMDg1MSAtMC4wNDAzMSwwLjE5NDgyIDAsMC4xMTg2OCAwLjAzNTgzLDAuMjI2MTcgMC4wMzgwNywwLjEwNTI1IDAuMTExOTY2LDAuMTgzNjIgMC4wNzYxNCwwLjA3ODQgMC4xOTAzNDEsMC4xMjU0IDAuMTE2NDQ1LDAuMDQ0OCAwLjI3NTQzNiwwLjA0NDggMC4wNjQ5NCwwIDAuMTM0MzU4LC0wLjAyNjkgMC4wNzE2NiwtMC4wMjkxIDAuMTI3NjQxLC0wLjA4NTEgMC4wNTgyMiwtMC4wNTgyIDAuMDk0MDUsLTAuMTQxMDcgMC4wMzgwNywtMC4wODI5IDAuMDM4MDcsLTAuMTk0ODIgeiBtIC0wLjM4NTE2MiwxLjM1MjU0IHEgLTAuMDg1MDksLTAuMDA5IC0wLjE1Njc1MiwtMC4wMjAyIC0wLjA3MTY2LC0wLjAxMTIgLTAuMTM0MzU5LC0wLjAyNDYgLTAuMTYxMjMsMC4wODczIC0wLjI1NTI4MSwwLjE1Njc1IC0wLjA5MTgxLDAuMDY5NCAtMC4xMzg4MzgsMC4xMjMxNiAtMC4wNDcwMiwwLjA1NiAtMC4wNjA0NiwwLjEwMDc3IC0wLjAxMTIsMC4wNDQ4IC0wLjAxMTIsMC4wODA2IDAsMC4wOTQxIDAuMDYyNywwLjE3NjkxIDAuMDYyNywwLjA4NTEgMC4xNjc5NDksMC4xNDU1NiAwLjEwNTI0NywwLjA2MjcgMC4yNDQwODUsMC4wOTg1IDAuMTM4ODM3LDAuMDM4MSAwLjI5MTExLDAuMDM4MSAwLjE1MDAzNCwwIDAuMjczMTk2LC0wLjA0MDMgMC4xMjMxNjIsLTAuMDQwMyAwLjIxMDQ5NiwtMC4xMTE5NyAwLjA4NzMzLC0wLjA2OTQgMC4xMzQzNTgsLTAuMTY3OTUgMC4wNDkyNiwtMC4wOTYzIDAuMDQ5MjYsLTAuMjEyNzMgMCwtMC4wNjI3IC0wLjAyOTExLC0wLjExNjQ1IC0wLjAyOTExLC0wLjA1MTUgLTAuMTA1MjQ4LC0wLjA5NCAtMC4wNzYxNCwtMC4wNDI2IC0wLjIwODI1NiwtMC4wNzYxIC0wLjEyOTg4LC0wLjAzMzYgLTAuMzMzNjU3LC0wLjA1NiB6IG0gMC42OTg2NjUsLTEuNDQ0MzUgcSAwLDAuMTcyNDIgLTAuMDc4MzgsMC4zMTU3NCAtMC4wNzYxNCwwLjE0MTA4IC0wLjIwMTUzOCwwLjI0NDA4IC0wLjEyNTQwMSwwLjEwMDc3IC0wLjI4NDM5MiwwLjE1OSAtMC4xNTg5OTEsMC4wNTYgLTAuMzIyNDYxLDAuMDU2IGggLTAuMDA5IHEgLTAuMTA3NDg2LDAuMDg5NiAtMC4xNDc3OTQsMC4xNTAwMyAtMC4wNDAzMSwwLjA1ODIgLTAuMDQwMzEsMC4wNzE3IDAsMC4wMjY5IDAuMDIyMzksMC4wNTM3IDAuMDI0NjMsMC4wMjQ2IDAuMDg3MzMsMC4wNDkzIDAuMDY0OTQsMC4wMjI0IDAuMTc2OTA1LDAuMDQ3IDAuMTExOTY2LDAuMDIyNCAwLjI4NjYzMiwwLjA0MjYgMC4yNDQwODUsMC4wMjY5IDAuNDAzMDc2LDAuMDgwNiAwLjE1ODk5MSwwLjA1MzcgMC4yNTMwNDMsMC4xMjU0IDAuMDk0MDUsMC4wNjk0IDAuMTI5ODgsMC4xNTAwMyAwLjAzODA3LDAuMDgwNiAwLjAzODA3LDAuMTU4OTkgMCwwLjEyMzE2IC0wLjA0NzAzLDAuMjMyODkgLTAuMDQ3MDIsMC4xMTE5NyAtMC4xMjc2NCwwLjIwNjAyIC0wLjA4MDYyLDAuMDk0MSAtMC4xOTAzNDIsMC4xNzAxOSAtMC4xMDk3MjYsMC4wNzYxIC0wLjIzNTEyOCwwLjEyOTg4IC0wLjEyNTQwMSwwLjA1MzcgLTAuMjU5NzYsMC4wODI5IC0wLjEzNDM1OSwwLjAyOTEgLTAuMjY2NDc4LDAuMDI5MSAtMC4xMDUyNDgsMCAtMC4yMTcyMTMsLTAuMDE1NyAtMC4xMTE5NjYsLTAuMDEzNCAtMC4yMjE2OTIsLTAuMDQ0OCAtMC4xMDk3MjYsLTAuMDMxNCAtMC4yMDgyNTYsLTAuMDgwNiAtMC4wOTYyOSwtMC4wNDcgLTAuMTcwMTg4LC0wLjExNjQ0IC0wLjA3MzksLTAuMDY3MiAtMC4xMTg2ODMsLTAuMTU0NTEgLTAuMDQyNTUsLTAuMDg1MSAtMC4wNDI1NSwtMC4xOTQ4MiAwLC0wLjA1ODIgMC4wMjAxNSwtMC4xMjMxNiAwLjAyMjM5LC0wLjA2MjcgMC4wODczMywtMC4xMzY2IDAuMDY0OTQsLTAuMDczOSAwLjE4MTM4NCwtMC4xNTg5OSAwLjExNjQ0NCwtMC4wODUxIDAuMzA5MDI1LC0wLjE4ODExIC0wLjE0NTU1NSwtMC4wNTE1IC0wLjIwMTUzOCwtMC4xMTY0NCAtMC4wNTU5OCwtMC4wNjQ5IC0wLjA1NTk4LC0wLjEzMjEyIDAsLTAuMDE3OSAwLjAxMTIsLTAuMDQ3IDAuMDExMiwtMC4wMzE0IDAuMDQ0NzksLTAuMDczOSAwLjAzNTgzLC0wLjA0NDggMC4wOTg1MywtMC4xMDA3NyAwLjA2NDk0LC0wLjA1NiAwLjE2Nzk0OCwtMC4xMjc2NCAtMC4xMTQyMDUsLTAuMDMxNCAtMC4yMDgyNTYsLTAuMDg5NiAtMC4wOTE4MSwtMC4wNjA1IC0wLjE1ODk5MSwtMC4xNDMzMSAtMC4wNjQ5NCwtMC4wODUxIC0wLjEwMzAwOCwtMC4xOTAzNCAtMC4wMzU4MywtMC4xMDc0OSAtMC4wMzU4MywtMC4yMzI4OSAwLC0wLjE2MzQ3IDAuMDczOSwtMC4zMDkwMyAwLjA3MzksLTAuMTQ3NzkgMC4xOTQ4MiwtMC4yNTUyOCAwLjEyMDkyMywtMC4xMDk3MiAwLjI3NTQzNSwtMC4xNzI0MiAwLjE1NDUxMywtMC4wNjQ5IDAuMzE3OTgzLC0wLjA2NDkgMC4xMzQzNTgsMCAwLjI1MDgwMywwLjAzODEgMC4xMTg2ODMsMC4wMzgxIDAuMjE0OTc0LDAuMTA3NDkgMC4xMTY0NDQsLTAuMDExMiAwLjIxMDQ5NSwtMC4wMjkxIDAuMDk0MDUsLTAuMDE3OSAwLjE2Nzk0OCwtMC4wMzgxIDAuMDc2MTQsLTAuMDIwMiAwLjEzNDM1OSwtMC4wNDAzIDAuMDU4MjIsLTAuMDIwMiAwLjEwNTI0OCwtMC4wMzgxIGwgMC4wNDQ3OSwwLjA2NzIgcSAtMC4wMjY4NywwLjA2MjcgLTAuMDUxNSwwLjExNjQ1IC0wLjAyNDYzLDAuMDUxNSAtMC4wNzYxNCwwLjEwNzQ5IC0wLjA4NTA5LDAuMDE1NyAtMC4xNjc5NDgsMC4wMjQ2IC0wLjA4MDYyLDAuMDA5IC0wLjE4MzYyNCwwLjAxMzQgMC4wNTgyMiwwLjA4NTEgMC4wODk1NywwLjE4MTM5IDAuMDMzNTksMC4wOTYzIDAuMDMzNTksMC4yMDM3OCB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzNjIiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1NS44NTEyNjMsMjAwLjEwNzg5IHYgLTAuMDk2MyBxIDAuMTYxMjMxLC0wLjA0MjUgMC4yMzczNjcsLTAuMDczOSAwLjA3NjE0LC0wLjAzMTQgMC4wNzYxNCwtMC4wNjI3IHYgLTEuMTg0NiBxIDAsLTAuMTM2NiAtMC4wMTc5MSwtMC4yMjE2OSAtMC4wMTU2OCwtMC4wODUxIC0wLjA1MTUsLTAuMTM0MzYgLTAuMDM1ODMsLTAuMDQ5MyAtMC4wODk1NywtMC4wNjcyIC0wLjA1Mzc0LC0wLjAxNzkgLTAuMTI3NjQxLC0wLjAxNzkgLTAuMDc4MzgsMCAtMC4xNzAxODgsMC4wNDAzIC0wLjA4OTU3LDAuMDQwMyAtMC4xODgxMDIsMC4xMTg2OSAtMC4wOTg1MywwLjA3ODQgLTAuMTk5Mjk5LDAuMTk3MDYgLTAuMTAwNzY5LDAuMTE2NDQgLTAuMTk3MDU5LDAuMjczMTkgdiAwLjk5NjUgcSAwLDAuMDMzNiAwLjA4Mjg1LDAuMDY5NCAwLjA4NTA5LDAuMDM1OCAwLjIzMDY0OSwwLjA2NzIgdiAwLjA5NjMgaCAtMC45NjI5MDQgdiAtMC4wOTYzIHEgMC4xNDc3OTUsLTAuMDM4MSAwLjIzMDY0OSwtMC4wNjcyIDAuMDgyODYsLTAuMDMxNCAwLjA4Mjg2LC0wLjA2OTQgdiAtMi42NzM3NCBxIDAsLTAuMDk0IC0wLjAwOSwtMC4xNDU1NiAtMC4wMDY3LC0wLjA1MzcgLTAuMDQwMzEsLTAuMDgyOSAtMC4wMzEzNSwtMC4wMjkxIC0wLjA5NDA1LC0wLjA0MDMgLTAuMDYyNywtMC4wMTM0IC0wLjE3MDE4OCwtMC4wMjY5IHYgLTAuMDg5NiBxIDAuMDk0MDUsLTAuMDE3OSAwLjE3MDE4OCwtMC4wMzU4IDAuMDc4MzgsLTAuMDE3OSAwLjE0MzMxNiwtMC4wMzgxIDAuMDY3MTgsLTAuMDIyNCAwLjEyNzY0MSwtMC4wNDcgMC4wNjA0NiwtMC4wMjQ2IDAuMTI1NDAxLC0wLjA1ODIgbCAwLjA4Mjg1LDAuMDc2MSB2IDEuODYzMTEgcSAwLjA5NjI5LC0wLjE0MzMyIDAuMjEyNzM0LC0wLjI1NzUzIDAuMTE4Njg0LC0wLjExNDIgMC4yMzczNjcsLTAuMTk0ODIgMC4xMTg2ODQsLTAuMDgwNiAwLjIzMDY1LC0wLjEyMzE2IDAuMTE0MjA0LC0wLjA0MjUgMC4yMDE1MzgsLTAuMDQyNSAwLjA5NjI5LDAgMC4xODU4NjMsMC4wMjkxIDAuMDg5NTcsMC4wMjkxIDAuMTU2NzUxLDAuMDg5NiAwLjA2OTQyLDAuMDYwNSAwLjEwOTcyNywwLjE1NDUxIDAuMDQyNTUsMC4wOTE4IDAuMDQyNTUsMC4yMTcyMSB2IDEuNDI2NDUgcSAwLDAuMDMxNCAwLjA2NzE4LDAuMDYyNyAwLjA2OTQyLDAuMDI5MSAwLjI0NjMyNCwwLjA3MzkgdiAwLjA5NjMgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzY0IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjAuNTUzODE4LDIwMC4xMDc4OSB2IC0wLjA5NjMgcSAwLjE2MTIzMSwtMC4wNDI1IDAuMjM1MTI4LC0wLjA3MzkgMC4wNzYxNCwtMC4wMzE0IDAuMDc2MTQsLTAuMDYyNyB2IC0xLjE4NDYgcSAwLC0wLjEzNjYgLTAuMDE1NjgsLTAuMjI2MTcgLTAuMDEzNDQsLTAuMDkxOCAtMC4wNDQ3OSwtMC4xNDMzMiAtMC4wMjkxMSwtMC4wNTE1IC0wLjA3ODM4LC0wLjA3MTcgLTAuMDQ3MDIsLTAuMDIyNCAtMC4xMTQyMDUsLTAuMDIyNCAtMC4wNzM5LDAgLTAuMTU2NzUyLDAuMDQyNiAtMC4wODI4NSwwLjA0MDMgLTAuMTcwMTg3LDAuMTE4NjggLTAuMDg3MzMsMC4wNzYxIC0wLjE3NjkwNiwwLjE4ODExIC0wLjA4NzMzLDAuMTA5NzIgLTAuMTcyNDI3LDAuMjQ4NTYgdiAxLjA1MDI0IHEgMCwwLjAzMTQgMC4wNjk0MiwwLjA2MjcgMC4wNjk0MiwwLjAyOTEgMC4yNDYzMjQsMC4wNzM5IHYgMC4wOTYzIGggLTAuOTYyOTA0IHYgLTAuMDk2MyBxIDAuMTYxMjMsLTAuMDQyNSAwLjIzNTEyOCwtMC4wNzM5IDAuMDc2MTQsLTAuMDMxNCAwLjA3NjE0LC0wLjA2MjcgdiAtMS4xODQ2IHEgMCwtMC4xMzY2IC0wLjAxMzQ0LC0wLjIyNjE3IC0wLjAxMzQ0LC0wLjA5MTggLTAuMDQ0NzksLTAuMTQzMzIgLTAuMDI5MTEsLTAuMDUxNSAtMC4wNzgzOCwtMC4wNzE3IC0wLjA0NzAyLC0wLjAyMjQgLTAuMTE2NDQ0LC0wLjAyMjQgLTAuMTUyMjczLDAgLTAuMzIwMjIyLDAuMTU2NzUgLTAuMTY1NzA5LDAuMTU2NzYgLTAuMzU2MDUsMC40NDExNSB2IDEuMDUwMjQgcSAwLDAuMDMzNiAwLjA4Mjg1LDAuMDY5NCAwLjA4NTA5LDAuMDM1OCAwLjIzMDY0OSwwLjA2NzIgdiAwLjA5NjMgaCAtMC45NjI5MDQgdiAtMC4wOTYzIHEgMC4xNDc3OTUsLTAuMDM4MSAwLjIzMDY0OSwtMC4wNjcyIDAuMDgyODYsLTAuMDMxNCAwLjA4Mjg2LC0wLjA2OTQgdiAtMS4zNTkyNyBxIDAsLTAuMDg5NiAtMC4wMDksLTAuMTQxMDcgLTAuMDA2NywtMC4wNTE1IC0wLjA0MDMxLC0wLjA3ODQgLTAuMDMxMzUsLTAuMDI5MSAtMC4wOTQwNSwtMC4wNDI2IC0wLjA2MjcsLTAuMDEzNCAtMC4xNzAxODgsLTAuMDI2OSB2IC0wLjA4OTYgcSAwLjA4NTA5LC0wLjAxMzQgMC4xNTY3NTIsLTAuMDMxNCAwLjA3MTY2LC0wLjAyMDIgMC4xMzY1OTgsLTAuMDQyNiAwLjA2NDk0LC0wLjAyMjQgMC4xMjMxNjIsLTAuMDQ5MyAwLjA2MDQ2LC0wLjAyNjkgMC4xMjA5MjMsLTAuMDU2IGwgMC4wNzgzOCwwLjA3ODQgMC4wMjQ2MywwLjUxMjggcSAwLjEwMDc2OSwtMC4xNDc3OSAwLjIwMzc3OCwtMC4yNTc1MiAwLjEwMzAwOCwtMC4xMTE5NiAwLjIwMzc3NywtMC4xODU4NiAwLjEwMDc2OSwtMC4wNzM5IDAuMTk0ODIsLTAuMTA5NzMgMC4wOTQwNSwtMC4wMzgxIDAuMTc0NjY3LC0wLjAzODEgMC4xMDc0ODcsMCAwLjE5NzA1OSwwLjAyNjkgMC4wOTE4MSwwLjAyNDYgMC4xNTY3NTIsMC4wODczIDAuMDY3MTgsMC4wNjA1IDAuMTA1MjQ4LDAuMTYxMjMgMC4wMzgwNywwLjEwMDc3IDAuMDM4MDcsMC4yNTA4IHYgMC4wNDcgcSAwLjA5NDA1LC0wLjE0MTA4IDAuMTk0ODIsLTAuMjQ2MzMgMC4xMDA3NjksLTAuMTA3NDggMC4xOTkyOTksLTAuMTc5MTQgMC4xMDA3NjksLTAuMDczOSAwLjE5NDgyLC0wLjEwOTczIDAuMDk2MjksLTAuMDM4MSAwLjE3OTE0NSwtMC4wMzgxIDAuMTA3NDg3LDAgMC4xOTcwNTksMC4wMjkxIDAuMDkxODEsMC4wMjkxIDAuMTU2NzUyLDAuMDg5NiAwLjA2NzE4LDAuMDYwNSAwLjEwNTI0OCwwLjE1NDUxIDAuMDM4MDcsMC4wOTE4IDAuMDM4MDcsMC4yMTcyMSB2IDEuNDI2NDUgcSAwLDAuMDMxNCAwLjA2OTQyLDAuMDYyNyAwLjA2OTQyLDAuMDI5MSAwLjI0NjMyNCwwLjA3MzkgdiAwLjA5NjMgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzY2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjIuNjkwMTIyLDE5OC4xOTMyOCBxIC0wLjExNjQ0NSwwIC0wLjIxNDk3NCwwLjA0NDggLTAuMDk2MjksMC4wNDQ4IC0wLjE3MjQyNywwLjEyNzY0IC0wLjA3MzksMC4wODA2IC0wLjEyNTQwMiwwLjE5NDgyIC0wLjA0OTI2LDAuMTExOTcgLTAuMDY5NDIsMC4yNDg1NiBoIDAuOTU4NDI1IHEgMC4wNTE1LDAgMC4wNjcxOCwtMC4wMTU3IDAuMDE3OTEsLTAuMDE3OSAwLjAxNzkxLC0wLjA2NDkgMCwtMC4wNjA1IC0wLjAxNzkxLC0wLjE1MDA0IC0wLjAxNTY4LC0wLjA5MTggLTAuMDY3MTgsLTAuMTc2OSAtMC4wNDkyNiwtMC4wODczIC0wLjE0MTA3NywtMC4xNDc4IC0wLjA4OTU3LC0wLjA2MDUgLTAuMjM1MTI3LC0wLjA2MDUgeiBtIDAuODI4NTQ1LDAuNjY3MzIgcSAtMC4wNDAzMSwwLjA0NDggLTAuMTA3NDg3LDAuMDgyOSAtMC4wNjcxOCwwLjAzODEgLTAuMTM4ODM3LDAuMDY3MiBoIC0xLjE3Nzg3OCBxIDAuMDAyMiwwLjE3NDY3IDAuMDQ3MDIsMC4zMzM2NiAwLjA0NzAzLDAuMTU2NzUgMC4xMzIxMiwwLjI3NzY3IDAuMDg3MzMsMC4xMTg2OSAwLjIwODI1NiwwLjE5MDM1IDAuMTIzMTYyLDAuMDcxNyAwLjI3NTQzNSwwLjA3MTcgMC4wNjk0MiwwIDAuMTM0MzU5LC0wLjAwOSAwLjA2NzE4LC0wLjAwOSAwLjE0MzMxNiwtMC4wNDAzIDAuMDc2MTQsLTAuMDMxNCAwLjE2Nzk0OCwtMC4wOTE4IDAuMDk0MDUsLTAuMDYwNSAwLjIxOTQ1MywtMC4xNjM0NyAwLjAyOTExLDAuMDE1NyAwLjA0OTI3LDAuMDQ0OCAwLjAyMjM5LDAuMDI5MSAwLjAzMzU5LDAuMDQ3IC0wLjE1MDAzNCwwLjE2MzQ3IC0wLjI2NDIzOSwwLjI2NDI0IC0wLjExMTk2NSwwLjA5ODUgLTAuMjEyNzM0LDAuMTUyMjcgLTAuMDk4NTMsMC4wNTM3IC0wLjE5NzA2LDAuMDY5NCAtMC4wOTYyOSwwLjAxNzkgLTAuMjEwNDk1LDAuMDE3OSAtMC4xNzI0MjcsMCAtMC4zMjkxNzksLTAuMDczOSAtMC4xNTQ1MTIsLTAuMDczOSAtMC4yNzMxOTYsLTAuMjA4MjYgLTAuMTE4NjgzLC0wLjEzNjYgLTAuMTkwMzQxLC0wLjMyNjk0IC0wLjA2OTQyLC0wLjE5MjU4IC0wLjA2OTQyLC0wLjQyOTk1IDAsLTAuMTUwMDMgMC4wMzM1OSwtMC4yOTU1OSAwLjAzMzU5LC0wLjE0NTU1IDAuMDk2MjksLTAuMjc1NDMgMC4wNjQ5NCwtMC4xMjk4OCAwLjE1Njc1MiwtMC4yMzk2MSAwLjA5MTgxLC0wLjEwOTcyIDAuMjA4MjU2LC0wLjE5MDM0IDAuMDQ5MjYsLTAuMDMzNiAwLjEwOTcyNiwtMC4wNjQ5IDAuMDYyNywtMC4wMzM2IDAuMTI5ODgsLTAuMDU4MiAwLjA2NzE4LC0wLjAyNDYgMC4xMzIxMiwtMC4wMzgxIDAuMDY3MTgsLTAuMDE1NyAwLjEyNzY0LC0wLjAxNTcgMC4xNDU1NTYsMCAwLjI1OTc2MSwwLjA0MDMgMC4xMTQyMDUsMC4wNDAzIDAuMTk5Mjk4LDAuMTA5NzMgMC4wODUwOSwwLjA2NzIgMC4xNDMzMTYsMC4xNTg5OSAwLjA1ODIyLDAuMDg5NiAwLjA5NDA1LDAuMTkwMzQgMC4wMzgwNywwLjEwMDc3IDAuMDUzNzQsMC4yMDYwMiAwLjAxNTY4LDAuMTAzMDEgMC4wMTU2OCwwLjE5NzA2IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM2OCIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY2LjM1ODExNiwyMDAuMTA3ODkgdiAtMC4wOTYzIHEgMC4xNjEyMywtMC4wNDI1IDAuMjM1MTI3LC0wLjA3MzkgMC4wNzYxNCwtMC4wMzE0IDAuMDc2MTQsLTAuMDYyNyB2IC0xLjE4NDYgcSAwLC0wLjEzNjYgLTAuMDE1NjgsLTAuMjI2MTcgLTAuMDEzNDQsLTAuMDkxOCAtMC4wNDQ3OSwtMC4xNDMzMiAtMC4wMjkxMSwtMC4wNTE1IC0wLjA3ODM4LC0wLjA3MTcgLTAuMDQ3MDMsLTAuMDIyNCAtMC4xMTQyMDUsLTAuMDIyNCAtMC4wNzM5LDAgLTAuMTU2NzUyLDAuMDQyNiAtMC4wODI4NSwwLjA0MDMgLTAuMTcwMTg4LDAuMTE4NjggLTAuMDg3MzMsMC4wNzYxIC0wLjE3NjkwNiwwLjE4ODExIC0wLjA4NzMzLDAuMTA5NzIgLTAuMTcyNDI3LDAuMjQ4NTYgdiAxLjA1MDI0IHEgMCwwLjAzMTQgMC4wNjk0MiwwLjA2MjcgMC4wNjk0MiwwLjAyOTEgMC4yNDYzMjQsMC4wNzM5IHYgMC4wOTYzIGggLTAuOTYyOTA0IHYgLTAuMDk2MyBxIDAuMTYxMjMxLC0wLjA0MjUgMC4yMzUxMjgsLTAuMDczOSAwLjA3NjE0LC0wLjAzMTQgMC4wNzYxNCwtMC4wNjI3IHYgLTEuMTg0NiBxIDAsLTAuMTM2NiAtMC4wMTM0NCwtMC4yMjYxNyAtMC4wMTM0NCwtMC4wOTE4IC0wLjA0NDc5LC0wLjE0MzMyIC0wLjAyOTExLC0wLjA1MTUgLTAuMDc4MzgsLTAuMDcxNyAtMC4wNDcwMywtMC4wMjI0IC0wLjExNjQ0NSwtMC4wMjI0IC0wLjE1MjI3MywwIC0wLjMyMDIyMSwwLjE1Njc1IC0wLjE2NTcwOSwwLjE1Njc2IC0wLjM1NjA1MSwwLjQ0MTE1IHYgMS4wNTAyNCBxIDAsMC4wMzM2IDAuMDgyODYsMC4wNjk0IDAuMDg1MDksMC4wMzU4IDAuMjMwNjQ5LDAuMDY3MiB2IDAuMDk2MyBoIC0wLjk2MjkwNCB2IC0wLjA5NjMgcSAwLjE0Nzc5NCwtMC4wMzgxIDAuMjMwNjQ5LC0wLjA2NzIgMC4wODI4NSwtMC4wMzE0IDAuMDgyODUsLTAuMDY5NCB2IC0xLjM1OTI3IHEgMCwtMC4wODk2IC0wLjAwOSwtMC4xNDEwNyAtMC4wMDY3LC0wLjA1MTUgLTAuMDQwMzEsLTAuMDc4NCAtMC4wMzEzNSwtMC4wMjkxIC0wLjA5NDA1LC0wLjA0MjYgLTAuMDYyNywtMC4wMTM0IC0wLjE3MDE4NywtMC4wMjY5IHYgLTAuMDg5NiBxIDAuMDg1MDksLTAuMDEzNCAwLjE1Njc1MSwtMC4wMzE0IDAuMDcxNjYsLTAuMDIwMiAwLjEzNjU5OSwtMC4wNDI2IDAuMDY0OTQsLTAuMDIyNCAwLjEyMzE2MiwtMC4wNDkzIDAuMDYwNDYsLTAuMDI2OSAwLjEyMDkyMywtMC4wNTYgbCAwLjA3ODM4LDAuMDc4NCAwLjAyNDYzLDAuNTEyOCBxIDAuMTAwNzY5LC0wLjE0Nzc5IDAuMjAzNzc3LC0wLjI1NzUyIDAuMTAzMDA5LC0wLjExMTk2IDAuMjAzNzc4LC0wLjE4NTg2IDAuMTAwNzY5LC0wLjA3MzkgMC4xOTQ4MiwtMC4xMDk3MyAwLjA5NDA1LC0wLjAzODEgMC4xNzQ2NjYsLTAuMDM4MSAwLjEwNzQ4NywwIDAuMTk3MDYsMC4wMjY5IDAuMDkxODEsMC4wMjQ2IDAuMTU2NzUxLDAuMDg3MyAwLjA2NzE4LDAuMDYwNSAwLjEwNTI0OCwwLjE2MTIzIDAuMDM4MDcsMC4xMDA3NyAwLjAzODA3LDAuMjUwOCB2IDAuMDQ3IHEgMC4wOTQwNSwtMC4xNDEwOCAwLjE5NDgyMSwtMC4yNDYzMyAwLjEwMDc2OSwtMC4xMDc0OCAwLjE5OTI5OCwtMC4xNzkxNCAwLjEwMDc2OSwtMC4wNzM5IDAuMTk0ODIxLC0wLjEwOTczIDAuMDk2MjksLTAuMDM4MSAwLjE3OTE0NCwtMC4wMzgxIDAuMTA3NDg3LDAgMC4xOTcwNiwwLjAyOTEgMC4wOTE4MSwwLjAyOTEgMC4xNTY3NTIsMC4wODk2IDAuMDY3MTgsMC4wNjA1IDAuMTA1MjQ3LDAuMTU0NTEgMC4wMzgwNywwLjA5MTggMC4wMzgwNywwLjIxNzIxIHYgMS40MjY0NSBxIDAsMC4wMzE0IDAuMDY5NDIsMC4wNjI3IDAuMDY5NDIsMC4wMjkxIDAuMjQ2MzI1LDAuMDczOSB2IDAuMDk2MyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzNzAiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2OS4xODQxMjcsMTk5Ljg4Mzk2IHEgMC4xMzQzNTksMCAwLjI4NDM5MywtMC4wNjcyIDAuMTUyMjczLC0wLjA2OTQgMC4zMjI0NjEsLTAuMjE3MjEgdiAtMC41Nzk5OCBxIC0wLjE4ODEwMywwLjAzMTQgLTAuMzExMjY1LDAuMDYwNSAtMC4xMjA5MjMsMC4wMjkxIC0wLjE5OTI5OCwwLjA2MDUgLTAuMDc4MzgsMC4wMjkxIC0wLjEyNTQwMiwwLjA2MjcgLTAuMDQ3MDMsMC4wMzM2IC0wLjA4Mjg1LDAuMDcxNyAtMC4wNTgyMiwwLjA2MDUgLTAuMDk0MDUsMC4xMzg4NCAtMC4wMzU4MywwLjA3NjEgLTAuMDM1ODMsMC4xODEzOCAwLDAuMDg5NiAwLjAyNjg3LDAuMTQ1NTYgMC4wMjY4NywwLjA1NiAwLjA2NDk0LDAuMDg5NiAwLjAzODA3LDAuMDMxNCAwLjA3ODM4LDAuMDQyNiAwLjA0MjU1LDAuMDExMiAwLjA3MTY2LDAuMDExMiB6IG0gMS4yODUzNjUsMC4wNDAzIHEgLTAuMTkwMzQxLDAuMTMyMTIgLTAuMzE1NzQzLDAuMTkwMzQgLTAuMTIzMTYyLDAuMDYwNSAtMC4xODU4NjMsMC4wNjA1IC0wLjA3MzksMCAtMC4xMjMxNjIsLTAuMTAzIC0wLjA0OTI3LC0wLjEwMzAxIC0wLjA1Mzc0LC0wLjI4NDQgLTAuMTAwNzY5LDAuMTAwNzcgLTAuMjAxNTM4LDAuMTc0NjcgLTAuMTAwNzY5LDAuMDczOSAtMC4xOTcwNiwwLjEyMDkyIC0wLjA5NjI5LDAuMDQ3IC0wLjE4MzYyMywwLjA2OTQgLTAuMDg1MDksMC4wMjI0IC0wLjE1Njc1MiwwLjAyMjQgLTAuMDgwNjIsMCAtMC4xNjU3MDksLTAuMDI2OSAtMC4wODUwOSwtMC4wMjY5IC0wLjE1NDUxMywtMC4wODUxIC0wLjA2NzE4LC0wLjA1ODIgLTAuMTExOTY2LC0wLjE1MDA0IC0wLjA0NDc5LC0wLjA5MTggLTAuMDQ0NzksLTAuMjIxNjkgMCwtMC4xNzAxOCAwLjA1ODIyLC0wLjI4NDM5IDAuMDYwNDYsLTAuMTE0MiAwLjE0MzMxNiwtMC4xOTcwNiAwLjA1Mzc0LC0wLjA1MzcgMC4xMjA5MjMsLTAuMTAwNzcgMC4wNjk0MiwtMC4wNDkzIDAuMTgxMzg0LC0wLjA5NDEgMC4xMTQyMDUsLTAuMDQ0OCAwLjI4NDM5MywtMC4wODUxIDAuMTcwMTg4LC0wLjA0MDMgMC40Mjc3MDksLTAuMDc4NCB2IC0wLjMxNTc0IHEgMCwtMC4wNzYxIC0wLjAxNzkyLC0wLjE0MTA4IC0wLjAxNzkxLC0wLjA2NzIgLTAuMDYwNDYsLTAuMTE0MiAtMC4wNDI1NSwtMC4wNDkzIC0wLjExNjQ0NCwtMC4wNzM5IC0wLjA3MTY2LC0wLjAyNjkgLTAuMTgxMzg1LC0wLjAyNDYgLTAuMDcxNjYsMC4wMDIgLTAuMTQxMDc2LDAuMDI0NiAtMC4wNjk0MiwwLjAyMjQgLTAuMTIwOTIzLDAuMDYyNyAtMC4wNTE1LDAuMDQwMyAtMC4wODA2MSwwLjA5NjMgLTAuMDI5MTEsMC4wNTM3IC0wLjAyMjM5LDAuMTIwOTIgMC4wMDIyLDAuMDIwMiAtMC4wNDcwMywwLjA0NyAtMC4wNDcwMywwLjAyNDYgLTAuMTE0MjA1LDAuMDQ0OCAtMC4wNjQ5NCwwLjAyMDIgLTAuMTI5ODgsMC4wMzE0IC0wLjA2MjcsMC4wMTEyIC0wLjA4OTU3LDAuMDA0IGwgLTAuMDMxMzUsLTAuMDg3MyBxIDAuMDUxNSwtMC4xMTE5NyAwLjE1Njc1MiwtMC4yMTQ5NyAwLjEwNTI0NywtMC4xMDMwMSAwLjIzOTYwNiwtMC4xODEzOSAwLjEzNjU5OCwtMC4wNzg0IDAuMjg2NjMyLC0wLjEyNTQgMC4xNTIyNzMsLTAuMDQ3IDAuMjkzMzUsLTAuMDQ3IDAuMjQ2MzI0LDAgMC4zNzg0NDQsMC4xMjk4OCAwLjEzNDM1OCwwLjEyNzY0IDAuMTM0MzU4LDAuMzU4MjkgdiAxLjI2Mjk3IHEgMCwwLjA5NCAwLjAyNDYzLDAuMTM0MzYgMC4wMjQ2MywwLjA0MDMgMC4wNjQ5NCwwLjA0MDMgMC4wMzEzNSwwIDAuMDgwNjIsLTAuMDExMiAwLjA0OTI2LC0wLjAxMTIgMC4xMzg4MzgsLTAuMDQ5MyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzNzIiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA3Mi44NTQzNiwxOTkuOTE5NzkgcSAtMC4xMDMwMDgsMC4wNjk0IC0wLjE4MzYyNCwwLjExODY5IC0wLjA3ODM4LDAuMDQ3IC0wLjEzODgzNywwLjA3NjEgLTAuMDU4MjIsMC4wMzE0IC0wLjEwMDc2OSwwLjA0NDggLTAuMDQyNTUsMC4wMTU3IC0wLjA3MzksMC4wMTU3IC0wLjA3MzksMCAtMC4xMjA5MjMsLTAuMTAwNzYgLTAuMDQ3MDMsLTAuMTAwNzcgLTAuMDYyNywtMC4zNDQ4NiAtMC4wODUwOSwwLjEwMzAxIC0wLjE3MDE4OCwwLjE4NTg2IC0wLjA4Mjg1LDAuMDgyOSAtMC4xNzI0MjcsMC4xNDEwOCAtMC4wODczMywwLjA1NiAtMC4xODU4NjIsMC4wODczIC0wLjA5ODUzLDAuMDMxNCAtMC4yMTI3MzUsMC4wMzE0IC0wLjEyNTQwMiwwIC0wLjI1NzUyMSwtMC4wNzE3IC0wLjEzMjExOSwtMC4wNzM5IC0wLjI0NDA4NSwtMC4yMTA1IC0wLjEwOTcyNiwtMC4xMzY2IC0wLjE4MTM4NCwtMC4zMzM2NiAtMC4wNjk0MiwtMC4xOTcwNiAtMC4wNjk0MiwtMC40NDU2MiAwLC0wLjEyNzY0IDAuMDMzNTksLTAuMjY0MjQgMC4wMzU4MywtMC4xMzY2IDAuMTAwNzY5LC0wLjI2NDI0IDAuMDY0OTQsLTAuMTI3NjQgMC4xNTg5OTEsLTAuMjQxODQgMC4wOTQwNSwtMC4xMTQyMSAwLjIxMDQ5NSwtMC4xOTkzIDAuMTE2NDQ0LC0wLjA4NzMgMC4yNTUyODIsLTAuMTM2NiAwLjEzODgzNywtMC4wNDkzIDAuMjk1NTg5LC0wLjA0OTMgMC4xMDUyNDgsMCAwLjIwODI1NiwwLjAyNjkgMC4xMDUyNDgsMC4wMjQ2IDAuMjI2MTcxLDAuMTE0MiB2IC0wLjg0NDIyIHEgMCwtMC4xMjMxNiAtMC4wMDY3LC0wLjE5NDgyIC0wLjAwNjcsLTAuMDczOSAtMC4wMzgwNywtMC4xMTE5NiAtMC4wMzEzNSwtMC4wNDAzIC0wLjA5NjI5LC0wLjA1MzggLTAuMDY0OTQsLTAuMDE1NyAtMC4xODM2MjQsLTAuMDI0NiB2IC0wLjA4NzMgcSAwLjE4MzYyNCwtMC4wMjQ2IDAuMzI5MTc5LC0wLjA2NDkgMC4xNDU1NTUsLTAuMDQyNiAwLjI2MiwtMC4wODA2IGwgMC4wNjk0MiwwLjA2NzIgdiAyLjgzNDk3IHEgMCwwLjA3ODQgMC4wMDIyLDAuMTM0MzYgMC4wMDQ1LDAuMDU2IDAuMDExMiwwLjA5NCAwLjAwNjcsMC4wMzgxIDAuMDE1NjgsMC4wNjI3IDAuMDA5LDAuMDI0NiAwLjAyMjM5LDAuMDQwMyAwLjAyMDE1LDAuMDI0NiAwLjA3NjE0LDAuMDE1NyAwLjA1ODIyLC0wLjAxMTIgMC4xOTI1ODEsLTAuMDYyNyB6IG0gLTAuNjg1MjI5LC0wLjM5NjM2IHYgLTEuMDUwMjMgcSAtMC4wNzM5LC0wLjEyNzY0IC0wLjIwODI1NiwtMC4xOTcwNiAtMC4xMzQzNTksLTAuMDcxNyAtMC4yOTU1OSwtMC4wNzE3IC0wLjE0MzMxNiwwIC0wLjI2MTk5OSwwLjA1MzcgLTAuMTE4Njg0LDAuMDUxNSAtMC4yMDYwMTcsMC4xNTY3NSAtMC4wODUwOSwwLjEwNTI1IC0wLjEzNDM1OSwwLjI2MiAtMC4wNDcwMywwLjE1Njc2IC0wLjA0NzAzLDAuMzY3MjUgMCwwLjE5MDM0IDAuMDUzNzQsMC4zNDcxIDAuMDU1OTgsMC4xNTQ1MSAwLjE0MTA3NywwLjI2NDIzIDAuMDg1MDksMC4xMDk3MyAwLjE4NTg2MywwLjE3MDE5IDAuMTAzMDA4LDAuMDU4MiAwLjE5NDgyLDAuMDU4MiAwLjA3NjE0LDAgMC4xNTAwMzQsLTAuMDMxNCAwLjA3MzksLTAuMDMxNCAwLjE0NTU1NSwtMC4wODA2IDAuMDcxNjYsLTAuMDUxNSAwLjE0MTA3NywtMC4xMTY0NSAwLjA3MTY2LC0wLjA2NDkgMC4xNDEwNzcsLTAuMTMyMTIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzc0IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzUuMjM2OTg3LDE5OS45MTk3OSBxIC0wLjEwMzAwOCwwLjA2OTQgLTAuMTgzNjIzLDAuMTE4NjkgLTAuMDc4MzgsMC4wNDcgLTAuMTM4ODM3LDAuMDc2MSAtMC4wNTgyMiwwLjAzMTQgLTAuMTAwNzY5LDAuMDQ0OCAtMC4wNDI1NSwwLjAxNTcgLTAuMDczOSwwLjAxNTcgLTAuMDczOSwwIC0wLjEyMDkyMywtMC4xMDA3NiAtMC4wNDcwMywtMC4xMDA3NyAtMC4wNjI3LC0wLjM0NDg2IC0wLjA4NTA5LDAuMTAzMDEgLTAuMTcwMTg4LDAuMTg1ODYgLTAuMDgyODUsMC4wODI5IC0wLjE3MjQyNywwLjE0MTA4IC0wLjA4NzMzLDAuMDU2IC0wLjE4NTg2MywwLjA4NzMgLTAuMDk4NTMsMC4wMzE0IC0wLjIxMjczNSwwLjAzMTQgLTAuMTI1NDAxLDAgLTAuMjU3NTIxLC0wLjA3MTcgLTAuMTMyMTE5LC0wLjA3MzkgLTAuMjQ0MDg1LC0wLjIxMDUgLTAuMTA5NzI2LC0wLjEzNjYgLTAuMTgxMzg0LC0wLjMzMzY2IC0wLjA2OTQyLC0wLjE5NzA2IC0wLjA2OTQyLC0wLjQ0NTYyIDAsLTAuMTI3NjQgMC4wMzM1OSwtMC4yNjQyNCAwLjAzNTgzLC0wLjEzNjYgMC4xMDA3NjksLTAuMjY0MjQgMC4wNjQ5NCwtMC4xMjc2NCAwLjE1ODk5MSwtMC4yNDE4NCAwLjA5NDA1LC0wLjExNDIxIDAuMjEwNDk2LC0wLjE5OTMgMC4xMTY0NDQsLTAuMDg3MyAwLjI1NTI4MSwtMC4xMzY2IDAuMTM4ODM4LC0wLjA0OTMgMC4yOTU1ODksLTAuMDQ5MyAwLjEwNTI0OCwwIDAuMjA4MjU2LDAuMDI2OSAwLjEwNTI0OCwwLjAyNDYgMC4yMjYxNzEsMC4xMTQyIHYgLTAuODQ0MjIgcSAwLC0wLjEyMzE2IC0wLjAwNjcsLTAuMTk0ODIgLTAuMDA2NywtMC4wNzM5IC0wLjAzODA3LC0wLjExMTk2IC0wLjAzMTM1LC0wLjA0MDMgLTAuMDk2MjksLTAuMDUzOCAtMC4wNjQ5NCwtMC4wMTU3IC0wLjE4MzYyMywtMC4wMjQ2IHYgLTAuMDg3MyBxIDAuMTgzNjIzLC0wLjAyNDYgMC4zMjkxNzksLTAuMDY0OSAwLjE0NTU1NSwtMC4wNDI2IDAuMjYxOTk5LC0wLjA4MDYgbCAwLjA2OTQyLDAuMDY3MiB2IDIuODM0OTcgcSAwLDAuMDc4NCAwLjAwMjIsMC4xMzQzNiAwLjAwNDUsMC4wNTYgMC4wMTEyLDAuMDk0IDAuMDA2NywwLjAzODEgMC4wMTU2OCwwLjA2MjcgMC4wMDksMC4wMjQ2IDAuMDIyMzksMC4wNDAzIDAuMDIwMTUsMC4wMjQ2IDAuMDc2MTQsMC4wMTU3IDAuMDU4MjIsLTAuMDExMiAwLjE5MjU4LC0wLjA2MjcgeiBtIC0wLjY4NTIyOSwtMC4zOTYzNiB2IC0xLjA1MDIzIHEgLTAuMDczOSwtMC4xMjc2NCAtMC4yMDgyNTYsLTAuMTk3MDYgLTAuMTM0MzU5LC0wLjA3MTcgLTAuMjk1NTg5LC0wLjA3MTcgLTAuMTQzMzE2LDAgLTAuMjYyLDAuMDUzNyAtMC4xMTg2ODMsMC4wNTE1IC0wLjIwNjAxNiwwLjE1Njc1IC0wLjA4NTA5LDAuMTA1MjUgLTAuMTM0MzU5LDAuMjYyIC0wLjA0NzAzLDAuMTU2NzYgLTAuMDQ3MDMsMC4zNjcyNSAwLDAuMTkwMzQgMC4wNTM3NCwwLjM0NzEgMC4wNTU5OCwwLjE1NDUxIDAuMTQxMDc2LDAuMjY0MjMgMC4wODUwOSwwLjEwOTczIDAuMTg1ODYzLDAuMTcwMTkgMC4xMDMwMDksMC4wNTgyIDAuMTk0ODIxLDAuMDU4MiAwLjA3NjE0LDAgMC4xNTAwMzMsLTAuMDMxNCAwLjA3MzksLTAuMDMxNCAwLjE0NTU1NiwtMC4wODA2IDAuMDcxNjYsLTAuMDUxNSAwLjE0MTA3NiwtMC4xMTY0NSAwLjA3MTY2LC0wLjA2NDkgMC4xNDEwNzcsLTAuMTMyMTIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzc2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzYuOTkwMzY4LDE5OC4wNDEwMSBxIDAuMDIwMTUsMC4wMTM0IDAuMDE3OTIsMC4wNzg0IDAsMC4wNjQ5IC0wLjAxNzkyLDAuMTUwMDMgLTAuMDE1NjgsMC4wODUxIC0wLjA0MjU1LDAuMTc0NjcgLTAuMDI2ODcsMC4wODk2IC0wLjA1Mzc0LDAuMTUwMDMgaCAtMC4wOTYyOSBxIC0wLjAxMzQ0LC0wLjA4OTYgLTAuMDM4MDcsLTAuMTUyMjcgLTAuMDI0NjMsLTAuMDYyNyAtMC4wNTgyMiwtMC4wOTg1IC0wLjAzMTM1LC0wLjAzODEgLTAuMDcxNjYsLTAuMDUzOCAtMC4wMzgwNywtMC4wMTc5IC0wLjA4MDYyLC0wLjAxNzkgLTAuMDQ5MjYsMCAtMC4xMTY0NDQsMC4wNDI2IC0wLjA2NDk0LDAuMDQwMyAtMC4xMzQzNTksMC4xMjk4OCAtMC4wNjk0MiwwLjA4NzMgLTAuMTM4ODM3LDAuMjI2MTcgLTAuMDY3MTgsMC4xMzY1OSAtMC4xMjA5MjMsMC4zMjY5NCB2IDAuODc3ODEgcSAwLDAuMDMzNiAwLjA4Mjg1LDAuMDY5NCAwLjA4NTA5LDAuMDM1OCAwLjI5NTU4OSwwLjA2NzIgdiAwLjA5NjMgSCA3NS4zODkyNiB2IC0wLjA5NjMgcSAwLjE0Nzc5NSwtMC4wMzM2IDAuMjMwNjQ5LC0wLjA2NDkgMC4wODI4NSwtMC4wMzM2IDAuMDgyODUsLTAuMDcxNyB2IC0xLjMwMzI4IHEgMCwtMC4wNzM5IC0wLjAwNDUsLTAuMTIzMTcgLTAuMDA0NSwtMC4wNTE1IC0wLjAxMTIsLTAuMDgyOCAtMC4wMDY3LC0wLjAzMTQgLTAuMDE3OTIsLTAuMDQ5MyAtMC4wMDksLTAuMDE3OSAtMC4wMTc5MSwtMC4wMjkxIC0wLjAxNTY3LC0wLjAxNTcgLTAuMDM1ODMsLTAuMDI0NiAtMC4wMTc5MiwtMC4wMTEyIC0wLjA0OTI3LC0wLjAxNzkgLTAuMDI5MTEsLTAuMDA3IC0wLjA3MTY2LC0wLjAwOSAtMC4wNDI1NSwtMC4wMDQgLTAuMTA1MjQ4LC0wLjAwOSB2IC0wLjA4OTYgcSAwLjE0NTU1NSwtMC4wMzgxIDAuMjg0MzkzLC0wLjA3NjEgMC4xNDEwNzYsLTAuMDQwMyAwLjI1MzA0MiwtMC4xMDMgbCAwLjA3ODM4LDAuMDc4NCAwLjAyOTExLDAuNTA4MzMgcSAwLjA2MDQ2LC0wLjEyMzE3IDAuMTI5ODgsLTAuMjMwNjUgMC4wNzE2NiwtMC4xMDc0OSAwLjE1MjI3MywtMC4xODU4NyAwLjA4MDYyLC0wLjA4MDYgMC4xNjc5NDksLTAuMTI1NCAwLjA4OTU3LC0wLjA0NDggMC4xODU4NjMsLTAuMDQ0OCAwLjA3MTY2LDAgMC4xNTQ1MTIsMC4wMTc5IDAuMDgyODYsMC4wMTc5IDAuMTY1NzA5LDAuMDY0OSB6IiAvPgogICAgPC9nPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoOTM1LTIiCiAgICAgICBkPSJNIDU2Ljc4MjgwNSwxOTMuNjkyNSBIIDQ1LjQ0MTM5NSIKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuNTI5MTY2NzY7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjEyNzEtMCkiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg5MzUtMi04IgogICAgICAgZD0iTSA1Ni43ODI4MDUsMjk1LjYxMDc1IEggNDUuNDQxMzk1IgogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC41MjkxNjY4MjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjbWFya2VyMTI3MS0wLTYpIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoOTM1LTItOC0yIgogICAgICAgZD0ibSA2Mi41MTU2OTQsMjc3LjkyNDY5IC0xNi4zOTMxMjIsOS44NTA4NCIKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuNTI5MTY2ODI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjEyNzEtMC02LTcpIiAvPgogICAgPGcKICAgICAgIGlkPSJ0ZXh0ODI5LTYtMy02LTktMi0wIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjcuMDU1NTU1MzRweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OidHZW50aXVtIFBsdXMnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0dlbnRpdW0gUGx1cyc7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgYXJpYS1sYWJlbD0iZm4gcG9pbnRlciI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM3OSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDUyLjY4NTgxMywyNjkuNzQzNzkgcSAwLDAuMDI3NiAtMC4wNTE2OCwwLjA4MjcgLTAuMDQ4MjMsMC4wNTUxIC0wLjExNzEzNCwwLjExMzY5IC0wLjA2ODksMC4wNTg2IC0wLjE0NDY5NCwwLjExMDI1IC0wLjA3MjM1LDAuMDUxNyAtMC4xMjQwMjMsMC4wNzU4IC0wLjA4MjY4LC0wLjA3MjMgLTAuMTY4ODEsLTAuMTI0MDMgLTAuMDgyNjgsLTAuMDU1MSAtMC4xNjE5MTksLTAuMDg5NiAtMC4wNzU3OSwtMC4wMzQ0IC0wLjE0NDY5NCwtMC4wNTE3IC0wLjA2NTQ2LC0wLjAxNzIgLTAuMTEwMjQzLC0wLjAxNzIgLTAuMDg5NTcsMCAtMC4xOTI5MjYsMC4wNjIgLTAuMDk5OTEsMC4wNTg2IC0wLjE4OTQ4LDAuMjE3MDQgLTAuMDg2MTMsMC4xNTg0OCAtMC4xNDQ2OTQsMC40MzA2NCAtMC4wNTg1NywwLjI3MjE2IC0wLjA1ODU3LDAuNjk5MzUgdiAwLjI5NjI4IGggMC44ODg4MzUgbCAwLjA5OTkxLDAuMDk5OSBxIC0wLjAzMTAxLDAuMDQ4MiAtMC4wNzkyNCwwLjEwMzM1IC0wLjA0NDc5LDAuMDU1MSAtMC4wOTMwMiwwLjEwMzM1IC0wLjA0NDc5LDAuMDQ4MiAtMC4wODk1NywwLjA4OTYgLTAuMDQ0NzksMC4wMzc5IC0wLjA3NTc5LDAuMDUxNyAtMC4wNzkyNCwtMC4wNDEzIC0wLjIyNzM3NiwtMC4wNzkyIC0wLjE0ODEzOSwtMC4wNDEzIC0wLjQyMzc0NywtMC4wNDEzIHYgMi41MjUyNSBxIDAsMC4wMjA3IDAuMDM0NDUsMC4wNDEzIDAuMDM3OSwwLjAyMDcgMC4xMjQwMjQsMC4wNDQ4IDAuMDg2MTMsMC4wMjA3IDAuMjIwNDg2LDAuMDUxNyAwLjEzNzgwNCwwLjAyNzYgMC4zNDEwNjQsMC4wNjU1IHYgMC4xNDgxNCBoIC0xLjcxOTEwMiB2IC0wLjE0ODE0IHEgMC4yMzc3MTEsLTAuMDQxMyAwLjM1ODI5LC0wLjA5OTkgMC4xMjQwMjMsLTAuMDYyIDAuMTI0MDIzLC0wLjEwMzM1IHYgLTIuNTI1MjUgaCAtMC40NjE2NDMgbCAtMC4wNzIzNSwtMC4wOTY1IDAuMjY4NzE4LC0wLjIzMDgyIGggMC4yNjUyNzIgdiAtMC4xMDY4IHEgMCwtMC40MDY1MiAwLjA1NTEyLC0wLjY4MjEzIDAuMDU1MTIsLTAuMjc5MDUgMC4xNDgxMzksLTAuNDY4NTMgMC4wOTY0NiwtMC4xOTI5MiAwLjIyMDQ4NiwtMC4zMjAzOSAwLjEyNDAyMywtMC4xMzA5MiAwLjI2MTgyNywtMC4yNDExNiAwLjA5MzAyLC0wLjA3NTggMC4yMDMyNjEsLTAuMTM0MzYgMC4xMTAyNDMsLTAuMDU4NiAwLjIxNzA0MSwtMC4wOTk5IDAuMTEwMjQzLC0wLjA0MTMgMC4yMDY3MDUsLTAuMDYyIDAuMDk5OTEsLTAuMDIwNyAwLjE2NTM2NSwtMC4wMjA3IDAuMTA2Nzk4LDAgMC4yMjA0ODYsMC4wNDEzIDAuMTEzNjg4LDAuMDQxMyAwLjIwNjcwNiwwLjA5NjUgMC4wOTY0NiwwLjA1MTcgMC4xNTg0NzQsMC4xMDY3OSAwLjA2MjAxLDAuMDU1MSAwLjA2MjAxLDAuMDg2MSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzODEiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1NC4zNzA0NjUsMjc0Ljc1Mjk2IHYgLTAuMTQ4MTQgcSAwLjI0ODA0NiwtMC4wNjU1IDAuMzY1MTgsLTAuMTEzNjkgMC4xMTcxMzMsLTAuMDQ4MiAwLjExNzEzMywtMC4wOTY1IHYgLTEuODIyNDYgcSAwLC0wLjIxMDE1IC0wLjAyNDEyLC0wLjM0MTA2IC0wLjAyNDEyLC0wLjEzMDkxIC0wLjA3NTc5LC0wLjIwNjcxIC0wLjA1MTY4LC0wLjA3NTggLTAuMTM3ODA0LC0wLjEwMzM1IC0wLjA4MjY4LC0wLjAyNzYgLTAuMjAzMjYsLTAuMDI3NiAtMC4xMDY3OTgsMCAtMC4yMzc3MTIsMC4wNTE3IC0wLjEzMDkxNCwwLjA1MTcgLTAuMjgyNDk4LDAuMTY1MzYgLTAuMTQ4MTM5LDAuMTEzNjkgLTAuMzEzNTAzLDAuMjk5NzMgLTAuMTYxOTIsMC4xODI1OSAtMC4zMjcyODQsMC40NTEzIHYgMS41MzMwNyBxIDAsMC4wNTE3IDAuMTI3NDY4LDAuMTA2OCAwLjEzMDkxNCwwLjA1NTEgMC4zNTQ4NDUsMC4xMDMzNSB2IDAuMTQ4MTQgaCAtMS40ODEzOTEgdiAtMC4xNDgxNCBxIDAuMjI3Mzc2LC0wLjA1ODYgMC4zNTQ4NDUsLTAuMTAzMzUgMC4xMjc0NjgsLTAuMDQ4MiAwLjEyNzQ2OCwtMC4xMDY4IHYgLTIuMDkxMTcgcSAwLC0wLjEzNDM2IC0wLjAxMDMzLC0wLjIxMzYgLTAuMDEwMzMsLTAuMDc5MiAtMC4wNTg1NywtMC4xMjQwMiAtMC4wNDQ3OSwtMC4wNDQ4IC0wLjE0MTI0OSwtMC4wNjU1IC0wLjA5NjQ2LC0wLjAyMDcgLTAuMjcyMTYyLC0wLjA0MTMgdiAtMC4xMzc4IHEgMC4yMzQyNjYsLTAuMDM3OSAwLjQzNDA4MiwtMC4xMDY4IDAuMTk5ODE1LC0wLjA3MjQgMC4zOTI3NDEsLTAuMTY4ODEgbCAwLjEyMDU3OCwwLjEyMDU4IDAuMDM3OSwwLjg1NzgzIHEgMC4xNTE1ODQsLTAuMjMwODMgMC4zMzQxNzQsLTAuNDA5OTcgMC4xODI1OSwtMC4xODI1OSAwLjM2ODYyNiwtMC4zMDY2MSAwLjE4NjAzNSwtMC4xMjc0NyAwLjM1ODI5LC0wLjE5MjkzIDAuMTc1Njk5LC0wLjA2ODkgMC4zMTAwNTgsLTAuMDY4OSAwLjE0ODEzOSwwIDAuMjg1OTQzLDAuMDQ0OCAwLjEzNzgwNCwwLjA0NDggMC4yNDExNTcsMC4xMzc4MSAwLjEwNjc5OCwwLjA5MyAwLjE2ODgwOSwwLjIzNzcxIDAuMDY1NDYsMC4xNDEyNSAwLjA2NTQ2LDAuMzM0MTcgdiAyLjE5NDUzIHEgMCwwLjA0ODIgMC4xMDMzNTMsMC4wOTY1IDAuMTA2Nzk4LDAuMDQ0OCAwLjM3ODk2MSwwLjExMzY5IHYgMC4xNDgxNCB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzODMiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2MC41MTY1MTUsMjczLjI4NTM1IHEgMCwtMC4yOTk3MiAtMC4wNzIzNSwtMC41NTgxMSAtMC4wNjg5LC0wLjI1ODM4IC0wLjE4NjAzNSwtMC40NDc4NiAtMC4xMTcxMzQsLTAuMTg5NDggLTAuMjcyMTYzLC0wLjI5NjI4IC0wLjE1NTAyOSwtMC4xMDY3OSAtMC4zMjAzOTQsLTAuMTA2NzkgLTAuMDYyMDEsMCAtMC4xNjE5MTksMC4wMzc5IC0wLjA5OTkxLDAuMDM3OSAtMC4yMjczNzYsMC4xMjc0NyAtMC4xMjc0NjksMC4wODk2IC0wLjI3MjE2MywwLjI0MTE2IC0wLjE0NDY5NCwwLjE0ODE0IC0wLjI5NjI3OCwwLjM2ODYyIHYgMS4zNjc3IHEgMC4xNTUwMjksMC4xMTcxNCAwLjI4NTk0MywwLjE5MjkzIDAuMTM0MzU4LDAuMDc1OCAwLjI0ODA0NywwLjEyMDU4IDAuMTE3MTMzLDAuMDQxMyAwLjIyMDQ4NiwwLjA1ODYgMC4xMDMzNTMsMC4wMTcyIDAuMTk2MzcsMC4wMTcyIDAuMTg2MDM1LDAgMC4zNDEwNjUsLTAuMDcyNCAwLjE1ODQ3NCwtMC4wNzIzIDAuMjcyMTYyLC0wLjIxMzU5IDAuMTEzNjg4LC0wLjE0MTI1IDAuMTc5MTQ1LC0wLjM1MTQgMC4wNjU0NiwtMC4yMTAxNSAwLjA2NTQ2LC0wLjQ4NTc2IHogbSAwLjQ2NTA4OCwtMC4yMjczOCBxIDAsMC4xOTk4MiAtMC4wNTE2OCwwLjQwOTk3IC0wLjA1MTY4LDAuMjEwMTUgLTAuMTQxMjQ5LDAuNDA5OTcgLTAuMDg5NTcsMC4xOTk4MSAtMC4yMTM1OTYsMC4zNzg5NiAtMC4xMjQwMjMsMC4xNzkxNCAtMC4yNzIxNjIsMC4zMTM1IC0wLjE0NDY5NCwwLjEzMDkxIC0wLjMwNjYxNCwwLjIwNjcxIC0wLjE2MTkxOSwwLjA3OTIgLTAuMzMwNzI5LDAuMDc5MiAtMC4yMDMyNiwwIC0wLjQ1ODE5NywtMC4xMTM2OSAtMC4yNTQ5MzcsLTAuMTEzNjggLTAuNDk5NTM5LC0wLjMyNzI4IHYgMS42Mjk1MyBxIDAsMC4wNTUxIDAuMTI3NDY4LDAuMTEwMjQgMC4xMzA5MTQsMC4wNTUxIDAuNDU0NzUzLDAuMTAzMzYgdiAwLjE0ODE0IGggLTEuNTgxMjk5IHYgLTAuMTQ4MTQgcSAwLjIyNzM3NiwtMC4wNTUxIDAuMzU0ODQ1LC0wLjEwNjggMC4xMjc0NjgsLTAuMDQ4MiAwLjEyNzQ2OCwtMC4xMDY4IHYgLTMuNzQxMzcgcSAwLC0wLjEyNzQ3IC0wLjAxMzc4LC0wLjIxMDE1IC0wLjAxMzc4LC0wLjA4MjcgLTAuMDY1NDYsLTAuMTMwOTIgLTAuMDQ4MjMsLTAuMDUxNyAtMC4xNDQ2OTQsLTAuMDcyMyAtMC4wOTMwMiwtMC4wMjQxIC0wLjI1ODM4MiwtMC4wMzEgdiAtMC4xMzc4IHEgMC4xMTcxMzMsLTAuMDI0MSAwLjIyMzkzMSwtMC4wNTE3IDAuMTA2Nzk4LC0wLjAzMSAwLjIwNjcwNiwtMC4wNjIgMC4wOTk5MSwtMC4wMzQ0IDAuMTk2MzcsLTAuMDcyNCAwLjA5OTkxLC0wLjA0MTMgMC4xOTk4MTYsLTAuMDg5NiBsIDAuMTIwNTc4LDAuMTIwNTggMC4wMzEwMSwwLjY4MjEzIHEgMC4xNzIyNTUsLTAuMjA2NzEgMC4zNDQ1MSwtMC4zNTgyOSAwLjE3NTcsLTAuMTUxNTkgMC4zMzQxNzQsLTAuMjQ4MDUgMC4xNTg0NzQsLTAuMDk5OSAwLjI5MjgzMywtMC4xNDgxNCAwLjEzNzgwNCwtMC4wNDgyIDAuMjM3NzEyLC0wLjA0ODIgMC4yMzQyNjYsMCAwLjQzNDA4MiwwLjExMDI0IDAuMTk5ODE1LDAuMTEwMjQgMC4zNDQ1MDksMC4zMjA0IDAuMTQ0Njk0LDAuMjA2NyAwLjIyMzkzMSwwLjUwNjQyIDAuMDgyNjgsMC4yOTk3MyAwLjA4MjY4LDAuNjc1MjQgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzg1IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjMuOTkyNjE2LDI3My4xODU0NCBxIDAsLTAuMjcyMTYgLTAuMDg5NTcsLTAuNTE2NzYgLTAuMDg5NTcsLTAuMjQ4MDUgLTAuMjMwODIxLC0wLjQzNDA4IC0wLjE0MTI0OSwtMC4xODk0OCAtMC4zMjAzOTQsLTAuMjk5NzMgLTAuMTc5MTQ1LC0wLjExMDI0IC0wLjM1NDg0NSwtMC4xMTAyNCAtMC4yNjE4MjcsMCAtMC40NDA5NzIsMC4wOTk5IC0wLjE3OTE0NSwwLjA5OTkgLTAuMjg5Mzg4LDAuMjc1NiAtMC4xMDY3OTgsMC4xNzIyNiAtMC4xNTUwMjksMC40MDk5NyAtMC4wNDgyMywwLjIzNzcxIC0wLjA0ODIzLDAuNTEzMzIgMCwwLjI3MjE2IDAuMDk2NDYsMC41MjAyMSAwLjA5NjQ2LDAuMjQ0NiAwLjI0MTE1NywwLjQzMDY0IDAuMTQ4MTM5LDAuMTg2MDMgMC4zMjM4MzksMC4yOTYyNyAwLjE3NTcsMC4xMDY4IDAuMzM0MTc0LDAuMTA2OCAwLjI0NDYwMiwwIDAuNDIwMzAyLC0wLjA4OTYgMC4xNzU3LC0wLjA5MyAwLjI4OTM4OCwtMC4yNjE4MyAwLjExMzY4OCwtMC4xNjg4MSAwLjE2ODgwOSwtMC40MDY1MiAwLjA1NTEyLC0wLjIzNzcxIDAuMDU1MTIsLTAuNTMzOTkgeiBtIDAuNTMzOTksLTAuMTAzMzUgcSAwLDAuMjMwODIgLTAuMDU4NTcsMC40NTEzMSAtMC4wNTg1NywwLjIyMDQ4IC0wLjE2MTkxOSwwLjQxNjg1IC0wLjEwMzM1MywwLjE5NjM3IC0wLjI0ODA0NywwLjM2NTE4IC0wLjE0NDY5NCwwLjE2NTM3IC0wLjMyMDM5NCwwLjI4NTk1IC0wLjE3MjI1NSwwLjEyMDU3IC0wLjM2ODYyNSwwLjE4NjAzIC0wLjE5NjM3MSwwLjA2ODkgLTAuNDA2NTIyLDAuMDY4OSAtMC4zMjcyODQsMCAtMC41OTI1NTYsLTAuMTI0MDIgLTAuMjYxODI3LC0wLjEyNDAyIC0wLjQ1MTMwNywtMC4zNDEwNiAtMC4xODYwMzYsLTAuMjE3MDUgLTAuMjg5Mzg4LC0wLjUxNjc3IC0wLjA5OTkxLC0wLjI5OTcyIC0wLjA5OTkxLC0wLjY1MTEyIDAsLTAuMjI3MzggMC4wNTUxMiwtMC40NDc4NiAwLjA1ODU3LC0wLjIyMDQ5IDAuMTU4NDc1LC0wLjQxNjg2IDAuMTAzMzUzLC0wLjE5OTgyIDAuMjQ0NjAxLC0wLjM2NTE4IDAuMTQ0Njk0LC0wLjE2ODgxIDAuMzE2OTQ5LC0wLjI4OTM5IDAuMTc1NywtMC4xMjA1OCAwLjM3NTUxNiwtMC4xODk0OCAwLjIwMzI2LC0wLjA2ODkgMC40MTY4NTYsLTAuMDY4OSAwLjMyMzgzOSwwIDAuNTg1NjY2LDAuMTI0MDIgMC4yNjUyNzMsMC4xMjQwMyAwLjQ1MTMwOCwwLjM0NDUxIDAuMTg5NDgsMC4yMTcwNCAwLjI4OTM4OCwwLjUxNjc3IDAuMTAzMzUzLDAuMjk5NzIgMC4xMDMzNTMsMC42NTExMiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzODciCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2NS4wNTAyNjEsMjc0Ljc1Mjk2IHYgLTAuMTQ4MTQgcSAwLjIzNDI2NiwtMC4wNDgyIDAuMzU4MjksLTAuMTAzMzUgMC4xMjQwMjMsLTAuMDU4NiAwLjEyNDAyMywtMC4xMDY4IHYgLTEuOTQ5OTIgcSAwLC0wLjE3NTcgLTAuMDA2OSwtMC4yODI1IC0wLjAwNjksLTAuMTEwMjQgLTAuMDUxNjgsLTAuMTY4ODEgLTAuMDQ0NzksLTAuMDYyIC0wLjE0NDY5NCwtMC4wODk2IC0wLjA5NjQ2LC0wLjAyNzYgLTAuMjc5MDUyLC0wLjA0NDggdiAtMC4xMzc4IHEgMC4xMDY3OTgsLTAuMDIwNyAwLjIyMzkzMSwtMC4wNDgyIDAuMTIwNTc4LC0wLjAzMSAwLjIzNzcxMSwtMC4wNjU0IDAuMTE3MTM0LC0wLjAzNzkgMC4yMjM5MzIsLTAuMDc5MiAwLjEwNjc5OCwtMC4wNDEzIDAuMTk2MzcsLTAuMDgyNyBoIDAuMTE3MTMzIHYgMi45NDkgcSAwLDAuMDQxMyAwLjExMzY4OCwwLjEwMzM1IDAuMTE3MTM0LDAuMDU4NiAwLjM2ODYyNiwwLjEwNjggdiAwLjE0ODE0IHogbSAxLjEwMjQzLC00LjM0NDI3IHEgMCwwLjA5NjUgLTAuMDMxMDEsMC4xODI1OSAtMC4wMzEwMSwwLjA4NjEgLTAuMDg2MTMsMC4xNTE1OSAtMC4wNTE2OCwwLjA2MiAtMC4xMjQwMjQsMC4wOTk5IC0wLjA3MjM1LDAuMDM3OSAtMC4xNTg0NzQsMC4wMzc5IC0wLjE1NTAyOSwwIC0wLjIyMzkzMSwtMC4wODYxIC0wLjA2NTQ2LC0wLjA4NjEgLTAuMDY1NDYsLTAuMjQ0NjEgMCwtMC4wOTY1IDAuMDMxMDEsLTAuMTgyNTkgMC4wMzEwMSwtMC4wODYxIDAuMDg2MTMsLTAuMTQ4MTQgMC4wNTUxMiwtMC4wNjU0IDAuMTI0MDI0LC0wLjA5OTkgMC4wNzIzNSwtMC4wMzc5IDAuMTU1MDI5LC0wLjAzNzkgMC4yOTI4MzMsMCAwLjI5MjgzMywwLjMyNzI4IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM4OSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY5LjAzMjc5MSwyNzQuNzUyOTYgdiAtMC4xNDgxNCBxIDAuMjQ4MDQ3LC0wLjA2NTUgMC4zNjUxOCwtMC4xMTM2OSAwLjExNzEzMywtMC4wNDgyIDAuMTE3MTMzLC0wLjA5NjUgdiAtMS44MjI0NiBxIDAsLTAuMjEwMTUgLTAuMDI0MTEsLTAuMzQxMDYgLTAuMDI0MTIsLTAuMTMwOTEgLTAuMDc1NzksLTAuMjA2NzEgLTAuMDUxNjgsLTAuMDc1OCAtMC4xMzc4MDMsLTAuMTAzMzUgLTAuMDgyNjgsLTAuMDI3NiAtMC4yMDMyNjEsLTAuMDI3NiAtMC4xMDY3OTgsMCAtMC4yMzc3MTIsMC4wNTE3IC0wLjEzMDkxMywwLjA1MTcgLTAuMjgyNDk3LDAuMTY1MzYgLTAuMTQ4MTQsMC4xMTM2OSAtMC4zMTM1MDQsMC4yOTk3MyAtMC4xNjE5MiwwLjE4MjU5IC0wLjMyNzI4NCwwLjQ1MTMgdiAxLjUzMzA3IHEgMCwwLjA1MTcgMC4xMjc0NjgsMC4xMDY4IDAuMTMwOTE0LDAuMDU1MSAwLjM1NDg0NSwwLjEwMzM1IHYgMC4xNDgxNCBoIC0xLjQ4MTM5MSB2IC0wLjE0ODE0IHEgMC4yMjczNzYsLTAuMDU4NiAwLjM1NDg0NSwtMC4xMDMzNSAwLjEyNzQ2OSwtMC4wNDgyIDAuMTI3NDY5LC0wLjEwNjggdiAtMi4wOTExNyBxIDAsLTAuMTM0MzYgLTAuMDEwMzQsLTAuMjEzNiAtMC4wMTAzNCwtMC4wNzkyIC0wLjA1ODU3LC0wLjEyNDAyIC0wLjA0NDc5LC0wLjA0NDggLTAuMTQxMjQ5LC0wLjA2NTUgLTAuMDk2NDYsLTAuMDIwNyAtMC4yNzIxNjMsLTAuMDQxMyB2IC0wLjEzNzggcSAwLjIzNDI2NywtMC4wMzc5IDAuNDM0MDgyLC0wLjEwNjggMC4xOTk4MTYsLTAuMDcyNCAwLjM5Mjc0MSwtMC4xNjg4MSBsIDAuMTIwNTc4LDAuMTIwNTggMC4wMzc5LDAuODU3ODMgcSAwLjE1MTU4NSwtMC4yMzA4MyAwLjMzNDE3NSwtMC40MDk5NyAwLjE4MjU5LC0wLjE4MjU5IDAuMzY4NjI1LC0wLjMwNjYxIDAuMTg2MDM1LC0wLjEyNzQ3IDAuMzU4MjksLTAuMTkyOTMgMC4xNzU3LC0wLjA2ODkgMC4zMTAwNTgsLTAuMDY4OSAwLjE0ODE0LDAgMC4yODU5NDMsMC4wNDQ4IDAuMTM3ODA0LDAuMDQ0OCAwLjI0MTE1NywwLjEzNzgxIDAuMTA2Nzk4LDAuMDkzIDAuMTY4ODEsMC4yMzc3MSAwLjA2NTQ2LDAuMTQxMjUgMC4wNjU0NiwwLjMzNDE3IHYgMi4xOTQ1MyBxIDAsMC4wNDgyIDAuMTAzMzUyLDAuMDk2NSAwLjEwNjc5OCwwLjA0NDggMC4zNzg5NjEsMC4xMTM2OSB2IDAuMTQ4MTQgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzkxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzIuOTUzMzA4LDI3NC4zNDk4OCBxIC0wLjE2ODgwOSwwLjEyNDAzIC0wLjMzNDE3NCwwLjIyMDQ5IC0wLjE2NTM2NCwwLjA5MyAtMC4zMTY5NDksMC4xNTg0NyAtMC4xNDgxMzksMC4wNjIgLTAuMjc1NjA3LDAuMDkzIC0wLjEyNzQ2OSwwLjAzNDQgLTAuMjE3MDQxLDAuMDM0NCAtMC4xMjA1NzksMCAtMC4yMzA4MjIsLTAuMDQ0OCAtMC4xMDY3OTgsLTAuMDQ0OCAtMC4xODk0OCwtMC4xNDQ3IC0wLjA4MjY4LC0wLjEwMzM1IC0wLjEzMDkxMywtMC4yNjg3MSAtMC4wNDgyMywtMC4xNjUzNyAtMC4wNDgyMywtMC40MDY1MyB2IC0yLjExNTI4IGggLTAuNDQ0NDE3IGwgLTAuMDcyMzUsLTAuMDk2NSAwLjI2ODcxNywtMC4yMzA4MiBoIDAuMjQ4MDQ3IHYgLTAuODQ3NDkgbCAwLjQwOTk2NywtMC4zNTgyOSAwLjEwNjc5OCwwLjA4NjEgdiAxLjExOTY1IGggMS4xMjY1NDYgbCAwLjA5OTkxLDAuMDk5OSBxIC0wLjAzMTAxLDAuMDQ4MiAtMC4wNzkyNCwwLjEwMzM1IC0wLjA0NDc5LDAuMDU1MSAtMC4wOTMwMiwwLjEwMzM1IC0wLjA0ODIzLDAuMDQ4MiAtMC4wOTY0NiwwLjA4OTYgLTAuMDQ0NzksMC4wMzc5IC0wLjA3OTI0LDAuMDUxNyAtMC4wODI2OCwtMC4wNDEzIC0wLjI1MTQ5MiwtMC4wNzkyIC0wLjE2ODgxLC0wLjA0MTMgLTAuNDQ3ODYzLC0wLjA0MTMgaCAtMC4xNzkxNDQgdiAxLjgxOTAxIHEgMCwwLjIwNjcgMC4wMTcyMiwwLjM0NDUxIDAuMDIwNjcsMC4xMzc4IDAuMDY1NDYsMC4yMjA0OCAwLjA0NDc5LDAuMDc5MiAwLjExMzY4OCwwLjExMzY5IDAuMDcyMzUsMC4wMzQ0IDAuMTc1NywwLjAzNDQgMC4xMjA1NzgsMCAwLjMwMzE2OCwtMC4wNDgyIDAuMTgyNTksLTAuMDQ4MiAwLjQ1MTMwOCwtMC4xODYwNCB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDEzOTMiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA3NC43NTg1NCwyNzEuODA3NCBxIC0wLjE3OTE0NSwwIC0wLjMzMDczLDAuMDY4OSAtMC4xNDgxMzksMC4wNjg5IC0wLjI2NTI3MiwwLjE5NjM3IC0wLjExMzY4OCwwLjEyNDAyIC0wLjE5MjkyNSwwLjI5OTcyIC0wLjA3NTc5LDAuMTcyMjUgLTAuMTA2Nzk4LDAuMzgyNCBoIDEuNDc0NTAxIHEgMC4wNzkyNCwwIDAuMTAzMzUyLC0wLjAyNDEgMC4wMjc1NiwtMC4wMjc2IDAuMDI3NTYsLTAuMDk5OSAwLC0wLjA5MyAtMC4wMjc1NiwtMC4yMzA4MiAtMC4wMjQxMiwtMC4xNDEyNSAtMC4xMDMzNTIsLTAuMjcyMTYgLTAuMDc1NzksLTAuMTM0MzYgLTAuMjE3MDQxLC0wLjIyNzM4IC0wLjEzNzgwNCwtMC4wOTMgLTAuMzYxNzM1LC0wLjA5MyB6IG0gMS4yNzQ2ODUsMS4wMjY2NCBxIC0wLjA2MjAxLDAuMDY4OSAtMC4xNjUzNjUsMC4xMjc0NyAtMC4xMDMzNTMsMC4wNTg2IC0wLjIxMzU5NiwwLjEwMzM1IGggLTEuODEyMTIgcSAwLjAwMzQsMC4yNjg3MiAwLjA3MjM1LDAuNTEzMzIgMC4wNzIzNSwwLjI0MTE2IDAuMjAzMjYxLDAuNDI3MTkgMC4xMzQzNTksMC4xODI1OSAwLjMyMDM5NCwwLjI5Mjg0IDAuMTg5NDgsMC4xMTAyNCAwLjQyMzc0NiwwLjExMDI0IDAuMTA2Nzk4LDAgMC4yMDY3MDYsLTAuMDEzOCAwLjEwMzM1MywtMC4wMTM4IDAuMjIwNDg2LC0wLjA2MiAwLjExNzEzNCwtMC4wNDgyIDAuMjU4MzgyLC0wLjE0MTI1IDAuMTQ0Njk0LC0wLjA5MyAwLjMzNzYyLC0wLjI1MTQ5IDAuMDQ0NzksMC4wMjQxIDAuMDc1NzksMC4wNjg5IDAuMDM0NDUsMC4wNDQ4IDAuMDUxNjgsMC4wNzIzIC0wLjIzMDgyMSwwLjI1MTQ5IC0wLjQwNjUyMSwwLjQwNjUyIC0wLjE3MjI1NSwwLjE1MTU4IC0wLjMyNzI4NCwwLjIzNDI2IC0wLjE1MTU4NCwwLjA4MjcgLTAuMzAzMTY4LDAuMTA2OCAtMC4xNDgxNCwwLjAyNzYgLTAuMzIzODM5LDAuMDI3NiAtMC4yNjUyNzMsMCAtMC41MDY0MjksLTAuMTEzNjkgLTAuMjM3NzEyLC0wLjExMzY4IC0wLjQyMDMwMiwtMC4zMjAzOSAtMC4xODI1OSwtMC4yMTAxNSAtMC4yOTI4MzMsLTAuNTAyOTggLTAuMTA2Nzk4LC0wLjI5NjI4IC0wLjEwNjc5OCwtMC42NjE0NiAwLC0wLjIzMDgyIDAuMDUxNjgsLTAuNDU0NzUgMC4wNTE2OCwtMC4yMjM5MyAwLjE0ODEzOSwtMC40MjM3NSAwLjA5OTkxLC0wLjE5OTgyIDAuMjQxMTU3LC0wLjM2ODYzIDAuMTQxMjQ5LC0wLjE2ODgxIDAuMzIwMzk0LC0wLjI5MjgzIDAuMDc1NzksLTAuMDUxNyAwLjE2ODgxLC0wLjA5OTkgMC4wOTY0NiwtMC4wNTE3IDAuMTk5ODE1LC0wLjA4OTYgMC4xMDMzNTMsLTAuMDM3OSAwLjIwMzI2MSwtMC4wNTg2IDAuMTAzMzUzLC0wLjAyNDEgMC4xOTYzNywtMC4wMjQxIDAuMjIzOTMxLDAgMC4zOTk2MzEsMC4wNjIgMC4xNzU3LDAuMDYyIDAuMzA2NjE0LDAuMTY4ODEgMC4xMzA5MTMsMC4xMDMzNSAwLjIyMDQ4NiwwLjI0NDYgMC4wODk1NywwLjEzNzgxIDAuMTQ0Njk0LDAuMjkyODMgMC4wNTg1NywwLjE1NTAzIDAuMDgyNjgsMC4zMTY5NSAwLjAyNDEyLDAuMTU4NDggMC4wMjQxMiwwLjMwMzE3IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTM5NSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDc4Ljk2ODQ0NSwyNzEuNTczMTQgcSAwLjAzMTAxLDAuMDIwNyAwLjAyNzU2LDAuMTIwNTggMCwwLjA5OTkgLTAuMDI3NTYsMC4yMzA4MiAtMC4wMjQxMiwwLjEzMDkxIC0wLjA2NTQ2LDAuMjY4NzEgLTAuMDQxMzQsMC4xMzc4MSAtMC4wODI2OCwwLjIzMDgzIGggLTAuMTQ4MTM5IHEgLTAuMDIwNjcsLTAuMTM3ODEgLTAuMDU4NTcsLTAuMjM0MjcgLTAuMDM3OSwtMC4wOTY1IC0wLjA4OTU3LC0wLjE1MTU4IC0wLjA0ODIzLC0wLjA1ODYgLTAuMTEwMjQzLC0wLjA4MjcgLTAuMDU4NTcsLTAuMDI3NiAtMC4xMjQwMjQsLTAuMDI3NiAtMC4wNzU3OSwwIC0wLjE3OTE0NSwwLjA2NTUgLTAuMDk5OTEsMC4wNjIgLTAuMjA2NzA2LDAuMTk5ODEgLTAuMTA2Nzk3LDAuMTM0MzYgLTAuMjEzNTk1LDAuMzQ3OTYgLTAuMTAzMzUzLDAuMjEwMTUgLTAuMTg2MDM2LDAuNTAyOTggdiAxLjM1MDQ4IHEgMCwwLjA1MTcgMC4xMjc0NjksMC4xMDY4IDAuMTMwOTE0LDAuMDU1MSAwLjQ1NDc1MywwLjEwMzM1IHYgMC4xNDgxNCBoIC0xLjU4MTI5OSB2IC0wLjE0ODE0IHEgMC4yMjczNzYsLTAuMDUxNyAwLjM1NDg0NSwtMC4wOTk5IDAuMTI3NDY4LC0wLjA1MTcgMC4xMjc0NjgsLTAuMTEwMjQgdiAtMi4wMDUwNSBxIDAsLTAuMTEzNjggLTAuMDA2OSwtMC4xODk0OCAtMC4wMDY5LC0wLjA3OTIgLTAuMDE3MjMsLTAuMTI3NDYgLTAuMDEwMzMsLTAuMDQ4MiAtMC4wMjc1NiwtMC4wNzU4IC0wLjAxMzc4LC0wLjAyNzYgLTAuMDI3NTYsLTAuMDQ0OCAtMC4wMjQxMiwtMC4wMjQxIC0wLjA1NTEyLC0wLjAzNzkgLTAuMDI3NTYsLTAuMDE3MiAtMC4wNzU3OSwtMC4wMjc2IC0wLjA0NDc5LC0wLjAxMDMgLTAuMTEwMjQzLC0wLjAxMzggLTAuMDY1NDYsLTAuMDA3IC0wLjE2MTkxOSwtMC4wMTM4IHYgLTAuMTM3OCBxIDAuMjIzOTMxLC0wLjA1ODYgMC40Mzc1MjcsLTAuMTE3MTQgMC4yMTcwNDEsLTAuMDYyIDAuMzg5Mjk2LC0wLjE1ODQ3IGwgMC4xMjA1NzgsMC4xMjA1OCAwLjA0NDc5LDAuNzgyMDMgcSAwLjA5MzAyLC0wLjE4OTQ4IDAuMTk5ODE2LC0wLjM1NDg0IDAuMTEwMjQzLC0wLjE2NTM3IDAuMjM0MjY2LC0wLjI4NTk0IDAuMTI0MDI0LC0wLjEyNDAzIDAuMjU4MzgyLC0wLjE5MjkzIDAuMTM3ODA0LC0wLjA2ODkgMC4yODU5NDMsLTAuMDY4OSAwLjExMDI0MywwIDAuMjM3NzEyLDAuMDI3NiAwLjEyNzQ2OCwwLjAyNzYgMC4yNTQ5MzcsMC4wOTk5IHoiIC8+CiAgICA8L2c+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg5MzUtMi04LTItNSIKICAgICAgIGQ9Ik0gNjguMDY1NTA0LDIwOS43MTY2OCBIIDQ2Ljk5OTU0OSIKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuNTI5MTY2ODI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjEyNzEtMC02LTctMykiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg5MzUtMi04LTItNS0yIgogICAgICAgZD0iTSA2Mi4xMjk3NDUsMjUxLjgyNzk4IEggNDYuOTk5NTUiCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjUyOTE2NjgyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIxMjcxLTAtNi03LTMtOSkiIC8+CiAgICA8ZwogICAgICAgaWQ9InRleHQ4MjktNi0zLTYtOS0yLTAtNyIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo3LjA1NTU1NTM0cHg7bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTonR2VudGl1bSBQbHVzJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidHZW50aXVtIFBsdXMnO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGFyaWEtbGFiZWw9ImxvY2FsIHZhcgpwb2ludGVyIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxMzk4IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDUxLjE4MTY4MywyMTYuNjYzMDYgdiAtMC4xNDgxNCBxIDAuMTQ4MTM5LC0wLjAyNDEgMC4yNDgwNDYsLTAuMDQ4MiAwLjA5OTkxLC0wLjAyNzYgMC4xNTg0NzUsLTAuMDUxNyAwLjA1ODU3LC0wLjAyNzYgMC4wODI2OCwtMC4wNTUxIDAuMDI3NTYsLTAuMDI3NiAwLjAyNzU2LC0wLjA1NTEgdiAtNC4xMDY1NiBxIDAsLTAuMTU1MDMgLTAuMDIwNjcsLTAuMjQxMTUgLTAuMDIwNjcsLTAuMDg2MSAtMC4wNzU3OSwtMC4xMjc0NyAtMC4wNTUxMiwtMC4wNDQ4IC0wLjE0ODEzOSwtMC4wNTg2IC0wLjA5MzAyLC0wLjAxNzIgLTAuMjM3NzEyLC0wLjAzNDQgdiAtMC4xMzc4IHEgMC4yNDgwNDcsLTAuMDQ4MiAwLjQ1NDc1MywtMC4xMDY4IDAuMjA2NzA2LC0wLjA1ODYgMC40MjAzMDIsLTAuMTY4ODEgbCAwLjEyNDAyMywwLjExNzEzIHYgNC44NjQ0OCBxIDAsMC4wNTE3IDAuMTE3MTMzLDAuMTA2NzkgMC4xMTcxMzQsMC4wNTUxIDAuMzk5NjMxLDAuMTAzMzYgdiAwLjE0ODE0IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQwMCIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1NS42MjkzMDEsMjE1LjA5NTU0IHEgMCwtMC4yNzIxNyAtMC4wODk1NywtMC41MTY3NyAtMC4wODk1NywtMC4yNDgwNCAtMC4yMzA4MjEsLTAuNDM0MDggLTAuMTQxMjQ5LC0wLjE4OTQ4IC0wLjMyMDM5NCwtMC4yOTk3MiAtMC4xNzkxNDUsLTAuMTEwMjUgLTAuMzU0ODQ1LC0wLjExMDI1IC0wLjI2MTgyNywwIC0wLjQ0MDk3MiwwLjA5OTkgLTAuMTc5MTQ1LDAuMDk5OSAtMC4yODkzODgsMC4yNzU2MSAtMC4xMDY3OTgsMC4xNzIyNSAtMC4xNTUwMjksMC40MDk5NyAtMC4wNDgyMywwLjIzNzcxIC0wLjA0ODIzLDAuNTEzMzIgMCwwLjI3MjE2IDAuMDk2NDYsMC41MjAyIDAuMDk2NDYsMC4yNDQ2MSAwLjI0MTE1NywwLjQzMDY0IDAuMTQ4MTM5LDAuMTg2MDQgMC4zMjM4MzksMC4yOTYyOCAwLjE3NTY5OSwwLjEwNjggMC4zMzQxNzQsMC4xMDY4IDAuMjQ0NjAyLDAgMC40MjAzMDEsLTAuMDg5NiAwLjE3NTcsLTAuMDkzIDAuMjg5Mzg4LC0wLjI2MTgzIDAuMTEzNjg5LC0wLjE2ODgxIDAuMTY4ODEsLTAuNDA2NTIgMC4wNTUxMiwtMC4yMzc3MSAwLjA1NTEyLC0wLjUzMzk5IHogbSAwLjUzMzk4OSwtMC4xMDMzNiBxIDAsMC4yMzA4MyAtMC4wNTg1NywwLjQ1MTMxIC0wLjA1ODU3LDAuMjIwNDkgLTAuMTYxOTIsMC40MTY4NiAtMC4xMDMzNTMsMC4xOTYzNyAtMC4yNDgwNDcsMC4zNjUxOCAtMC4xNDQ2OTQsMC4xNjUzNiAtMC4zMjAzOTMsMC4yODU5NCAtMC4xNzIyNTUsMC4xMjA1OCAtMC4zNjg2MjYsMC4xODYwNCAtMC4xOTYzNywwLjA2ODkgLTAuNDA2NTIxLDAuMDY4OSAtMC4zMjcyODQsMCAtMC41OTI1NTYsLTAuMTI0MDMgLTAuMjYxODI4LC0wLjEyNDAyIC0wLjQ1MTMwOCwtMC4zNDEwNiAtMC4xODYwMzUsLTAuMjE3MDQgLTAuMjg5Mzg4LC0wLjUxNjc2IC0wLjA5OTkxLC0wLjI5OTczIC0wLjA5OTkxLC0wLjY1MTEzIDAsLTAuMjI3MzcgMC4wNTUxMiwtMC40NDc4NiAwLjA1ODU3LC0wLjIyMDQ5IDAuMTU4NDc0LC0wLjQxNjg2IDAuMTAzMzUzLC0wLjE5OTgxIDAuMjQ0NjAyLC0wLjM2NTE4IDAuMTQ0Njk0LC0wLjE2ODgxIDAuMzE2OTQ5LC0wLjI4OTM4IDAuMTc1NywtMC4xMjA1OCAwLjM3NTUxNSwtMC4xODk0OCAwLjIwMzI2MSwtMC4wNjg5IDAuNDE2ODU3LC0wLjA2ODkgMC4zMjM4MzksMCAwLjU4NTY2NiwwLjEyNDAzIDAuMjY1MjcyLDAuMTI0MDIgMC40NTEzMDgsMC4zNDQ1MSAwLjE4OTQ4LDAuMjE3MDQgMC4yODkzODgsMC41MTY3NiAwLjEwMzM1MiwwLjI5OTcyIDAuMTAzMzUyLDAuNjUxMTIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDAyIgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDU5LjMzOTY2OCwyMTYuMDA4NDkgcSAtMC4yMjM5MzEsMC4yNjUyNyAtMC4zOTYxODYsMC40MTY4NSAtMC4xNjg4MDksMC4xNDgxNCAtMC4zMTM1MDMsMC4yMjczOCAtMC4xNDQ2OTQsMC4wNzU4IC0wLjI4MjQ5OCwwLjA5MyAtMC4xMzc4MDQsMC4wMjA3IC0wLjI5OTcyMywwLjAyMDcgLTAuMjUxNDkyLDAgLTAuNDkyNjQ5LC0wLjExMDI0IC0wLjIzNzcxMiwtMC4xMTM2OSAtMC40MjM3NDcsLTAuMzIzODQgLTAuMTg2MDM1LC0wLjIxMDE1IC0wLjI5OTcyMywtMC41MTMzMiAtMC4xMTAyNDMsLTAuMzAzMTcgLTAuMTEwMjQzLC0wLjY4NTU4IDAsLTAuMzcyMDcgMC4xMzQzNTksLTAuNjk1OTEgMC4xMzc4MDMsLTAuMzIzODQgMC4zNzIwNywtMC41NjE1NSAwLjIzNzcxMSwtMC4yNDExNSAwLjU1ODEwNSwtMC4zNzg5NiAwLjMyMDM5NCwtMC4xNDEyNSAwLjY5MjQ2NCwtMC4xNDEyNSAwLjExMzY4OSwwIDAuMjMwODIyLDAuMDIwNyAwLjEyMDU3OCwwLjAxNzIgMC4yMjczNzYsMC4wNTUxIDAuMTEwMjQzLDAuMDM0NSAwLjE5OTgxNiwwLjA4NjEgMC4wOTMwMiwwLjA0ODIgMC4xNTE1ODQsMC4xMTAyNSAwLjAwNjksMC4wNDEzIC0wLjAxMDM0LDAuMTE3MTMgLTAuMDE3MjMsMC4wNzU4IC0wLjA0ODIzLDAuMTYxOTIgLTAuMDMxMDEsMC4wODI3IC0wLjA2ODksMC4xNjE5MiAtMC4wMzc5LDAuMDc1OCAtMC4wNjg5LDAuMTI0MDIgbCAtMC4xMjc0NjgsLTAuMDM0NCBxIC0wLjAyNzU2LC0wLjA2MiAtMC4wODk1NywtMC4xMzQzNiAtMC4wNjIwMSwtMC4wNzIzIC0wLjE2MTkxOSwtMC4xMzc4IC0wLjA5NjQ2LC0wLjA2NTUgLTAuMjM0MjY3LC0wLjEwNjggLTAuMTM0MzU4LC0wLjA0NDggLTAuMzEwMDU4LC0wLjA0NDggLTAuMTgyNTksMCAtMC4zNTE0LDAuMDgyNyAtMC4xNjUzNjQsMC4wNzkyIC0wLjI5NjI3OCwwLjI0MTE1IC0wLjEyNzQ2OSwwLjE2MTkyIC0wLjIwNjcwNiwwLjQwMzA4IC0wLjA3NTc5LDAuMjQxMTYgLTAuMDc1NzksMC41NjUgMCwwLjI5MjgzIDAuMDg2MTMsMC41MzM5OCAwLjA4OTU3LDAuMjM3NzIgMC4yMzQyNjcsMC40MDY1MyAwLjE0ODEzOSwwLjE2ODgxIDAuMzM3NjE5LDAuMjYxODIgMC4xOTI5MjYsMC4wODk2IDAuMzk5NjMxLDAuMDg5NiAwLjA5NjQ2LDAgMC4xNzkxNDUsLTAuMDA3IDAuMDgyNjgsLTAuMDEwMyAwLjE3OTE0NSwtMC4wNTUxIDAuMDk5OTEsLTAuMDQ0OCAwLjIyNzM3NywtMC4xMzQzNSAwLjEzMDkxMywtMC4wODk2IDAuMzIzODM5LC0wLjI1NDk0IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQwNCIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2MC43NDUyNjgsMjE2LjMxODU1IHEgMC4yMDY3MDUsMCAwLjQzNzUyNywtMC4xMDMzNiAwLjIzNDI2NiwtMC4xMDY3OSAwLjQ5NjA5MywtMC4zMzQxNyB2IC0wLjg5MjI4IHEgLTAuMjg5Mzg4LDAuMDQ4MiAtMC40Nzg4NjgsMC4wOTMgLTAuMTg2MDM1LDAuMDQ0OCAtMC4zMDY2MTMsMC4wOTMgLTAuMTIwNTc5LDAuMDQ0OCAtMC4xOTI5MjYsMC4wOTY1IC0wLjA3MjM1LDAuMDUxNyAtMC4xMjc0NjgsMC4xMTAyNCAtMC4wODk1NywwLjA5MyAtMC4xNDQ2OTQsMC4yMTM2IC0wLjA1NTEyLDAuMTE3MTMgLTAuMDU1MTIsMC4yNzkwNSAwLDAuMTM3OCAwLjA0MTM0LDAuMjIzOTMgMC4wNDEzNCwwLjA4NjEgMC4wOTk5MSwwLjEzNzggMC4wNTg1NywwLjA0ODIgMC4xMjA1NzksMC4wNjU1IDAuMDY1NDYsMC4wMTcyIDAuMTEwMjQzLDAuMDE3MiB6IG0gMS45Nzc0ODQsMC4wNjIgcSAtMC4yOTI4MzMsMC4yMDMyNiAtMC40ODU3NTgsMC4yOTI4MyAtMC4xODk0OCwwLjA5MyAtMC4yODU5NDMsMC4wOTMgLTAuMTEzNjg4LDAgLTAuMTg5NDgsLTAuMTU4NDggLTAuMDc1NzksLTAuMTU4NDcgLTAuMDgyNjgsLTAuNDM3NTIgLTAuMTU1MDI5LDAuMTU1MDMgLTAuMzEwMDU4LDAuMjY4NzEgLTAuMTU1MDI5LDAuMTEzNjkgLTAuMzAzMTY5LDAuMTg2MDQgLTAuMTQ4MTM5LDAuMDcyNCAtMC4yODI0OTcsMC4xMDY4IC0wLjEzMDkxNCwwLjAzNDUgLTAuMjQxMTU3LDAuMDM0NSAtMC4xMjQwMjMsMCAtMC4yNTQ5MzcsLTAuMDQxMyAtMC4xMzA5MTQsLTAuMDQxMyAtMC4yMzc3MTIsLTAuMTMwOTIgLTAuMTAzMzUzLC0wLjA4OTYgLTAuMTcyMjU0LC0wLjIzMDgyIC0wLjA2ODksLTAuMTQxMjUgLTAuMDY4OSwtMC4zNDEwNiAwLC0wLjI2MTgzIDAuMDg5NTcsLTAuNDM3NTMgMC4wOTMwMiwtMC4xNzU3IDAuMjIwNDg2LC0wLjMwMzE3IDAuMDgyNjgsLTAuMDgyNyAwLjE4NjAzNSwtMC4xNTUwMyAwLjEwNjc5OCwtMC4wNzU4IDAuMjc5MDUzLC0wLjE0NDY5IDAuMTc1NywtMC4wNjg5IDAuNDM3NTI3LC0wLjEzMDkxIDAuMjYxODI3LC0wLjA2MiAwLjY1ODAxMywtMC4xMjA1OCB2IC0wLjQ4NTc2IHEgMCwtMC4xMTcxMyAtMC4wMjc1NiwtMC4yMTcwNCAtMC4wMjc1NiwtMC4xMDMzNiAtMC4wOTMwMiwtMC4xNzU3IC0wLjA2NTQ2LC0wLjA3NTggLTAuMTc5MTQ1LC0wLjExMzY5IC0wLjExMDI0MywtMC4wNDEzIC0wLjI3OTA1MywtMC4wMzc5IC0wLjExMDI0MywwLjAwMyAtMC4yMTcwNDEsMC4wMzc5IC0wLjEwNjc5OCwwLjAzNDQgLTAuMTg2MDM1LDAuMDk2NSAtMC4wNzkyNCwwLjA2MiAtMC4xMjQwMjMsMC4xNDgxNCAtMC4wNDQ3OSwwLjA4MjcgLTAuMDM0NDUsMC4xODYwNCAwLjAwMzQsMC4wMzEgLTAuMDcyMzUsMC4wNzIzIC0wLjA3MjM1LDAuMDM3OSAtMC4xNzU3LDAuMDY4OSAtMC4wOTk5MSwwLjAzMSAtMC4xOTk4MTYsMC4wNDgyIC0wLjA5NjQ2LDAuMDE3MiAtMC4xMzc4MDMsMC4wMDcgbCAtMC4wNDgyMywtMC4xMzQzNiBxIDAuMDc5MjQsLTAuMTcyMjYgMC4yNDExNTcsLTAuMzMwNzMgMC4xNjE5MTksLTAuMTU4NDggMC4zNjg2MjUsLTAuMjc5MDUgMC4yMTAxNTEsLTAuMTIwNTggMC40NDA5NzIsLTAuMTkyOTMgMC4yMzQyNjcsLTAuMDcyNCAwLjQ1MTMwOCwtMC4wNzI0IDAuMzc4OTYsMCAwLjU4MjIyMSwwLjE5OTgyIDAuMjA2NzA2LDAuMTk2MzcgMC4yMDY3MDYsMC41NTEyMSB2IDEuOTQzMDQgcSAwLDAuMTQ0NjkgMC4wMzc5LDAuMjA2NyAwLjAzNzksMC4wNjIgMC4wOTk5MSwwLjA2MiAwLjA0ODIzLDAgMC4xMjQwMjMsLTAuMDE3MiAwLjA3NTc5LC0wLjAxNzIgMC4yMTM1OTYsLTAuMDc1OCB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MDYiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjIuOTc3Njg5LDIxNi42NjMwNiB2IC0wLjE0ODE0IHEgMC4xNDgxMzksLTAuMDI0MSAwLjI0ODA0NywtMC4wNDgyIDAuMDk5OTEsLTAuMDI3NiAwLjE1ODQ3NCwtMC4wNTE3IDAuMDU4NTcsLTAuMDI3NiAwLjA4MjY4LC0wLjA1NTEgMC4wMjc1NiwtMC4wMjc2IDAuMDI3NTYsLTAuMDU1MSB2IC00LjEwNjU2IHEgMCwtMC4xNTUwMyAtMC4wMjA2NywtMC4yNDExNSAtMC4wMjA2NywtMC4wODYxIC0wLjA3NTc5LC0wLjEyNzQ3IC0wLjA1NTEyLC0wLjA0NDggLTAuMTQ4MTM5LC0wLjA1ODYgLTAuMDkzMDIsLTAuMDE3MiAtMC4yMzc3MTEsLTAuMDM0NCB2IC0wLjEzNzggcSAwLjI0ODA0NywtMC4wNDgyIDAuNDU0NzUyLC0wLjEwNjggMC4yMDY3MDYsLTAuMDU4NiAwLjQyMDMwMiwtMC4xNjg4MSBsIDAuMTI0MDIzLDAuMTE3MTMgdiA0Ljg2NDQ4IHEgMCwwLjA1MTcgMC4xMTcxMzQsMC4xMDY3OSAwLjExNzEzMywwLjA1NTEgMC4zOTk2MzEsMC4xMDMzNiB2IDAuMTQ4MTQgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDA4IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY5LjY1MDgzOSwyMTMuNjA3MjYgcSAtMC4xMDMzNTMsMC4wMjQxIC0wLjE2ODgxLDAuMDQ0OCAtMC4wNjU0NiwwLjAyMDcgLTAuMTA2Nzk4LDAuMDQ4MiAtMC4wNDEzNCwwLjAyNDEgLTAuMDY1NDYsMC4wNTg2IC0wLjAyMDY3LDAuMDMxIC0wLjAzNzksMC4wODI3IGwgLTAuOTc0OTYyLDIuNjE4MjcgcSAtMC4wMzEwMSwwLjA3NTggLTAuMDg5NTcsMC4xMzA5MiAtMC4wNTg1NywwLjA1MTcgLTAuMTI3NDY5LDAuMDg2MSAtMC4wNjg5LDAuMDM3OSAtMC4xMzc4MDQsMC4wNTg2IC0wLjA2NTQ2LDAuMDIwNyAtMC4xMTAyNDMsMC4wMzEgbCAtMS4xMzY4ODEsLTIuOTI0ODkgcSAtMC4wMzEwMSwtMC4wOTY1IC0wLjEyMDU3OSwtMC4xNDQ2OSAtMC4wODk1NywtMC4wNTE3IC0wLjI2MTgyNywtMC4wODk2IHYgLTAuMTQ4MTQgaCAxLjMyOTgwNyB2IDAuMTQ4MTQgcSAtMC4xMzQzNTksMC4wMTcyIC0wLjIyMDQ4NiwwLjAzNDQgLTAuMDgyNjgsMC4wMTcyIC0wLjEzMDkxNCwwLjA0NDggLTAuMDQ0NzksMC4wMjQxIC0wLjA1MTY4LDAuMDYyIC0wLjAwNjksMC4wMzc5IDAuMDEzNzgsMC4wOTMgbCAwLjg0NzQ5NCwyLjIwODMxIDAuNzk1ODE3LC0yLjIwODMxIHEgMC4wMTcyMywtMC4wNTE3IDAuMDEwMzQsLTAuMDg2MSAtMC4wMDM0LC0wLjAzNzkgLTAuMDQ0NzksLTAuMDYyIC0wLjA0MTM0LC0wLjAyNzYgLTAuMTIwNTc5LC0wLjA0NDggLTAuMDc1NzksLTAuMDIwNyAtMC4yMDMyNiwtMC4wNDEzIHYgLTAuMTQ4MTQgaCAxLjExMjc2NiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MTAiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzAuOTQyNzQ5LDIxNi4zMTg1NSBxIDAuMjA2NzA1LDAgMC40Mzc1MjcsLTAuMTAzMzYgMC4yMzQyNjYsLTAuMTA2NzkgMC40OTYwOTQsLTAuMzM0MTcgdiAtMC44OTIyOCBxIC0wLjI4OTM4OCwwLjA0ODIgLTAuNDc4ODY5LDAuMDkzIC0wLjE4NjAzNSwwLjA0NDggLTAuMzA2NjEzLDAuMDkzIC0wLjEyMDU3OSwwLjA0NDggLTAuMTkyOTI2LDAuMDk2NSAtMC4wNzIzNSwwLjA1MTcgLTAuMTI3NDY4LDAuMTEwMjQgLTAuMDg5NTcsMC4wOTMgLTAuMTQ0Njk0LDAuMjEzNiAtMC4wNTUxMiwwLjExNzEzIC0wLjA1NTEyLDAuMjc5MDUgMCwwLjEzNzggMC4wNDEzNCwwLjIyMzkzIDAuMDQxMzQsMC4wODYxIDAuMDk5OTEsMC4xMzc4IDAuMDU4NTcsMC4wNDgyIDAuMTIwNTc5LDAuMDY1NSAwLjA2NTQ2LDAuMDE3MiAwLjExMDI0MywwLjAxNzIgeiBtIDEuOTc3NDg0LDAuMDYyIHEgLTAuMjkyODMzLDAuMjAzMjYgLTAuNDg1NzU4LDAuMjkyODMgLTAuMTg5NDgsMC4wOTMgLTAuMjg1OTQzLDAuMDkzIC0wLjExMzY4OCwwIC0wLjE4OTQ4LC0wLjE1ODQ4IC0wLjA3NTc5LC0wLjE1ODQ3IC0wLjA4MjY4LC0wLjQzNzUyIC0wLjE1NTAzLDAuMTU1MDMgLTAuMzEwMDU5LDAuMjY4NzEgLTAuMTU1MDI5LDAuMTEzNjkgLTAuMzAzMTY4LDAuMTg2MDQgLTAuMTQ4MTQsMC4wNzI0IC0wLjI4MjQ5OCwwLjEwNjggLTAuMTMwOTE0LDAuMDM0NSAtMC4yNDExNTcsMC4wMzQ1IC0wLjEyNDAyMywwIC0wLjI1NDkzNywtMC4wNDEzIC0wLjEzMDkxNCwtMC4wNDEzIC0wLjIzNzcxMiwtMC4xMzA5MiAtMC4xMDMzNTIsLTAuMDg5NiAtMC4xNzIyNTQsLTAuMjMwODIgLTAuMDY4OSwtMC4xNDEyNSAtMC4wNjg5LC0wLjM0MTA2IDAsLTAuMjYxODMgMC4wODk1NywtMC40Mzc1MyAwLjA5MzAyLC0wLjE3NTcgMC4yMjA0ODYsLTAuMzAzMTcgMC4wODI2OCwtMC4wODI3IDAuMTg2MDM2LC0wLjE1NTAzIDAuMTA2Nzk3LC0wLjA3NTggMC4yNzkwNTIsLTAuMTQ0NjkgMC4xNzU3LC0wLjA2ODkgMC40Mzc1MjcsLTAuMTMwOTEgMC4yNjE4MjgsLTAuMDYyIDAuNjU4MDE0LC0wLjEyMDU4IHYgLTAuNDg1NzYgcSAwLC0wLjExNzEzIC0wLjAyNzU2LC0wLjIxNzA0IC0wLjAyNzU2LC0wLjEwMzM2IC0wLjA5MzAyLC0wLjE3NTcgLTAuMDY1NDYsLTAuMDc1OCAtMC4xNzkxNDUsLTAuMTEzNjkgLTAuMTEwMjQzLC0wLjA0MTMgLTAuMjc5MDUyLC0wLjAzNzkgLTAuMTEwMjQ0LDAuMDAzIC0wLjIxNzA0MSwwLjAzNzkgLTAuMTA2Nzk4LDAuMDM0NCAtMC4xODYwMzYsMC4wOTY1IC0wLjA3OTI0LDAuMDYyIC0wLjEyNDAyMywwLjE0ODE0IC0wLjA0NDc5LDAuMDgyNyAtMC4wMzQ0NSwwLjE4NjA0IDAuMDAzNCwwLjAzMSAtMC4wNzIzNSwwLjA3MjMgLTAuMDcyMzUsMC4wMzc5IC0wLjE3NTcsMC4wNjg5IC0wLjA5OTkxLDAuMDMxIC0wLjE5OTgxNSwwLjA0ODIgLTAuMDk2NDYsMC4wMTcyIC0wLjEzNzgwNCwwLjAwNyBsIC0wLjA0ODIzLC0wLjEzNDM2IHEgMC4wNzkyNCwtMC4xNzIyNiAwLjI0MTE1NywtMC4zMzA3MyAwLjE2MTkyLC0wLjE1ODQ4IDAuMzY4NjI1LC0wLjI3OTA1IDAuMjEwMTUxLC0wLjEyMDU4IDAuNDQwOTczLC0wLjE5MjkzIDAuMjM0MjY2LC0wLjA3MjQgMC40NTEzMDcsLTAuMDcyNCAwLjM3ODk2MSwwIDAuNTgyMjIxLDAuMTk5ODIgMC4yMDY3MDYsMC4xOTYzNyAwLjIwNjcwNiwwLjU1MTIxIHYgMS45NDMwNCBxIDAsMC4xNDQ2OSAwLjAzNzksMC4yMDY3IDAuMDM3OSwwLjA2MiAwLjA5OTkxLDAuMDYyIDAuMDQ4MjMsMCAwLjEyNDAyMywtMC4wMTcyIDAuMDc1NzksLTAuMDE3MiAwLjIxMzU5NiwtMC4wNzU4IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQxMiIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA3NS42MjExODksMjEzLjQ4MzIzIHEgMC4wMzEsMC4wMjA3IDAuMDI3NTYsMC4xMjA1OCAwLDAuMDk5OSAtMC4wMjc1NiwwLjIzMDgyIC0wLjAyNDEyLDAuMTMwOTIgLTAuMDY1NDYsMC4yNjg3MiAtMC4wNDEzNCwwLjEzNzggLTAuMDgyNjgsMC4yMzA4MiBIIDc1LjMyNDkxIHEgLTAuMDIwNjcsLTAuMTM3OCAtMC4wNTg1NywtMC4yMzQyNyAtMC4wMzc5LC0wLjA5NjUgLTAuMDg5NTcsLTAuMTUxNTggLTAuMDQ4MjMsLTAuMDU4NiAtMC4xMTAyNDMsLTAuMDgyNyAtMC4wNTg1NywtMC4wMjc2IC0wLjEyNDAyMywtMC4wMjc2IC0wLjA3NTc5LDAgLTAuMTc5MTQ1LDAuMDY1NCAtMC4wOTk5MSwwLjA2MiAtMC4yMDY3MDYsMC4xOTk4MiAtMC4xMDY3OTgsMC4xMzQzNiAtMC4yMTM1OTYsMC4zNDc5NSAtMC4xMDMzNTMsMC4yMTAxNiAtMC4xODYwMzUsMC41MDI5OSB2IDEuMzUwNDggcSAwLDAuMDUxNyAwLjEyNzQ2OSwwLjEwNjc5IDAuMTMwOTEzLDAuMDU1MSAwLjQ1NDc1MiwwLjEwMzM2IHYgMC4xNDgxNCBoIC0xLjU4MTI5OSB2IC0wLjE0ODE0IHEgMC4yMjczNzcsLTAuMDUxNyAwLjM1NDg0NSwtMC4wOTk5IDAuMTI3NDY5LC0wLjA1MTcgMC4xMjc0NjksLTAuMTEwMjQgdiAtMi4wMDUwNSBxIDAsLTAuMTEzNjkgLTAuMDA2OSwtMC4xODk0OCAtMC4wMDY5LC0wLjA3OTIgLTAuMDE3MjMsLTAuMTI3NDcgLTAuMDEwMzMsLTAuMDQ4MiAtMC4wMjc1NiwtMC4wNzU4IC0wLjAxMzc4LC0wLjAyNzYgLTAuMDI3NTYsLTAuMDQ0OCAtMC4wMjQxMiwtMC4wMjQxIC0wLjA1NTEyLC0wLjAzNzkgLTAuMDI3NTYsLTAuMDE3MiAtMC4wNzU3OSwtMC4wMjc2IC0wLjA0NDc5LC0wLjAxMDMgLTAuMTEwMjQzLC0wLjAxMzggLTAuMDY1NDYsLTAuMDA3IC0wLjE2MTkyLC0wLjAxMzggdiAtMC4xMzc4MSBxIDAuMjIzOTMyLC0wLjA1ODYgMC40Mzc1MjcsLTAuMTE3MTMgMC4yMTcwNDEsLTAuMDYyIDAuMzg5Mjk2LC0wLjE1ODQ4IGwgMC4xMjA1NzksMC4xMjA1OCAwLjA0NDc5LDAuNzgyMDQgcSAwLjA5MzAyLC0wLjE4OTQ4IDAuMTk5ODE1LC0wLjM1NDg1IDAuMTEwMjQzLC0wLjE2NTM2IDAuMjM0MjY3LC0wLjI4NTk0IDAuMTI0MDIzLC0wLjEyNDAyIDAuMjU4MzgyLC0wLjE5MjkyIDAuMTM3ODA0LC0wLjA2ODkgMC4yODU5NDMsLTAuMDY4OSAwLjExMDI0MywwIDAuMjM3NzEyLDAuMDI3NiAwLjEyNzQ2OCwwLjAyNzYgMC4yNTQ5MzcsMC4wOTk5IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQxNCIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1NS41NzA3MzQsMjIyLjI1MSBxIDAsLTAuMjk5NzIgLTAuMDcyMzUsLTAuNTU4MTEgLTAuMDY4OSwtMC4yNTgzOCAtMC4xODYwMzUsLTAuNDQ3ODYgLTAuMTE3MTMzLC0wLjE4OTQ4IC0wLjI3MjE2MywtMC4yOTYyOCAtMC4xNTUwMjksLTAuMTA2NzkgLTAuMzIwMzk0LC0wLjEwNjc5IC0wLjA2MjAxLDAgLTAuMTYxOTE5LDAuMDM3OSAtMC4wOTk5MSwwLjAzNzkgLTAuMjI3Mzc2LDAuMTI3NDcgLTAuMTI3NDY5LDAuMDg5NiAtMC4yNzIxNjMsMC4yNDExNiAtMC4xNDQ2OTQsMC4xNDgxNCAtMC4yOTYyNzgsMC4zNjg2MiB2IDEuMzY3NzEgcSAwLjE1NTAyOSwwLjExNzEzIDAuMjg1OTQzLDAuMTkyOTIgMC4xMzQzNTksMC4wNzU4IDAuMjQ4MDQ3LDAuMTIwNTggMC4xMTcxMzMsMC4wNDEzIDAuMjIwNDg2LDAuMDU4NiAwLjEwMzM1MywwLjAxNzIgMC4xOTYzNywwLjAxNzIgMC4xODYwMzUsMCAwLjM0MTA2NSwtMC4wNzI0IDAuMTU4NDc0LC0wLjA3MjMgMC4yNzIxNjIsLTAuMjEzNTkgMC4xMTM2ODgsLTAuMTQxMjUgMC4xNzkxNDUsLTAuMzUxNCAwLjA2NTQ2LC0wLjIxMDE1IDAuMDY1NDYsLTAuNDg1NzYgeiBtIDAuNDY1MDg4LC0wLjIyNzM4IHEgMCwwLjE5OTgyIC0wLjA1MTY4LDAuNDA5OTcgLTAuMDUxNjgsMC4yMTAxNSAtMC4xNDEyNDgsMC40MDk5NyAtMC4wODk1NywwLjE5OTgxIC0wLjIxMzU5NiwwLjM3ODk2IC0wLjEyNDAyNCwwLjE3OTE0IC0wLjI3MjE2MywwLjMxMzUgLTAuMTQ0Njk0LDAuMTMwOTEgLTAuMzA2NjEzLDAuMjA2NzEgLTAuMTYxOTIsMC4wNzkyIC0wLjMzMDczLDAuMDc5MiAtMC4yMDMyNiwwIC0wLjQ1ODE5NywtMC4xMTM2OCAtMC4yNTQ5MzcsLTAuMTEzNjkgLTAuNDk5NTM5LC0wLjMyNzI5IHYgMS42Mjk1MyBxIDAsMC4wNTUxIDAuMTI3NDY4LDAuMTEwMjQgMC4xMzA5MTQsMC4wNTUxIDAuNDU0NzUzLDAuMTAzMzYgdiAwLjE0ODE0IGggLTEuNTgxMjk5IHYgLTAuMTQ4MTQgcSAwLjIyNzM3NywtMC4wNTUxIDAuMzU0ODQ1LC0wLjEwNjggMC4xMjc0NjksLTAuMDQ4MiAwLjEyNzQ2OSwtMC4xMDY4IHYgLTMuNzQxMzcgcSAwLC0wLjEyNzQ3IC0wLjAxMzc4LC0wLjIxMDE1IC0wLjAxMzc4LC0wLjA4MjcgLTAuMDY1NDYsLTAuMTMwOTIgLTAuMDQ4MjMsLTAuMDUxNyAtMC4xNDQ2OTQsLTAuMDcyMyAtMC4wOTMwMiwtMC4wMjQxIC0wLjI1ODM4MiwtMC4wMzEgdiAtMC4xMzc4IHEgMC4xMTcxMzQsLTAuMDI0MSAwLjIyMzkzMiwtMC4wNTE3IDAuMTA2Nzk3LC0wLjAzMSAwLjIwNjcwNSwtMC4wNjIgMC4wOTk5MSwtMC4wMzQ0IDAuMTk2MzcxLC0wLjA3MjQgMC4wOTk5MSwtMC4wNDEzIDAuMTk5ODE1LC0wLjA4OTYgbCAwLjEyMDU3OSwwLjEyMDU4IDAuMDMxMDEsMC42ODIxMyBxIDAuMTcyMjU1LC0wLjIwNjcxIDAuMzQ0NTEsLTAuMzU4MjkgMC4xNzU3LC0wLjE1MTU5IDAuMzM0MTc0LC0wLjI0ODA1IDAuMTU4NDc1LC0wLjA5OTkgMC4yOTI4MzMsLTAuMTQ4MTQgMC4xMzc4MDQsLTAuMDQ4MiAwLjIzNzcxMiwtMC4wNDgyIDAuMjM0MjY2LDAgMC40MzQwODIsMC4xMTAyNCAwLjE5OTgxNSwwLjExMDI1IDAuMzQ0NTA5LDAuMzIwNCAwLjE0NDY5NCwwLjIwNjcgMC4yMjM5MzIsMC41MDY0MyAwLjA4MjY4LDAuMjk5NzIgMC4wODI2OCwwLjY3NTIzIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQxNiIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1OS4wNDY4MzUsMjIyLjE1MTA5IHEgMCwtMC4yNzIxNiAtMC4wODk1NywtMC41MTY3NiAtMC4wODk1NywtMC4yNDgwNSAtMC4yMzA4MjEsLTAuNDM0MDggLTAuMTQxMjQ5LC0wLjE4OTQ4IC0wLjMyMDM5NCwtMC4yOTk3MyAtMC4xNzkxNDUsLTAuMTEwMjQgLTAuMzU0ODQ1LC0wLjExMDI0IC0wLjI2MTgyNywwIC0wLjQ0MDk3MiwwLjA5OTkgLTAuMTc5MTQ1LDAuMDk5OSAtMC4yODkzODgsMC4yNzU2MSAtMC4xMDY3OTgsMC4xNzIyNSAtMC4xNTUwMywwLjQwOTk2IC0wLjA0ODIzLDAuMjM3NzEgLTAuMDQ4MjMsMC41MTMzMiAwLDAuMjcyMTYgMC4wOTY0NiwwLjUyMDIxIDAuMDk2NDYsMC4yNDQ2IDAuMjQxMTU2LDAuNDMwNjQgMC4xNDgxMzksMC4xODYwMyAwLjMyMzgzOSwwLjI5NjI4IDAuMTc1NywwLjEwNjc5IDAuMzM0MTc1LDAuMTA2NzkgMC4yNDQ2MDEsMCAwLjQyMDMwMSwtMC4wODk2IDAuMTc1NywtMC4wOTMgMC4yODkzODgsLTAuMjYxODMgMC4xMTM2ODgsLTAuMTY4ODEgMC4xNjg4MSwtMC40MDY1MiAwLjA1NTEyLC0wLjIzNzcxIDAuMDU1MTIsLTAuNTMzOTkgeiBtIDAuNTMzOTksLTAuMTAzMzUgcSAwLDAuMjMwODIgLTAuMDU4NTcsMC40NTEzMSAtMC4wNTg1NywwLjIyMDQ4IC0wLjE2MTkyLDAuNDE2ODUgLTAuMTAzMzUzLDAuMTk2MzcgLTAuMjQ4MDQ3LDAuMzY1MTggLTAuMTQ0Njk0LDAuMTY1MzcgLTAuMzIwMzk0LDAuMjg1OTUgLTAuMTcyMjU0LDAuMTIwNTcgLTAuMzY4NjI1LDAuMTg2MDMgLTAuMTk2MzcsMC4wNjg5IC0wLjQwNjUyMSwwLjA2ODkgLTAuMzI3Mjg0LDAgLTAuNTkyNTU3LC0wLjEyNDAyIC0wLjI2MTgyNywtMC4xMjQwMiAtMC40NTEzMDcsLTAuMzQxMDYgLTAuMTg2MDM1LC0wLjIxNzA1IC0wLjI4OTM4OCwtMC41MTY3NyAtMC4wOTk5MSwtMC4yOTk3MiAtMC4wOTk5MSwtMC42NTExMiAwLC0wLjIyNzM4IDAuMDU1MTIsLTAuNDQ3ODYgMC4wNTg1NywtMC4yMjA0OSAwLjE1ODQ3NCwtMC40MTY4NiAwLjEwMzM1MywtMC4xOTk4MiAwLjI0NDYwMiwtMC4zNjUxOCAwLjE0NDY5NCwtMC4xNjg4MSAwLjMxNjk0OSwtMC4yODkzOSAwLjE3NTcsLTAuMTIwNTggMC4zNzU1MTUsLTAuMTg5NDggMC4yMDMyNjEsLTAuMDY4OSAwLjQxNjg1NywtMC4wNjg5IDAuMzIzODM5LDAgMC41ODU2NjYsMC4xMjQwMiAwLjI2NTI3MiwwLjEyNDAzIDAuNDUxMzA3LDAuMzQ0NTEgMC4xODk0ODEsMC4yMTcwNCAwLjI4OTM4OCwwLjUxNjc3IDAuMTAzMzUzLDAuMjk5NzIgMC4xMDMzNTMsMC42NTExMiB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MTgiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjAuMTA0NDc5LDIyMy43MTg2MSB2IC0wLjE0ODE0IHEgMC4yMzQyNjcsLTAuMDQ4MiAwLjM1ODI5LC0wLjEwMzM1IDAuMTI0MDI0LC0wLjA1ODYgMC4xMjQwMjQsLTAuMTA2OCB2IC0xLjk0OTkyIHEgMCwtMC4xNzU3IC0wLjAwNjksLTAuMjgyNSAtMC4wMDY5LC0wLjExMDI0IC0wLjA1MTY4LC0wLjE2ODgxIC0wLjA0NDc5LC0wLjA2MiAtMC4xNDQ2OTQsLTAuMDg5NiAtMC4wOTY0NiwtMC4wMjc2IC0wLjI3OTA1MywtMC4wNDQ4IHYgLTAuMTM3OCBxIDAuMTA2Nzk4LC0wLjAyMDcgMC4yMjM5MzIsLTAuMDQ4MiAwLjEyMDU3OCwtMC4wMzEgMC4yMzc3MTEsLTAuMDY1NSAwLjExNzEzMywtMC4wMzc5IDAuMjIzOTMxLC0wLjA3OTIgMC4xMDY3OTgsLTAuMDQxMyAwLjE5NjM3MSwtMC4wODI3IGggMC4xMTcxMzMgdiAyLjk0OSBxIDAsMC4wNDEzIDAuMTEzNjg4LDAuMTAzMzUgMC4xMTcxMzMsMC4wNTg2IDAuMzY4NjI1LDAuMTA2OCB2IDAuMTQ4MTQgeiBtIDEuMTAyNDMxLC00LjM0NDI2IHEgMCwwLjA5NjUgLTAuMDMxMDEsMC4xODI1OSAtMC4wMzEwMSwwLjA4NjEgLTAuMDg2MTMsMC4xNTE1OCAtMC4wNTE2OCwwLjA2MiAtMC4xMjQwMjQsMC4wOTk5IC0wLjA3MjM1LDAuMDM3OSAtMC4xNTg0NzQsMC4wMzc5IC0wLjE1NTAyOSwwIC0wLjIyMzkzMSwtMC4wODYxIC0wLjA2NTQ2LC0wLjA4NjEgLTAuMDY1NDYsLTAuMjQ0NjEgMCwtMC4wOTY1IDAuMDMxMDEsLTAuMTgyNTkgMC4wMzEwMSwtMC4wODYxIDAuMDg2MTMsLTAuMTQ4MTMgMC4wNTUxMiwtMC4wNjU1IDAuMTI0MDIzLC0wLjA5OTkgMC4wNzIzNSwtMC4wMzc5IDAuMTU1MDMsLTAuMDM3OSAwLjI5MjgzMywwIDAuMjkyODMzLDAuMzI3MjkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDIwIgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY0LjA4NzAxLDIyMy43MTg2MSB2IC0wLjE0ODE0IHEgMC4yNDgwNDYsLTAuMDY1NSAwLjM2NTE4LC0wLjExMzY5IDAuMTE3MTMzLC0wLjA0ODIgMC4xMTcxMzMsLTAuMDk2NSB2IC0xLjgyMjQ1IHEgMCwtMC4yMTAxNiAtMC4wMjQxMiwtMC4zNDEwNyAtMC4wMjQxMiwtMC4xMzA5MSAtMC4wNzU3OSwtMC4yMDY3IC0wLjA1MTY4LC0wLjA3NTggLTAuMTM3ODA0LC0wLjEwMzM2IC0wLjA4MjY4LC0wLjAyNzYgLTAuMjAzMjYsLTAuMDI3NiAtMC4xMDY3OTgsMCAtMC4yMzc3MTIsMC4wNTE3IC0wLjEzMDkxMywwLjA1MTcgLTAuMjgyNDk4LDAuMTY1MzYgLTAuMTQ4MTM5LDAuMTEzNjkgLTAuMzEzNTAzLDAuMjk5NzMgLTAuMTYxOTIsMC4xODI1OSAtMC4zMjcyODQsMC40NTEzIHYgMS41MzMwNyBxIDAsMC4wNTE3IDAuMTI3NDY4LDAuMTA2OCAwLjEzMDkxNCwwLjA1NTEgMC4zNTQ4NDUsMC4xMDMzNSB2IDAuMTQ4MTQgaCAtMS40ODEzOTEgdiAtMC4xNDgxNCBxIDAuMjI3Mzc2LC0wLjA1ODYgMC4zNTQ4NDUsLTAuMTAzMzUgMC4xMjc0NjgsLTAuMDQ4MiAwLjEyNzQ2OCwtMC4xMDY4IHYgLTIuMDkxMTcgcSAwLC0wLjEzNDM2IC0wLjAxMDMzLC0wLjIxMzYgLTAuMDEwMzQsLTAuMDc5MiAtMC4wNTg1NywtMC4xMjQwMiAtMC4wNDQ3OSwtMC4wNDQ4IC0wLjE0MTI0OSwtMC4wNjU1IC0wLjA5NjQ2LC0wLjAyMDcgLTAuMjcyMTYyLC0wLjA0MTMgdiAtMC4xMzc4IHEgMC4yMzQyNjYsLTAuMDM3OSAwLjQzNDA4MiwtMC4xMDY4IDAuMTk5ODE1LC0wLjA3MjQgMC4zOTI3NDEsLTAuMTY4ODEgbCAwLjEyMDU3OCwwLjEyMDU4IDAuMDM3OSwwLjg1NzgzIHEgMC4xNTE1ODQsLTAuMjMwODMgMC4zMzQxNzQsLTAuNDA5OTcgMC4xODI1OTEsLTAuMTgyNTkgMC4zNjg2MjYsLTAuMzA2NjEgMC4xODYwMzUsLTAuMTI3NDcgMC4zNTgyOSwtMC4xOTI5MyAwLjE3NTY5OSwtMC4wNjg5IDAuMzEwMDU4LC0wLjA2ODkgMC4xNDgxMzksMCAwLjI4NTk0MywwLjA0NDggMC4xMzc4MDQsMC4wNDQ4IDAuMjQxMTU3LDAuMTM3OCAwLjEwNjc5OCwwLjA5MyAwLjE2ODgwOSwwLjIzNzcxIDAuMDY1NDYsMC4xNDEyNSAwLjA2NTQ2LDAuMzM0MTggdiAyLjE5NDUyIHEgMCwwLjA0ODIgMC4xMDMzNTMsMC4wOTY1IDAuMTA2Nzk4LDAuMDQ0OCAwLjM3ODk2MSwwLjExMzY5IHYgMC4xNDgxNCB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MjIiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjguMDA3NTI4LDIyMy4zMTU1MyBxIC0wLjE2ODgxLDAuMTI0MDMgLTAuMzM0MTc0LDAuMjIwNDkgLTAuMTY1MzY1LDAuMDkzIC0wLjMxNjk0OSwwLjE1ODQ4IC0wLjE0ODEzOSwwLjA2MiAtMC4yNzU2MDgsMC4wOTMgLTAuMTI3NDY4LDAuMDM0NCAtMC4yMTcwNDEsMC4wMzQ0IC0wLjEyMDU3OCwwIC0wLjIzMDgyMSwtMC4wNDQ4IC0wLjEwNjc5OCwtMC4wNDQ4IC0wLjE4OTQ4LC0wLjE0NDcgLTAuMDgyNjgsLTAuMTAzMzUgLTAuMTMwOTE0LC0wLjI2ODcxIC0wLjA0ODIzLC0wLjE2NTM3IC0wLjA0ODIzLC0wLjQwNjUzIHYgLTIuMTE1MjggaCAtMC40NDQ0MTcgbCAtMC4wNzIzNSwtMC4wOTY1IDAuMjY4NzE3LC0wLjIzMDgyIGggMC4yNDgwNDcgdiAtMC44NDc0OSBsIDAuNDA5OTY2LC0wLjM1ODI5IDAuMTA2Nzk4LDAuMDg2MSB2IDEuMTE5NjUgaCAxLjEyNjU0NiBsIDAuMDk5OTEsMC4wOTk5IHEgLTAuMDMxMDEsMC4wNDgyIC0wLjA3OTI0LDAuMTAzMzUgLTAuMDQ0NzksMC4wNTUxIC0wLjA5MzAyLDAuMTAzMzYgLTAuMDQ4MjMsMC4wNDgyIC0wLjA5NjQ2LDAuMDg5NiAtMC4wNDQ3OSwwLjAzNzkgLTAuMDc5MjQsMC4wNTE3IC0wLjA4MjY4LC0wLjA0MTMgLTAuMjUxNDkyLC0wLjA3OTIgLTAuMTY4ODEsLTAuMDQxMyAtMC40NDc4NjMsLTAuMDQxMyBoIC0wLjE3OTE0NSB2IDEuODE5MDEgcSAwLDAuMjA2NyAwLjAxNzIzLDAuMzQ0NTEgMC4wMjA2NywwLjEzNzggMC4wNjU0NiwwLjIyMDQ4IDAuMDQ0NzksMC4wNzkyIDAuMTEzNjg5LDAuMTEzNjkgMC4wNzIzNSwwLjAzNDQgMC4xNzU2OTksMC4wMzQ0IDAuMTIwNTc5LDAgMC4zMDMxNjksLTAuMDQ4MiAwLjE4MjU5LC0wLjA0ODIgMC40NTEzMDcsLTAuMTg2MDQgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDI0IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY5LjgxMjc1OCwyMjAuNzczMDUgcSAtMC4xNzkxNDUsMCAtMC4zMzA3MjksMC4wNjg5IC0wLjE0ODEzOSwwLjA2ODkgLTAuMjY1MjcyLDAuMTk2MzcgLTAuMTEzNjg4LDAuMTI0MDIgLTAuMTkyOTI2LDAuMjk5NzIgLTAuMDc1NzksMC4xNzIyNSAtMC4xMDY3OTgsMC4zODI0MSBoIDEuNDc0NTAxIHEgMC4wNzkyNCwwIDAuMTAzMzUzLC0wLjAyNDEgMC4wMjc1NiwtMC4wMjc2IDAuMDI3NTYsLTAuMDk5OSAwLC0wLjA5MyAtMC4wMjc1NiwtMC4yMzA4MiAtMC4wMjQxMiwtMC4xNDEyNSAtMC4xMDMzNTMsLTAuMjcyMTYgLTAuMDc1NzksLTAuMTM0MzYgLTAuMjE3MDQxLC0wLjIyNzM4IC0wLjEzNzgwNCwtMC4wOTMgLTAuMzYxNzM1LC0wLjA5MyB6IG0gMS4yNzQ2ODYsMS4wMjY2NCBxIC0wLjA2MjAxLDAuMDY4OSAtMC4xNjUzNjUsMC4xMjc0NyAtMC4xMDMzNTMsMC4wNTg2IC0wLjIxMzU5NiwwLjEwMzM1IGggLTEuODEyMTIgcSAwLjAwMzQsMC4yNjg3MiAwLjA3MjM1LDAuNTEzMzIgMC4wNzIzNSwwLjI0MTE2IDAuMjAzMjYxLDAuNDI3MiAwLjEzNDM1OCwwLjE4MjU5IDAuMzIwMzkzLDAuMjkyODMgMC4xODk0ODEsMC4xMTAyNCAwLjQyMzc0NywwLjExMDI0IDAuMTA2Nzk4LDAgMC4yMDY3MDYsLTAuMDEzOCAwLjEwMzM1MywtMC4wMTM4IDAuMjIwNDg2LC0wLjA2MiAwLjExNzEzMywtMC4wNDgyIDAuMjU4MzgyLC0wLjE0MTI1IDAuMTQ0Njk0LC0wLjA5MyAwLjMzNzYxOSwtMC4yNTE0OSAwLjA0NDc5LDAuMDI0MSAwLjA3NTc5LDAuMDY4OSAwLjAzNDQ1LDAuMDQ0OCAwLjA1MTY4LDAuMDcyNCAtMC4yMzA4MjEsMC4yNTE0OSAtMC40MDY1MjEsMC40MDY1MiAtMC4xNzIyNTUsMC4xNTE1OCAtMC4zMjcyODQsMC4yMzQyNiAtMC4xNTE1ODQsMC4wODI3IC0wLjMwMzE2OSwwLjEwNjggLTAuMTQ4MTM5LDAuMDI3NiAtMC4zMjM4MzksMC4wMjc2IC0wLjI2NTI3MiwwIC0wLjUwNjQyOSwtMC4xMTM2OCAtMC4yMzc3MTEsLTAuMTEzNjkgLTAuNDIwMzAxLC0wLjMyMDQgLTAuMTgyNTksLTAuMjEwMTUgLTAuMjkyODMzLC0wLjUwMjk4IC0wLjEwNjc5OCwtMC4yOTYyOCAtMC4xMDY3OTgsLTAuNjYxNDYgMCwtMC4yMzA4MiAwLjA1MTY4LC0wLjQ1NDc1IDAuMDUxNjgsLTAuMjIzOTMgMC4xNDgxMzksLTAuNDIzNzUgMC4wOTk5MSwtMC4xOTk4MiAwLjI0MTE1NywtMC4zNjg2MyAwLjE0MTI0OSwtMC4xNjg4IDAuMzIwMzk0LC0wLjI5MjgzIDAuMDc1NzksLTAuMDUxNyAwLjE2ODgwOSwtMC4wOTk5IDAuMDk2NDYsLTAuMDUxNyAwLjE5OTgxNiwtMC4wODk2IDAuMTAzMzUzLC0wLjAzNzkgMC4yMDMyNjEsLTAuMDU4NiAwLjEwMzM1MiwtMC4wMjQxIDAuMTk2MzcsLTAuMDI0MSAwLjIyMzkzMSwwIDAuMzk5NjMxLDAuMDYyIDAuMTc1NywwLjA2MiAwLjMwNjYxNCwwLjE2ODgxIDAuMTMwOTEzLDAuMTAzMzUgMC4yMjA0ODYsMC4yNDQ2IDAuMDg5NTcsMC4xMzc4MSAwLjE0NDY5NCwwLjI5Mjg0IDAuMDU4NTcsMC4xNTUwMiAwLjA4MjY4LDAuMzE2OTQgMC4wMjQxMiwwLjE1ODQ4IDAuMDI0MTIsMC4zMDMxNyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MjYiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzQuMDIyNjY1LDIyMC41Mzg3OSBxIDAuMDMxLDAuMDIwNyAwLjAyNzU2LDAuMTIwNTggMCwwLjA5OTkgLTAuMDI3NTYsMC4yMzA4MiAtMC4wMjQxMiwwLjEzMDkxIC0wLjA2NTQ2LDAuMjY4NzEgLTAuMDQxMzQsMC4xMzc4MSAtMC4wODI2OCwwLjIzMDgzIGggLTAuMTQ4MTQgcSAtMC4wMjA2NywtMC4xMzc4MSAtMC4wNTg1NywtMC4yMzQyNyAtMC4wMzc5LC0wLjA5NjUgLTAuMDg5NTcsLTAuMTUxNTggLTAuMDQ4MjMsLTAuMDU4NiAtMC4xMTAyNDMsLTAuMDgyNyAtMC4wNTg1NywtMC4wMjc2IC0wLjEyNDAyMywtMC4wMjc2IC0wLjA3NTc5LDAgLTAuMTc5MTQ1LDAuMDY1NSAtMC4wOTk5MSwwLjA2MiAtMC4yMDY3MDYsMC4xOTk4MSAtMC4xMDY3OTgsMC4xMzQzNiAtMC4yMTM1OTYsMC4zNDc5NiAtMC4xMDMzNTMsMC4yMTAxNSAtMC4xODYwMzUsMC41MDI5OCB2IDEuMzUwNDggcSAwLDAuMDUxNyAwLjEyNzQ2OSwwLjEwNjggMC4xMzA5MTMsMC4wNTUxIDAuNDU0NzUyLDAuMTAzMzUgdiAwLjE0ODE0IGggLTEuNTgxMjk5IHYgLTAuMTQ4MTQgcSAwLjIyNzM3NywtMC4wNTE3IDAuMzU0ODQ1LC0wLjA5OTkgMC4xMjc0NjksLTAuMDUxNyAwLjEyNzQ2OSwtMC4xMTAyNCB2IC0yLjAwNTA0IHEgMCwtMC4xMTM2OSAtMC4wMDY5LC0wLjE4OTQ4IC0wLjAwNjksLTAuMDc5MiAtMC4wMTcyMywtMC4xMjc0NyAtMC4wMTAzMywtMC4wNDgyIC0wLjAyNzU2LC0wLjA3NTggLTAuMDEzNzgsLTAuMDI3NiAtMC4wMjc1NiwtMC4wNDQ4IC0wLjAyNDEyLC0wLjAyNDEgLTAuMDU1MTIsLTAuMDM3OSAtMC4wMjc1NiwtMC4wMTcyIC0wLjA3NTc5LC0wLjAyNzYgLTAuMDQ0NzksLTAuMDEwMyAtMC4xMTAyNDMsLTAuMDEzOCAtMC4wNjU0NiwtMC4wMDcgLTAuMTYxOTIsLTAuMDEzOCB2IC0wLjEzNzggcSAwLjIyMzkzMiwtMC4wNTg2IDAuNDM3NTI4LC0wLjExNzE0IDAuMjE3MDQxLC0wLjA2MiAwLjM4OTI5NSwtMC4xNTg0NyBsIDAuMTIwNTc5LDAuMTIwNTggMC4wNDQ3OSwwLjc4MjAzIHEgMC4wOTMwMiwtMC4xODk0OCAwLjE5OTgxNSwtMC4zNTQ4NCAwLjExMDI0MywtMC4xNjUzNyAwLjIzNDI2NywtMC4yODU5NCAwLjEyNDAyMywtMC4xMjQwMyAwLjI1ODM4MiwtMC4xOTI5MyAwLjEzNzgwNCwtMC4wNjg5IDAuMjg1OTQzLC0wLjA2ODkgMC4xMTAyNDMsMCAwLjIzNzcxMiwwLjAyNzYgMC4xMjc0NjgsMC4wMjc2IDAuMjU0OTM3LDAuMDk5OSB6IiAvPgogICAgPC9nPgogICAgPGcKICAgICAgIGlkPSJ0ZXh0ODI5LTYtMy02LTktMi0wLTctNiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo0LjkzODg4OTAzcHg7bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTonR2VudGl1bSBQbHVzJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidHZW50aXVtIFBsdXMnO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGFyaWEtbGFiZWw9Im1hbGxvYyByZXR1cm4KdmFsdWUiPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MjkiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNTEuNTA3ODY4LDI0NS40MTY5OSB2IC0wLjEwMzcgcSAwLjE3MzYzMywtMC4wNDU4IDAuMjUzMjE0LC0wLjA3OTYgMC4wODE5OSwtMC4wMzM4IDAuMDgxOTksLTAuMDY3NSB2IC0xLjI3NTcyIHEgMCwtMC4xNDcxMSAtMC4wMTY4OCwtMC4yNDM1NyAtMC4wMTQ0NywtMC4wOTg5IC0wLjA0ODIzLC0wLjE1NDM0IC0wLjAzMTM1LC0wLjA1NTUgLTAuMDg0NCwtMC4wNzcyIC0wLjA1MDY0LC0wLjAyNDEgLTAuMTIyOTg5LC0wLjAyNDEgLTAuMDc5NTgsMCAtMC4xNjg4MSwwLjA0NTggLTAuMDg5MjMsMC4wNDM0IC0wLjE4MzI3OSwwLjEyNzgxIC0wLjA5NDA1LDAuMDgyIC0wLjE5MDUxNCwwLjIwMjU3IC0wLjA5NDA1LDAuMTE4MTcgLTAuMTg1NjkxLDAuMjY3NjggdiAxLjEzMTAzIHEgMCwwLjAzMzggMC4wNzQ3NiwwLjA2NzUgMC4wNzQ3NiwwLjAzMTQgMC4yNjUyNzIsMC4wNzk2IHYgMC4xMDM3IGggLTEuMDM2OTc0IHYgLTAuMTAzNyBxIDAuMTczNjMzLC0wLjA0NTggMC4yNTMyMTUsLTAuMDc5NiAwLjA4MTk5LC0wLjAzMzggMC4wODE5OSwtMC4wNjc1IHYgLTEuMjc1NzIgcSAwLC0wLjE0NzExIC0wLjAxNDQ3LC0wLjI0MzU3IC0wLjAxNDQ3LC0wLjA5ODkgLTAuMDQ4MjMsLTAuMTU0MzQgLTAuMDMxMzUsLTAuMDU1NSAtMC4wODQ0LC0wLjA3NzIgLTAuMDUwNjQsLTAuMDI0MSAtMC4xMjU0MDIsLTAuMDI0MSAtMC4xNjM5ODYsMCAtMC4zNDQ4NTQsMC4xNjg4MSAtMC4xNzg0NTYsMC4xNjg4MSAtMC4zODM0MzksMC40NzUwNyB2IDEuMTMxMDMgcSAwLDAuMDM2MiAwLjA4OTIzLDAuMDc0OCAwLjA5MTY0LDAuMDM4NiAwLjI0ODM5MSwwLjA3MjMgdiAwLjEwMzcgaCAtMS4wMzY5NzMgdiAtMC4xMDM3IHEgMC4xNTkxNjMsLTAuMDQxIDAuMjQ4MzkxLC0wLjA3MjMgMC4wODkyMywtMC4wMzM4IDAuMDg5MjMsLTAuMDc0OCB2IC0xLjQ2MzgyIHEgMCwtMC4wOTY1IC0wLjAwOTYsLTAuMTUxOTMgLTAuMDA3MiwtMC4wNTU1IC0wLjA0MzQxLC0wLjA4NDQgLTAuMDMzNzYsLTAuMDMxNCAtMC4xMDEyODYsLTAuMDQ1OCAtMC4wNjc1MiwtMC4wMTQ1IC0wLjE4MzI3OSwtMC4wMjg5IHYgLTAuMDk2NSBxIDAuMDkxNjQsLTAuMDE0NSAwLjE2ODgwOSwtMC4wMzM4IDAuMDc3MTcsLTAuMDIxNyAwLjE0NzEwNiwtMC4wNDU4IDAuMDY5OTQsLTAuMDI0MSAwLjEzMjYzNiwtMC4wNTMgMC4wNjUxMSwtMC4wMjg5IDAuMTMwMjI1LC0wLjA2MDMgbCAwLjA4NDQxLDAuMDg0NCAwLjAyNjUzLDAuNTUyMjUgcSAwLjEwODUyLC0wLjE1OTE2IDAuMjE5NDUyLC0wLjI3NzMzIDAuMTEwOTMyLC0wLjEyMDU4IDAuMjE5NDUzLC0wLjIwMDE2IDAuMTA4NTIsLTAuMDc5NiAwLjIwOTgwNiwtMC4xMTgxNyAwLjEwMTI4NiwtMC4wNDEgMC4xODgxMDIsLTAuMDQxIDAuMTE1NzU2LDAgMC4yMTIyMTgsMC4wMjg5IDAuMDk4ODcsMC4wMjY1IDAuMTY4ODEsMC4wOTQxIDAuMDcyMzUsMC4wNjUxIDAuMTEzMzQ0LDAuMTczNjMgMC4wNDEsMC4xMDg1MiAwLjA0MSwwLjI3MDEgdiAwLjA1MDYgcSAwLjEwMTI4NiwtMC4xNTE5MyAwLjIwOTgwNywtMC4yNjUyNyAwLjEwODUyLC0wLjExNTc2IDAuMjE0NjI5LC0wLjE5MjkzIDAuMTA4NTIxLC0wLjA3OTYgMC4yMDk4MDYsLTAuMTE4MTcgMC4xMDM2OTgsLTAuMDQxIDAuMTkyOTI2LC0wLjA0MSAwLjExNTc1NSwwIDAuMjEyMjE4LDAuMDMxNCAwLjA5ODg3LDAuMDMxNCAwLjE2ODgwOSwwLjA5NjUgMC4wNzIzNSwwLjA2NTEgMC4xMTMzNDQsMC4xNjY0IDAuMDQxLDAuMDk4OSAwLjA0MSwwLjIzMzkyIHYgMS41MzYxNyBxIDAsMC4wMzM4IDAuMDc0NzYsMC4wNjc1IDAuMDc0NzYsMC4wMzE0IDAuMjY1MjczLDAuMDc5NiB2IDAuMTAzNyB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MzEiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNTMuNDYxMjM3LDI0NS4xNzU4NCBxIDAuMTQ0Njk0LDAgMC4zMDYyNjksLTAuMDcyNCAwLjE2Mzk4NywtMC4wNzQ4IDAuMzQ3MjY2LC0wLjIzMzkyIHYgLTAuNjI0NiBxIC0wLjIwMjU3MiwwLjAzMzggLTAuMzM1MjA4LDAuMDY1MSAtMC4xMzAyMjUsMC4wMzE0IC0wLjIxNDYzLDAuMDY1MSAtMC4wODQ0LDAuMDMxNCAtMC4xMzUwNDcsMC4wNjc1IC0wLjA1MDY0LDAuMDM2MiAtMC4wODkyMywwLjA3NzIgLTAuMDYyNywwLjA2NTEgLTAuMTAxMjg2LDAuMTQ5NTIgLTAuMDM4NTgsMC4wODIgLTAuMDM4NTgsMC4xOTUzMyAwLDAuMDk2NSAwLjAyODk0LDAuMTU2NzYgMC4wMjg5NCwwLjA2MDMgMC4wNjk5NCwwLjA5NjUgMC4wNDEsMC4wMzM4IDAuMDg0NDEsMC4wNDU4IDAuMDQ1ODIsMC4wMTIxIDAuMDc3MTcsMC4wMTIxIHogbSAxLjM4NDIzOSwwLjA0MzQgcSAtMC4yMDQ5ODMsMC4xNDIyOSAtMC4zNDAwMywwLjIwNDk5IC0wLjEzMjYzNywwLjA2NTEgLTAuMjAwMTYxLDAuMDY1MSAtMC4wNzk1OCwwIC0wLjEzMjYzNiwtMC4xMTA5MyAtMC4wNTMwNSwtMC4xMTA5MyAtMC4wNTc4OCwtMC4zMDYyNyAtMC4xMDg1MjEsMC4xMDg1MiAtMC4yMTcwNDEsMC4xODgxIC0wLjEwODUyMSwwLjA3OTYgLTAuMjEyMjE4LDAuMTMwMjIgLTAuMTAzNjk4LDAuMDUwNyAtMC4xOTc3NDksMC4wNzQ4IC0wLjA5MTY0LDAuMDI0MSAtMC4xNjg4MDksMC4wMjQxIC0wLjA4NjgyLDAgLTAuMTc4NDU2LC0wLjAyODkgLTAuMDkxNjQsLTAuMDI4OSAtMC4xNjYzOTgsLTAuMDkxNiAtMC4wNzIzNSwtMC4wNjI3IC0wLjEyMDU3OSwtMC4xNjE1NyAtMC4wNDgyMywtMC4wOTg5IC0wLjA0ODIzLC0wLjIzODc1IDAsLTAuMTgzMjggMC4wNjI3LC0wLjMwNjI3IDAuMDY1MTEsLTAuMTIyOTkgMC4xNTQzNCwtMC4yMTIyMiAwLjA1Nzg4LC0wLjA1NzkgMC4xMzAyMjQsLTAuMTA4NTIgMC4wNzQ3NiwtMC4wNTMxIDAuMTk1MzM3LC0wLjEwMTI4IDAuMTIyOTksLTAuMDQ4MiAwLjMwNjI2OSwtMC4wOTE2IDAuMTgzMjc5LC0wLjA0MzQgMC40NjA2MSwtMC4wODQ0IHYgLTAuMzQwMDMgcSAwLC0wLjA4MiAtMC4wMTkyOSwtMC4xNTE5MyAtMC4wMTkyOSwtMC4wNzIzIC0wLjA2NTExLC0wLjEyMjk5IC0wLjA0NTgyLC0wLjA1MzEgLTAuMTI1NDAyLC0wLjA3OTYgLTAuMDc3MTcsLTAuMDI4OSAtMC4xOTUzMzcsLTAuMDI2NSAtMC4wNzcxNywwLjAwMiAtMC4xNTE5MjgsMC4wMjY1IC0wLjA3NDc2LDAuMDI0MSAtMC4xMzAyMjUsMC4wNjc1IC0wLjA1NTQ3LDAuMDQzNCAtMC4wODY4MiwwLjEwMzY5IC0wLjAzMTM1LDAuMDU3OSAtMC4wMjQxMiwwLjEzMDIzIDAuMDAyNCwwLjAyMTcgLTAuMDUwNjQsMC4wNTA2IC0wLjA1MDY0LDAuMDI2NSAtMC4xMjI5OSwwLjA0ODIgLTAuMDY5OTQsMC4wMjE3IC0wLjEzOTg3MSwwLjAzMzggLTAuMDY3NTIsMC4wMTIxIC0wLjA5NjQ2LDAuMDA1IGwgLTAuMDMzNzYsLTAuMDk0MSBxIDAuMDU1NDcsLTAuMTIwNTggMC4xNjg4MDksLTAuMjMxNTEgMC4xMTMzNDQsLTAuMTEwOTQgMC4yNTgwMzgsLTAuMTk1MzQgMC4xNDcxMDYsLTAuMDg0NCAwLjMwODY4MSwtMC4xMzUwNSAwLjE2Mzk4NiwtMC4wNTA2IDAuMzE1OTE1LC0wLjA1MDYgMC4yNjUyNzIsMCAwLjQwNzU1NSwwLjEzOTg3IDAuMTQ0Njk0LDAuMTM3NDYgMC4xNDQ2OTQsMC4zODU4NSB2IDEuMzYwMTIgcSAwLDAuMTAxMjkgMC4wMjY1MywwLjE0NDcgMC4wMjY1MywwLjA0MzQgMC4wNjk5NCwwLjA0MzQgMC4wMzM3NiwwIDAuMDg2ODIsLTAuMDEyMSAwLjA1MzA1LC0wLjAxMjEgMC4xNDk1MTcsLTAuMDUzMSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0MzMiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNTUuMDIzOTMzLDI0NS40MTY5OSB2IC0wLjEwMzcgcSAwLjEwMzY5NywtMC4wMTY5IDAuMTczNjMyLC0wLjAzMzggMC4wNjk5NCwtMC4wMTkzIDAuMTEwOTMzLC0wLjAzNjIgMC4wNDEsLTAuMDE5MyAwLjA1Nzg4LC0wLjAzODYgMC4wMTkyOSwtMC4wMTkzIDAuMDE5MjksLTAuMDM4NiB2IC0yLjg3NDU5IHEgMCwtMC4xMDg1MiAtMC4wMTQ0NywtMC4xNjg4MSAtMC4wMTQ0NywtMC4wNjAzIC0wLjA1MzA1LC0wLjA4OTIgLTAuMDM4NTgsLTAuMDMxNCAtMC4xMDM2OTgsLTAuMDQxIC0wLjA2NTExLC0wLjAxMjEgLTAuMTY2Mzk4LC0wLjAyNDEgdiAtMC4wOTY1IHEgMC4xNzM2MzMsLTAuMDMzOCAwLjMxODMyNywtMC4wNzQ4IDAuMTQ0Njk0LC0wLjA0MSAwLjI5NDIxMSwtMC4xMTgxNyBsIDAuMDg2ODIsMC4wODIgdiAzLjQwNTEzIHEgMCwwLjAzNjIgMC4wODE5OSwwLjA3NDggMC4wODE5OSwwLjAzODYgMC4yNzk3NDIsMC4wNzIzIHYgMC4xMDM3IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQzNSIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA1Ni4zNjQ3NjMsMjQ1LjQxNjk5IHYgLTAuMTAzNyBxIDAuMTAzNjk4LC0wLjAxNjkgMC4xNzM2MzMsLTAuMDMzOCAwLjA2OTk0LC0wLjAxOTMgMC4xMTA5MzIsLTAuMDM2MiAwLjA0MSwtMC4wMTkzIDAuMDU3ODgsLTAuMDM4NiAwLjAxOTI5LC0wLjAxOTMgMC4wMTkyOSwtMC4wMzg2IHYgLTIuODc0NTkgcSAwLC0wLjEwODUyIC0wLjAxNDQ3LC0wLjE2ODgxIC0wLjAxNDQ3LC0wLjA2MDMgLTAuMDUzMDUsLTAuMDg5MiAtMC4wMzg1OCwtMC4wMzE0IC0wLjEwMzY5OCwtMC4wNDEgLTAuMDY1MTEsLTAuMDEyMSAtMC4xNjYzOTgsLTAuMDI0MSB2IC0wLjA5NjUgcSAwLjE3MzYzMywtMC4wMzM4IDAuMzE4MzI3LC0wLjA3NDggMC4xNDQ2OTQsLTAuMDQxIDAuMjk0MjExLC0wLjExODE3IGwgMC4wODY4MiwwLjA4MiB2IDMuNDA1MTMgcSAwLDAuMDM2MiAwLjA4MTk5LDAuMDc0OCAwLjA4MTk5LDAuMDM4NiAwLjI3OTc0MiwwLjA3MjMgdiAwLjEwMzcgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDM3IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDU5LjQ3ODA5NiwyNDQuMzE5NzMgcSAwLC0wLjE5MDUxIC0wLjA2MjcsLTAuMzYxNzQgLTAuMDYyNywtMC4xNzM2MyAtMC4xNjE1NzUsLTAuMzAzODUgLTAuMDk4ODcsLTAuMTMyNjQgLTAuMjI0Mjc2LC0wLjIwOTgxIC0wLjEyNTQwMSwtMC4wNzcyIC0wLjI0ODM5MSwtMC4wNzcyIC0wLjE4MzI3OSwwIC0wLjMwODY4LDAuMDY5OSAtMC4xMjU0MDIsMC4wNjk5IC0wLjIwMjU3MiwwLjE5MjkyIC0wLjA3NDc2LDAuMTIwNTggLTAuMTA4NTIxLDAuMjg2OTggLTAuMDMzNzYsMC4xNjY0IC0wLjAzMzc2LDAuMzU5MzIgMCwwLjE5MDUxIDAuMDY3NTIsMC4zNjQxNSAwLjA2NzUyLDAuMTcxMjIgMC4xNjg4MSwwLjMwMTQ0IDAuMTAzNjk3LDAuMTMwMjMgMC4yMjY2ODcsMC4yMDc0IDAuMTIyOTksMC4wNzQ4IDAuMjMzOTIyLDAuMDc0OCAwLjE3MTIyMiwwIDAuMjk0MjExLC0wLjA2MjcgMC4xMjI5OSwtMC4wNjUxIDAuMjAyNTcyLC0wLjE4MzI4IDAuMDc5NTgsLTAuMTE4MTcgMC4xMTgxNjcsLTAuMjg0NTcgMC4wMzg1OCwtMC4xNjY0IDAuMDM4NTgsLTAuMzczNzkgeiBtIDAuMzczNzkzLC0wLjA3MjQgcSAwLDAuMTYxNTggLTAuMDQxLDAuMzE1OTIgLTAuMDQxLDAuMTU0MzQgLTAuMTEzMzQzLDAuMjkxOCAtMC4wNzIzNSwwLjEzNzQ2IC0wLjE3MzYzMywwLjI1NTYyIC0wLjEwMTI4NiwwLjExNTc2IC0wLjIyNDI3NiwwLjIwMDE2IC0wLjEyMDU3OCwwLjA4NDQgLTAuMjU4MDM4LDAuMTMwMjMgLTAuMTM3NDU5LDAuMDQ4MiAtMC4yODQ1NjUsMC4wNDgyIC0wLjIyOTA5OCwwIC0wLjQxNDc4OSwtMC4wODY4IC0wLjE4MzI3OSwtMC4wODY4IC0wLjMxNTkxNSwtMC4yMzg3NCAtMC4xMzAyMjUsLTAuMTUxOTMgLTAuMjAyNTcyLC0wLjM2MTc0IC0wLjA2OTk0LC0wLjIwOTggLTAuMDY5OTQsLTAuNDU1NzggMCwtMC4xNTkxNyAwLjAzODU5LC0wLjMxMzUxIDAuMDQxLC0wLjE1NDM0IDAuMTEwOTMyLC0wLjI5MTggMC4wNzIzNSwtMC4xMzk4NyAwLjE3MTIyMSwtMC4yNTU2MiAwLjEwMTI4NiwtMC4xMTgxNyAwLjIyMTg2NCwtMC4yMDI1NyAwLjEyMjk5LC0wLjA4NDQgMC4yNjI4NjEsLTAuMTMyNjQgMC4xNDIyODIsLTAuMDQ4MiAwLjI5MTgsLTAuMDQ4MiAwLjIyNjY4NywwIDAuNDA5OTY2LDAuMDg2OCAwLjE4NTY5MSwwLjA4NjggMC4zMTU5MTUsMC4yNDExNiAwLjEzMjYzNiwwLjE1MTkzIDAuMjAyNTcyLDAuMzYxNzQgMC4wNzIzNSwwLjIwOTggMC4wNzIzNSwwLjQ1NTc4IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQzOSIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2Mi4wNzUzNTQsMjQ0Ljk1ODc5IHEgLTAuMTU2NzUyLDAuMTg1NyAtMC4yNzczMzEsMC4yOTE4IC0wLjExODE2NiwwLjEwMzcgLTAuMjE5NDUyLDAuMTU5MTcgLTAuMTAxMjg2LDAuMDUzIC0wLjE5Nzc0OSwwLjA2NTEgLTAuMDk2NDYsMC4wMTQ1IC0wLjIwOTgwNiwwLjAxNDUgLTAuMTc2MDQ0LDAgLTAuMzQ0ODU0LC0wLjA3NzIgLTAuMTY2Mzk4LC0wLjA3OTYgLTAuMjk2NjIzLC0wLjIyNjY5IC0wLjEzMDIyNCwtMC4xNDcxIC0wLjIwOTgwNiwtMC4zNTkzMiAtMC4wNzcxNywtMC4yMTIyMiAtMC4wNzcxNywtMC40Nzk5IDAsLTAuMjYwNDUgMC4wOTQwNSwtMC40ODcxNCAwLjA5NjQ2LC0wLjIyNjY5IDAuMjYwNDQ5LC0wLjM5MzA5IDAuMTY2Mzk4LC0wLjE2ODgxIDAuMzkwNjc0LC0wLjI2NTI3IDAuMjI0Mjc2LC0wLjA5ODkgMC40ODQ3MjUsLTAuMDk4OSAwLjA3OTU4LDAgMC4xNjE1NzUsMC4wMTQ1IDAuMDg0NDEsMC4wMTIxIDAuMTU5MTYzLDAuMDM4NiAwLjA3NzE3LDAuMDI0MSAwLjEzOTg3MSwwLjA2MDMgMC4wNjUxMSwwLjAzMzggMC4xMDYxMDksMC4wNzcyIDAuMDA0OCwwLjAyODkgLTAuMDA3MiwwLjA4MiAtMC4wMTIwNiwwLjA1MyAtMC4wMzM3NiwwLjExMzM0IC0wLjAyMTcsMC4wNTc5IC0wLjA0ODIzLDAuMTEzMzQgLTAuMDI2NTMsMC4wNTMxIC0wLjA0ODIzLDAuMDg2OCBsIC0wLjA4OTIzLC0wLjAyNDEgcSAtMC4wMTkyOSwtMC4wNDM0IC0wLjA2MjcsLTAuMDk0MSAtMC4wNDM0MSwtMC4wNTA2IC0wLjExMzM0NCwtMC4wOTY1IC0wLjA2NzUyLC0wLjA0NTggLTAuMTYzOTg2LC0wLjA3NDggLTAuMDk0MDUsLTAuMDMxMyAtMC4yMTcwNDEsLTAuMDMxMyAtMC4xMjc4MTMsMCAtMC4yNDU5OCwwLjA1NzkgLTAuMTE1NzU1LDAuMDU1NSAtMC4yMDczOTUsMC4xNjg4MSAtMC4wODkyMywwLjExMzM0IC0wLjE0NDY5NCwwLjI4MjE1IC0wLjA1MzA1LDAuMTY4ODEgLTAuMDUzMDUsMC4zOTU1IDAsMC4yMDQ5OCAwLjA2MDI5LDAuMzczNzkgMC4wNjI3LDAuMTY2NCAwLjE2Mzk4NiwwLjI4NDU3IDAuMTAzNjk4LDAuMTE4MTYgMC4yMzYzMzQsMC4xODMyNyAwLjEzNTA0OCwwLjA2MjcgMC4yNzk3NDIsMC4wNjI3IDAuMDY3NTIsMCAwLjEyNTQwMSwtMC4wMDUgMC4wNTc4OCwtMC4wMDcgMC4xMjU0MDIsLTAuMDM4NiAwLjA2OTk0LC0wLjAzMTQgMC4xNTkxNjMsLTAuMDk0MSAwLjA5MTY0LC0wLjA2MjcgMC4yMjY2ODcsLTAuMTc4NDYgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDQxIgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY1LjE1NzMzNiwyNDMuMTkxMTIgcSAwLjAyMTcsMC4wMTQ1IDAuMDE5MjksMC4wODQ0IDAsMC4wNjk5IC0wLjAxOTI5LDAuMTYxNTggLTAuMDE2ODgsMC4wOTE2IC0wLjA0NTgyLDAuMTg4MSAtMC4wMjg5NCwwLjA5NjUgLTAuMDU3ODgsMC4xNjE1NyBoIC0wLjEwMzY5NyBxIC0wLjAxNDQ3LC0wLjA5NjUgLTAuMDQxLC0wLjE2Mzk4IC0wLjAyNjUzLC0wLjA2NzUgLTAuMDYyNywtMC4xMDYxMSAtMC4wMzM3NiwtMC4wNDEgLTAuMDc3MTcsLTAuMDU3OSAtMC4wNDEsLTAuMDE5MyAtMC4wODY4MiwtMC4wMTkzIC0wLjA1MzA2LDAgLTAuMTI1NDAyLDAuMDQ1OCAtMC4wNjk5NCwwLjA0MzQgLTAuMTQ0Njk0LDAuMTM5ODcgLTAuMDc0NzYsMC4wOTQgLTAuMTQ5NTE3LDAuMjQzNTcgLTAuMDcyMzUsMC4xNDcxIC0wLjEzMDIyNSwwLjM1MjA5IHYgMC45NDUzMyBxIDAsMC4wMzYyIDAuMDg5MjMsMC4wNzQ4IDAuMDkxNjQsMC4wMzg2IDAuMzE4MzI3LDAuMDcyMyB2IDAuMTAzNyBoIC0xLjEwNjkwOSB2IC0wLjEwMzcgcSAwLjE1OTE2MywtMC4wMzYyIDAuMjQ4MzkxLC0wLjA2OTkgMC4wODkyMywtMC4wMzYyIDAuMDg5MjMsLTAuMDc3MiB2IC0xLjQwMzUzIHEgMCwtMC4wNzk2IC0wLjAwNDgsLTAuMTMyNjQgLTAuMDA0OCwtMC4wNTU1IC0wLjAxMjA2LC0wLjA4OTIgLTAuMDA3MiwtMC4wMzM4IC0wLjAxOTI5LC0wLjA1MyAtMC4wMDk2LC0wLjAxOTMgLTAuMDE5MjksLTAuMDMxNCAtMC4wMTY4OCwtMC4wMTY5IC0wLjAzODU4LC0wLjAyNjUgLTAuMDE5MjksLTAuMDEyMSAtMC4wNTMwNSwtMC4wMTkzIC0wLjAzMTM1LC0wLjAwNyAtMC4wNzcxNywtMC4wMSAtMC4wNDU4MiwtMC4wMDUgLTAuMTEzMzQ0LC0wLjAxIHYgLTAuMDk2NSBxIDAuMTU2NzUyLC0wLjA0MSAwLjMwNjI2OSwtMC4wODIgMC4xNTE5MjksLTAuMDQzNCAwLjI3MjUwNywtMC4xMTA5MyBsIDAuMDg0NDEsMC4wODQ0IDAuMDMxMzUsMC41NDc0MyBxIDAuMDY1MTEsLTAuMTMyNjQgMC4xMzk4NzEsLTAuMjQ4MzkgMC4wNzcxNywtMC4xMTU3NiAwLjE2Mzk4NywtMC4yMDAxNiAwLjA4NjgyLC0wLjA4NjggMC4xODA4NjcsLTAuMTM1MDUgMC4wOTY0NiwtMC4wNDgyIDAuMjAwMTYsLTAuMDQ4MiAwLjA3NzE3LDAgMC4xNjYzOTgsMC4wMTkzIDAuMDg5MjMsMC4wMTkzIDAuMTc4NDU2LDAuMDY5OSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0NDMiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjYuNDU0NzU5LDI0My4zNTUxIHEgLTAuMTI1NDAyLDAgLTAuMjMxNTExLDAuMDQ4MiAtMC4xMDM2OTcsMC4wNDgyIC0wLjE4NTY5LDAuMTM3NDYgLTAuMDc5NTgsMC4wODY4IC0wLjEzNTA0OCwwLjIwOTgxIC0wLjA1MzA1LDAuMTIwNTggLTAuMDc0NzYsMC4yNjc2OCBoIDEuMDMyMTUgcSAwLjA1NTQ3LDAgMC4wNzIzNSwtMC4wMTY5IDAuMDE5MjksLTAuMDE5MyAwLjAxOTI5LC0wLjA2OTkgMCwtMC4wNjUxIC0wLjAxOTI5LC0wLjE2MTU4IC0wLjAxNjg4LC0wLjA5ODkgLTAuMDcyMzUsLTAuMTkwNTEgLTAuMDUzMDUsLTAuMDk0IC0wLjE1MTkyOSwtMC4xNTkxNyAtMC4wOTY0NiwtMC4wNjUxIC0wLjI1MzIxNCwtMC4wNjUxIHogbSAwLjg5MjI4LDAuNzE4NjUgcSAtMC4wNDM0MSwwLjA0ODIgLTAuMTE1NzU2LDAuMDg5MiAtMC4wNzIzNSwwLjA0MSAtMC4xNDk1MTcsMC4wNzIzIGggLTEuMjY4NDg0IHEgMC4wMDI0LDAuMTg4MTEgMC4wNTA2NCwwLjM1OTMzIDAuMDUwNjQsMC4xNjg4MSAwLjE0MjI4MiwwLjI5OTAzIDAuMDk0MDUsMC4xMjc4MiAwLjIyNDI3NiwwLjIwNDk5IDAuMTMyNjM2LDAuMDc3MiAwLjI5NjYyMywwLjA3NzIgMC4wNzQ3NiwwIDAuMTQ0Njk0LC0wLjAxIDAuMDcyMzUsLTAuMDEgMC4xNTQzNCwtMC4wNDM0IDAuMDgxOTksLTAuMDMzOCAwLjE4MDg2OCwtMC4wOTg5IDAuMTAxMjg2LC0wLjA2NTEgMC4yMzYzMzMsLTAuMTc2MDUgMC4wMzEzNSwwLjAxNjkgMC4wNTMwNiwwLjA0ODIgMC4wMjQxMSwwLjAzMTQgMC4wMzYxNywwLjA1MDcgLTAuMTYxNTc1LDAuMTc2MDQgLTAuMjg0NTY1LDAuMjg0NTYgLTAuMTIwNTc4LDAuMTA2MTEgLTAuMjI5MDk4LDAuMTYzOTkgLTAuMTA2MTA5LDAuMDU3OSAtMC4yMTIyMTgsMC4wNzQ4IC0wLjEwMzY5OCwwLjAxOTMgLTAuMjI2Njg4LDAuMDE5MyAtMC4xODU2OSwwIC0wLjM1NDUsLTAuMDc5NiAtMC4xNjYzOTgsLTAuMDc5NiAtMC4yOTQyMTEsLTAuMjI0MjggLTAuMTI3ODEzLC0wLjE0NzEgLTAuMjA0OTgzLC0wLjM1MjA5IC0wLjA3NDc2LC0wLjIwNzM5IC0wLjA3NDc2LC0wLjQ2MzAyIDAsLTAuMTYxNTcgMC4wMzYxNywtMC4zMTgzMiAwLjAzNjE3LC0wLjE1Njc2IDAuMTAzNjk3LC0wLjI5NjYzIDAuMDY5OTQsLTAuMTM5ODcgMC4xNjg4MSwtMC4yNTgwNCAwLjA5ODg3LC0wLjExODE2IDAuMjI0Mjc1LC0wLjIwNDk4IDAuMDUzMDYsLTAuMDM2MiAwLjExODE2NywtMC4wNjk5IDAuMDY3NTIsLTAuMDM2MiAwLjEzOTg3MSwtMC4wNjI3IDAuMDcyMzUsLTAuMDI2NSAwLjE0MjI4MiwtMC4wNDEgMC4wNzIzNSwtMC4wMTY5IDAuMTM3NDYsLTAuMDE2OSAwLjE1Njc1MiwwIDAuMjc5NzQyLDAuMDQzNCAwLjEyMjk4OSwwLjA0MzQgMC4yMTQ2MjksMC4xMTgxNiAwLjA5MTY0LDAuMDcyNCAwLjE1NDM0LDAuMTcxMjIgMC4wNjI3LDAuMDk2NSAwLjEwMTI4NiwwLjIwNDk5IDAuMDQxLDAuMTA4NTIgMC4wNTc4OCwwLjIyMTg2IDAuMDE2ODgsMC4xMTA5MyAwLjAxNjg4LDAuMjEyMjIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDQ1IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDY5LjE3NTAwNiwyNDUuMTM0ODQgcSAtMC4xMTgxNjcsMC4wODY4IC0wLjIzMzkyMiwwLjE1NDM0IC0wLjExNTc1NSwwLjA2NTEgLTAuMjIxODY0LDAuMTEwOTMgLTAuMTAzNjk3LDAuMDQzNCAtMC4xOTI5MjUsMC4wNjUxIC0wLjA4OTIzLDAuMDI0MSAtMC4xNTE5MjksMC4wMjQxIC0wLjA4NDQsMCAtMC4xNjE1NzUsLTAuMDMxNCAtMC4wNzQ3NiwtMC4wMzE0IC0wLjEzMjYzNiwtMC4xMDEyOSAtMC4wNTc4OCwtMC4wNzIzIC0wLjA5MTY0LC0wLjE4ODEgLTAuMDMzNzYsLTAuMTE1NzUgLTAuMDMzNzYsLTAuMjg0NTYgdiAtMS40ODA3MSBoIC0wLjMxMTA5MiBsIC0wLjA1MDY0LC0wLjA2NzUgMC4xODgxMDMsLTAuMTYxNTggaCAwLjE3MzYzMiB2IC0wLjU5MzI0IGwgMC4yODY5NzcsLTAuMjUwOCAwLjA3NDc2LDAuMDYwMyB2IDAuNzgzNzUgaCAwLjc4ODU4MyBsIDAuMDY5OTQsMC4wNjk5IHEgLTAuMDIxNywwLjAzMzggLTAuMDU1NDcsMC4wNzI0IC0wLjAzMTM1LDAuMDM4NiAtMC4wNjUxMSwwLjA3MjMgLTAuMDMzNzYsMC4wMzM4IC0wLjA2NzUyLDAuMDYyNyAtMC4wMzEzNSwwLjAyNjUgLTAuMDU1NDcsMC4wMzYyIC0wLjA1Nzg4LC0wLjAyODkgLTAuMTc2MDQ0LC0wLjA1NTUgLTAuMTE4MTY3LC0wLjAyODkgLTAuMzEzNTA0LC0wLjAyODkgaCAtMC4xMjU0MDIgdiAxLjI3MzMxIHEgMCwwLjE0NDcgMC4wMTIwNiwwLjI0MTE2IDAuMDE0NDcsMC4wOTY1IDAuMDQ1ODIsMC4xNTQzNCAwLjAzMTM1LDAuMDU1NSAwLjA3OTU4LDAuMDc5NiAwLjA1MDY0LDAuMDI0MSAwLjEyMjk5LDAuMDI0MSAwLjA4NDQsMCAwLjIxMjIxNywtMC4wMzM4IDAuMTI3ODE0LC0wLjAzMzggMC4zMTU5MTYsLTAuMTMwMjIgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDQ3IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDcxLjgyMDQ5NiwyNDUuMjE5MjQgcSAtMC4wODkyMywwLjA1NzkgLTAuMTcxMjIxLDAuMTA4NTIgLTAuMDgxOTksMC4wNDgyIC0wLjE1MTkyOSwwLjA4NDQgLTAuMDY5OTMsMC4wMzYyIC0wLjEyMjk5LDAuMDU1NSAtMC4wNTMwNSwwLjAyMTcgLTAuMDgxOTksMC4wMjE3IC0wLjA4NDQsMCAtMC4xMzc0NTksLTAuMTEwOTMgLTAuMDUzMDYsLTAuMTEzMzUgLTAuMDY3NTIsLTAuMzYxNzQgLTAuMTQ5NTE3LDAuMTQ5NTIgLTAuMjc0OTE5LDAuMjQzNTcgLTAuMTIyOTksMC4wOTE2IC0wLjIyOTA5OCwwLjE0MjI4IC0wLjEwMzY5OCwwLjA1MDYgLTAuMTkyOTI2LDAuMDY3NSAtMC4wODY4MiwwLjAxOTMgLTAuMTYzOTg2LDAuMDE5MyAtMC4xMTMzNDQsMCAtMC4yMTcwNDEsLTAuMDMxNCAtMC4xMDM2OTgsLTAuMDMxNCAtMC4xODMyNzksLTAuMTEzMzQgLTAuMDc5NTgsLTAuMDg0NCAtMC4xMjc4MTQsLTAuMjI5MSAtMC4wNDU4MiwtMC4xNDQ3IC0wLjA0NTgyLC0wLjM3MTM4IHYgLTEuMDQxOCBxIDAsLTAuMTE1NzYgLTAuMDA3MiwtMC4xNzg0NiAtMC4wMDcyLC0wLjA2NTEgLTAuMDM4NTgsLTAuMDk2NSAtMC4wMjg5NCwtMC4wMzM4IC0wLjA5MTY0LC0wLjA0NTggLTAuMDYyNywtMC4wMTIxIC0wLjE3MzYzMiwtMC4wMjQxIHYgLTAuMDk2NSBxIDAuMDg2ODIsLTAuMDEgMC4xNjE1NzUsLTAuMDI0MSAwLjA3NzE3LC0wLjAxNDUgMC4xNDcxMDUsLTAuMDMzOCAwLjA3MjM1LC0wLjAxOTMgMC4xNDQ2OTQsLTAuMDQzNCAwLjA3MjM1LC0wLjAyNjUgMC4xNTE5MjksLTAuMDU3OSBsIDAuMDY3NTIsMC4wOTQxIHYgMS40MTU1OSBxIDAsMC4xNjg4MSAwLjAyNDExLDAuMjgyMTUgMC4wMjY1MywwLjExMzM1IDAuMDcyMzUsMC4xODA4NyAwLjA0ODIzLDAuMDY3NSAwLjExNTc1NiwwLjA5NjUgMC4wNjk5NCwwLjAyODkgMC4xNTY3NTEsMC4wMjg5IDAuMDc3MTcsMCAwLjE1Njc1MiwtMC4wMjE3IDAuMDgxOTksLTAuMDI0MSAwLjE2NjM5OCwtMC4wNzI0IDAuMDg2ODIsLTAuMDUwNiAwLjE4MDg2OCwtMC4xMjc4MSAwLjA5NDA1LC0wLjA3OTYgMC4yMDAxNiwtMC4xOTI5MyB2IC0xLjA4Mjc5IHEgMCwtMC4xMDg1MiAtMC4wMTIwNiwtMC4xNzM2MyAtMC4wMDk2LC0wLjA2NTEgLTAuMDQ1ODIsLTAuMTAxMjkgLTAuMDM2MTcsLTAuMDM2MiAtMC4xMDM2OTcsLTAuMDUwNiAtMC4wNjUxMSwtMC4wMTQ1IC0wLjE3NjA0NCwtMC4wMTkzIHYgLTAuMDk2NSBxIDAuMTczNjMyLC0wLjAyMTcgMC4zMzI3OTYsLTAuMDY3NSAwLjE1OTE2MywtMC4wNDU4IDAuMjk0MjExLC0wLjA5MTYgbCAwLjA3MjM1LDAuMDk0MSB2IDEuNjA4NTEgcSAwLDAuMTQ5NTIgMC4wMDk2LDAuMjQzNTcgMC4wMTIwNiwwLjA5NCAwLjA0NTgyLDAuMTE4MTcgMC4wMjg5NCwwLjAxOTMgMC4wOTg4NywwLjAxIDAuMDY5OTQsLTAuMDEyMSAwLjE5MjkyNiwtMC4wNjUxIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQ0OSIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA3My43MTM1NzUsMjQzLjE5MTEyIHEgMC4wMjE3LDAuMDE0NSAwLjAxOTI5LDAuMDg0NCAwLDAuMDY5OSAtMC4wMTkyOSwwLjE2MTU4IC0wLjAxNjg4LDAuMDkxNiAtMC4wNDU4MiwwLjE4ODEgLTAuMDI4OTQsMC4wOTY1IC0wLjA1Nzg4LDAuMTYxNTcgaCAtMC4xMDM2OTcgcSAtMC4wMTQ0NywtMC4wOTY1IC0wLjA0MSwtMC4xNjM5OCAtMC4wMjY1MywtMC4wNjc1IC0wLjA2MjcsLTAuMTA2MTEgLTAuMDMzNzYsLTAuMDQxIC0wLjA3NzE3LC0wLjA1NzkgLTAuMDQxLC0wLjAxOTMgLTAuMDg2ODIsLTAuMDE5MyAtMC4wNTMwNiwwIC0wLjEyNTQwMiwwLjA0NTggLTAuMDY5OTQsMC4wNDM0IC0wLjE0NDY5NCwwLjEzOTg3IC0wLjA3NDc2LDAuMDk0IC0wLjE0OTUxNywwLjI0MzU3IC0wLjA3MjM1LDAuMTQ3MSAtMC4xMzAyMjQsMC4zNTIwOSB2IDAuOTQ1MzMgcSAwLDAuMDM2MiAwLjA4OTIzLDAuMDc0OCAwLjA5MTY0LDAuMDM4NiAwLjMxODMyNiwwLjA3MjMgdiAwLjEwMzcgaCAtMS4xMDY5MDkgdiAtMC4xMDM3IHEgMC4xNTkxNjQsLTAuMDM2MiAwLjI0ODM5MiwtMC4wNjk5IDAuMDg5MjMsLTAuMDM2MiAwLjA4OTIzLC0wLjA3NzIgdiAtMS40MDM1MyBxIDAsLTAuMDc5NiAtMC4wMDQ4LC0wLjEzMjY0IC0wLjAwNDgsLTAuMDU1NSAtMC4wMTIwNiwtMC4wODkyIC0wLjAwNzIsLTAuMDMzOCAtMC4wMTkyOSwtMC4wNTMgLTAuMDA5NiwtMC4wMTkzIC0wLjAxOTI5LC0wLjAzMTQgLTAuMDE2ODgsLTAuMDE2OSAtMC4wMzg1OCwtMC4wMjY1IC0wLjAxOTI5LC0wLjAxMjEgLTAuMDUzMDUsLTAuMDE5MyAtMC4wMzEzNSwtMC4wMDcgLTAuMDc3MTcsLTAuMDEgLTAuMDQ1ODIsLTAuMDA1IC0wLjExMzM0NCwtMC4wMSB2IC0wLjA5NjUgcSAwLjE1Njc1MiwtMC4wNDEgMC4zMDYyNjksLTAuMDgyIDAuMTUxOTI5LC0wLjA0MzQgMC4yNzI1MDcsLTAuMTEwOTMgbCAwLjA4NDQsMC4wODQ0IDAuMDMxMzUsMC41NDc0MyBxIDAuMDY1MTEsLTAuMTMyNjQgMC4xMzk4NzEsLTAuMjQ4MzkgMC4wNzcxNywtMC4xMTU3NiAwLjE2Mzk4NywtMC4yMDAxNiAwLjA4NjgyLC0wLjA4NjggMC4xODA4NjcsLTAuMTM1MDUgMC4wOTY0NiwtMC4wNDgyIDAuMjAwMTYsLTAuMDQ4MiAwLjA3NzE3LDAgMC4xNjYzOTksMC4wMTkzIDAuMDg5MjMsMC4wMTkzIDAuMTc4NDU1LDAuMDY5OSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0NTEiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNzUuNDMwNjEyLDI0NS40MTY5OSB2IC0wLjEwMzcgcSAwLjE3MzYzMiwtMC4wNDU4IDAuMjU1NjI2LC0wLjA3OTYgMC4wODE5OSwtMC4wMzM4IDAuMDgxOTksLTAuMDY3NSB2IC0xLjI3NTcyIHEgMCwtMC4xNDcxMSAtMC4wMTY4OCwtMC4yMzg3NCAtMC4wMTY4OCwtMC4wOTE2IC0wLjA1MzA1LC0wLjE0NDcgLTAuMDM2MTcsLTAuMDUzIC0wLjA5NjQ2LC0wLjA3MjQgLTAuMDU3ODgsLTAuMDE5MyAtMC4xNDIyODMsLTAuMDE5MyAtMC4wNzQ3NiwwIC0wLjE2NjM5OCwwLjAzNjIgLTAuMDkxNjQsMC4wMzYyIC0wLjE5Nzc0OCwwLjExNTc1IC0wLjEwMzY5OCwwLjA3OTYgLTAuMjE5NDUzLDAuMjA5ODEgLTAuMTEzMzQzLDAuMTI3ODEgLTAuMjI5MDk5LDAuMzE1OTEgdiAxLjA3MzE1IHEgMCwwLjAzNjIgMC4wODkyMywwLjA3NDggMC4wOTE2NCwwLjAzODYgMC4yNDgzOTIsMC4wNzIzIHYgMC4xMDM3IGggLTEuMDM2OTc0IHYgLTAuMTAzNyBxIDAuMTU5MTYzLC0wLjA0MSAwLjI0ODM5MSwtMC4wNzIzIDAuMDg5MjMsLTAuMDMzOCAwLjA4OTIzLC0wLjA3NDggdiAtMS40NjM4MiBxIDAsLTAuMDk0MSAtMC4wMDcyLC0wLjE0OTUyIC0wLjAwNzIsLTAuMDU1NSAtMC4wNDEsLTAuMDg2OCAtMC4wMzEzNSwtMC4wMzE0IC0wLjA5ODg3LC0wLjA0NTggLTAuMDY3NTIsLTAuMDE0NSAtMC4xOTA1MTQsLTAuMDI4OSB2IC0wLjA5NjUgcSAwLjE2Mzk4NywtMC4wMjY1IDAuMzAzODU3LC0wLjA3NDggMC4xMzk4NzEsLTAuMDUwNiAwLjI3NDkxOSwtMC4xMTgxNiBsIDAuMDg0NDEsMC4wODQ0IDAuMDI2NTMsMC42MDA0OCBxIDAuMTA2MTA5LC0wLjE2MTU3IDAuMjMzOTIyLC0wLjI4Njk3IDAuMTI3ODEzLC0wLjEyNzgyIDAuMjU4MDM4LC0wLjIxNDYzIDAuMTMwMjI0LC0wLjA4OTIgMC4yNTA4MDMsLTAuMTM1MDUgMC4xMjI5OSwtMC4wNDgyIDAuMjE3MDQxLC0wLjA0ODIgMC4xMDM2OTcsMCAwLjIwMDE2LDAuMDMxNCAwLjA5NjQ2LDAuMDMxNCAwLjE2ODgwOSwwLjA5NjUgMC4wNzQ3NiwwLjA2NTEgMC4xMTgxNjcsMC4xNjY0IDAuMDQ1ODIsMC4wOTg5IDAuMDQ1ODIsMC4yMzM5MiB2IDEuNTM2MTcgcSAwLDAuMDMzOCAwLjA3MjM1LDAuMDY3NSAwLjA3NDc2LDAuMDMxNCAwLjI2NTI3MiwwLjA3OTYgdiAwLjEwMzcgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDUzIgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDU5LjUwNzAzNSwyNDguMjE2ODIgcSAtMC4wNzIzNSwwLjAxNjkgLTAuMTE4MTY3LDAuMDMxMyAtMC4wNDU4MiwwLjAxNDUgLTAuMDc0NzYsMC4wMzM4IC0wLjAyODk0LDAuMDE2OSAtMC4wNDU4MiwwLjA0MSAtMC4wMTQ0NywwLjAyMTcgLTAuMDI2NTMsMC4wNTc5IGwgLTAuNjgyNDc0LDEuODMyNzkgcSAtMC4wMjE3LDAuMDUzIC0wLjA2MjcsMC4wOTE2IC0wLjA0MSwwLjAzNjIgLTAuMDg5MjMsMC4wNjAzIC0wLjA0ODIzLDAuMDI2NSAtMC4wOTY0NiwwLjA0MSAtMC4wNDU4MiwwLjAxNDUgLTAuMDc3MTcsMC4wMjE3IGwgLTAuNzk1ODE3LC0yLjA0NzQyIHEgLTAuMDIxNywtMC4wNjc1IC0wLjA4NDQsLTAuMTAxMjkgLTAuMDYyNywtMC4wMzYyIC0wLjE4MzI3OSwtMC4wNjI3IHYgLTAuMTAzNyBoIDAuOTMwODY1IHYgMC4xMDM3IHEgLTAuMDk0MDUsMC4wMTIxIC0wLjE1NDM0MSwwLjAyNDEgLTAuMDU3ODgsMC4wMTIxIC0wLjA5MTY0LDAuMDMxNCAtMC4wMzEzNSwwLjAxNjkgLTAuMDM2MTcsMC4wNDM0IC0wLjAwNDgsMC4wMjY1IDAuMDA5NiwwLjA2NTEgbCAwLjU5MzI0NSwxLjU0NTgxIDAuNTU3MDcyLC0xLjU0NTgxIHEgMC4wMTIwNiwtMC4wMzYyIDAuMDA3MiwtMC4wNjAzIC0wLjAwMjQsLTAuMDI2NSAtMC4wMzEzNSwtMC4wNDM0IC0wLjAyODk0LC0wLjAxOTMgLTAuMDg0NCwtMC4wMzE0IC0wLjA1MzA2LC0wLjAxNDUgLTAuMTQyMjgzLC0wLjAyODkgdiAtMC4xMDM3IGggMC43Nzg5MzYgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDU1IgogICAgICAgICBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6bWlkZGxlO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDYwLjQxMTM3MywyNTAuMTE0NzIgcSAwLjE0NDY5NCwwIDAuMzA2MjY5LC0wLjA3MjMgMC4xNjM5ODYsLTAuMDc0OCAwLjM0NzI2NSwtMC4yMzM5MiB2IC0wLjYyNDYgcSAtMC4yMDI1NzEsMC4wMzM4IC0wLjMzNTIwNywwLjA2NTEgLTAuMTMwMjI1LDAuMDMxMyAtMC4yMTQ2MywwLjA2NTEgLTAuMDg0NDEsMC4wMzE0IC0wLjEzNTA0OCwwLjA2NzUgLTAuMDUwNjQsMC4wMzYyIC0wLjA4OTIzLDAuMDc3MiAtMC4wNjI3LDAuMDY1MSAtMC4xMDEyODYsMC4xNDk1MiAtMC4wMzg1OCwwLjA4MiAtMC4wMzg1OCwwLjE5NTMzIDAsMC4wOTY1IDAuMDI4OTQsMC4xNTY3NSAwLjAyODk0LDAuMDYwMyAwLjA2OTk0LDAuMDk2NSAwLjA0MSwwLjAzMzggMC4wODQ0MSwwLjA0NTggMC4wNDU4MiwwLjAxMjEgMC4wNzcxNywwLjAxMjEgeiBtIDEuMzg0MjM5LDAuMDQzNCBxIC0wLjIwNDk4MywwLjE0MjI5IC0wLjM0MDAzMSwwLjIwNDk5IC0wLjEzMjYzNiwwLjA2NTEgLTAuMjAwMTYsMC4wNjUxIC0wLjA3OTU4LDAgLTAuMTMyNjM2LC0wLjExMDkzIC0wLjA1MzA1LC0wLjExMDk0IC0wLjA1Nzg4LC0wLjMwNjI3IC0wLjEwODUyLDAuMTA4NTIgLTAuMjE3MDQxLDAuMTg4MSAtMC4xMDg1MiwwLjA3OTYgLTAuMjEyMjE3LDAuMTMwMjIgLTAuMTAzNjk4LDAuMDUwNiAtMC4xOTc3NDksMC4wNzQ4IC0wLjA5MTY0LDAuMDI0MSAtMC4xNjg4MSwwLjAyNDEgLTAuMDg2ODIsMCAtMC4xNzg0NTYsLTAuMDI4OSAtMC4wOTE2NCwtMC4wMjg5IC0wLjE2NjM5OCwtMC4wOTE2IC0wLjA3MjM1LC0wLjA2MjcgLTAuMTIwNTc4LC0wLjE2MTU4IC0wLjA0ODIzLC0wLjA5ODkgLTAuMDQ4MjMsLTAuMjM4NzQgMCwtMC4xODMyOCAwLjA2MjcsLTAuMzA2MjcgMC4wNjUxMSwtMC4xMjI5OSAwLjE1NDM0MSwtMC4yMTIyMiAwLjA1Nzg4LC0wLjA1NzkgMC4xMzAyMjQsLTAuMTA4NTIgMC4wNzQ3NiwtMC4wNTMgMC4xOTUzMzcsLTAuMTAxMjggMC4xMjI5OSwtMC4wNDgyIDAuMzA2MjY5LC0wLjA5MTYgMC4xODMyNzksLTAuMDQzNCAwLjQ2MDYwOSwtMC4wODQ0IHYgLTAuMzQwMDMgcSAwLC0wLjA4MiAtMC4wMTkyOSwtMC4xNTE5MyAtMC4wMTkyOSwtMC4wNzIzIC0wLjA2NTExLC0wLjEyMjk5IC0wLjA0NTgyLC0wLjA1MyAtMC4xMjU0MDIsLTAuMDc5NiAtMC4wNzcxNywtMC4wMjg5IC0wLjE5NTMzNywtMC4wMjY1IC0wLjA3NzE3LDAuMDAyIC0wLjE1MTkyOCwwLjAyNjUgLTAuMDc0NzYsMC4wMjQxIC0wLjEzMDIyNSwwLjA2NzUgLTAuMDU1NDcsMC4wNDM0IC0wLjA4NjgyLDAuMTAzNyAtMC4wMzEzNSwwLjA1NzkgLTAuMDI0MTIsMC4xMzAyMyAwLjAwMjQsMC4wMjE3IC0wLjA1MDY0LDAuMDUwNiAtMC4wNTA2NCwwLjAyNjUgLTAuMTIyOTksMC4wNDgyIC0wLjA2OTk0LDAuMDIxNyAtMC4xMzk4NzEsMC4wMzM4IC0wLjA2NzUyLDAuMDEyMSAtMC4wOTY0NiwwLjAwNSBsIC0wLjAzMzc2LC0wLjA5NDEgcSAwLjA1NTQ3LC0wLjEyMDU3IDAuMTY4ODA5LC0wLjIzMTUxIDAuMTEzMzQ0LC0wLjExMDkzIDAuMjU4MDM4LC0wLjE5NTMzIDAuMTQ3MTA1LC0wLjA4NDQgMC4zMDg2OCwtMC4xMzUwNSAwLjE2Mzk4NywtMC4wNTA2IDAuMzE1OTE2LC0wLjA1MDYgMC4yNjUyNzIsMCAwLjQwNzU1NSwwLjEzOTg3IDAuMTQ0Njk0LDAuMTM3NDYgMC4xNDQ2OTQsMC4zODU4NSB2IDEuMzYwMTIgcSAwLDAuMTAxMjkgMC4wMjY1MywwLjE0NDcgMC4wMjY1MywwLjA0MzQgMC4wNjk5NCwwLjA0MzQgMC4wMzM3NiwwIDAuMDg2ODIsLTAuMDEyMSAwLjA1MzA1LC0wLjAxMjEgMC4xNDk1MTcsLTAuMDUzMSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0NTciCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjEuOTc0MDY4LDI1MC4zNTU4OCB2IC0wLjEwMzcgcSAwLjEwMzY5NywtMC4wMTY5IDAuMTczNjMzLC0wLjAzMzggMC4wNjk5NCwtMC4wMTkzIDAuMTEwOTMyLC0wLjAzNjIgMC4wNDEsLTAuMDE5MyAwLjA1Nzg4LC0wLjAzODYgMC4wMTkyOSwtMC4wMTkzIDAuMDE5MjksLTAuMDM4NiB2IC0yLjg3NDU5IHEgMCwtMC4xMDg1MiAtMC4wMTQ0NywtMC4xNjg4MSAtMC4wMTQ0NywtMC4wNjAzIC0wLjA1MzA2LC0wLjA4OTIgLTAuMDM4NTgsLTAuMDMxNCAtMC4xMDM2OTcsLTAuMDQxIC0wLjA2NTExLC0wLjAxMjEgLTAuMTY2Mzk4LC0wLjAyNDEgdiAtMC4wOTY1IHEgMC4xNzM2MzIsLTAuMDMzOCAwLjMxODMyNiwtMC4wNzQ4IDAuMTQ0Njk0LC0wLjA0MSAwLjI5NDIxMiwtMC4xMTgxNyBsIDAuMDg2ODIsMC4wODIgdiAzLjQwNTEzIHEgMCwwLjAzNjIgMC4wODE5OSwwLjA3NDggMC4wODE5OSwwLjAzODYgMC4yNzk3NDIsMC4wNzIzIHYgMC4xMDM3IHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQ1OSIKICAgICAgICAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3RleHQtYW5jaG9yOm1pZGRsZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSA2NS43NDgxNywyNTAuMTU4MTMgcSAtMC4wODkyMywwLjA1NzkgLTAuMTcxMjIxLDAuMTA4NTIgLTAuMDgxOTksMC4wNDgyIC0wLjE1MTkyOSwwLjA4NDQgLTAuMDY5OTQsMC4wMzYyIC0wLjEyMjk5LDAuMDU1NSAtMC4wNTMwNSwwLjAyMTcgLTAuMDgxOTksMC4wMjE3IC0wLjA4NDQxLDAgLTAuMTM3NDU5LC0wLjExMDkzIC0wLjA1MzA2LC0wLjExMzM1IC0wLjA2NzUyLC0wLjM2MTc0IC0wLjE0OTUxNywwLjE0OTUyIC0wLjI3NDkxOSwwLjI0MzU3IC0wLjEyMjk5LDAuMDkxNiAtMC4yMjkwOTksMC4xNDIyOCAtMC4xMDM2OTcsMC4wNTA2IC0wLjE5MjkyNSwwLjA2NzUgLTAuMDg2ODIsMC4wMTkzIC0wLjE2Mzk4NiwwLjAxOTMgLTAuMTEzMzQ0LDAgLTAuMjE3MDQxLC0wLjAzMTQgLTAuMTAzNjk4LC0wLjAzMTQgLTAuMTgzMjgsLTAuMTEzMzUgLTAuMDc5NTgsLTAuMDg0NCAtMC4xMjc4MTMsLTAuMjI5MDkgLTAuMDQ1ODIsLTAuMTQ0NyAtMC4wNDU4MiwtMC4zNzEzOSB2IC0xLjA0MTc5IHEgMCwtMC4xMTU3NiAtMC4wMDcyLC0wLjE3ODQ2IC0wLjAwNzIsLTAuMDY1MSAtMC4wMzg1OSwtMC4wOTY1IC0wLjAyODk0LC0wLjAzMzggLTAuMDkxNjQsLTAuMDQ1OCAtMC4wNjI3LC0wLjAxMjEgLTAuMTczNjMzLC0wLjAyNDEgdiAtMC4wOTY1IHEgMC4wODY4MiwtMC4wMSAwLjE2MTU3NSwtMC4wMjQxIDAuMDc3MTcsLTAuMDE0NSAwLjE0NzEwNiwtMC4wMzM4IDAuMDcyMzUsLTAuMDE5MyAwLjE0NDY5NCwtMC4wNDM0IDAuMDcyMzUsLTAuMDI2NSAwLjE1MTkyOSwtMC4wNTc5IGwgMC4wNjc1MiwwLjA5NCB2IDEuNDE1NTkgcSAwLDAuMTY4ODEgMC4wMjQxMiwwLjI4MjE1IDAuMDI2NTMsMC4xMTMzNCAwLjA3MjM1LDAuMTgwODcgMC4wNDgyMywwLjA2NzUgMC4xMTU3NTYsMC4wOTY1IDAuMDY5OTQsMC4wMjg5IDAuMTU2NzUxLDAuMDI4OSAwLjA3NzE3LDAgMC4xNTY3NTIsLTAuMDIxNyAwLjA4MTk5LC0wLjAyNDEgMC4xNjYzOTgsLTAuMDcyNCAwLjA4NjgyLC0wLjA1MDYgMC4xODA4NjgsLTAuMTI3ODEgMC4wOTQwNSwtMC4wNzk2IDAuMjAwMTYsLTAuMTkyOTMgdiAtMS4wODI3OSBxIDAsLTAuMTA4NTIgLTAuMDEyMDYsLTAuMTczNjQgLTAuMDA5NiwtMC4wNjUxIC0wLjA0NTgyLC0wLjEwMTI4IC0wLjAzNjE3LC0wLjAzNjIgLTAuMTAzNjk3LC0wLjA1MDYgLTAuMDY1MTEsLTAuMDE0NSAtMC4xNzYwNDQsLTAuMDE5MyB2IC0wLjA5NjUgcSAwLjE3MzYzMiwtMC4wMjE3IDAuMzMyNzk2LC0wLjA2NzUgMC4xNTkxNjMsLTAuMDQ1OCAwLjI5NDIxMSwtMC4wOTE2IGwgMC4wNzIzNSwwLjA5NCB2IDEuNjA4NTEgcSAwLDAuMTQ5NTIgMC4wMDk2LDAuMjQzNTcgMC4wMTIwNiwwLjA5NDEgMC4wNDU4MiwwLjExODE3IDAuMDI4OTQsMC4wMTkzIDAuMDk4ODcsMC4wMSAwLjA2OTk0LC0wLjAxMjEgMC4xOTI5MjYsLTAuMDY1MSB6IiAvPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0NjEiCiAgICAgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjptaWRkbGU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gNjYuOTgwNDgxLDI0OC4yOTM5OSBxIC0wLjEyNTQwMSwwIC0wLjIzMTUxLDAuMDQ4MiAtMC4xMDM2OTcsMC4wNDgyIC0wLjE4NTY5MSwwLjEzNzQ2IC0wLjA3OTU4LDAuMDg2OCAtMC4xMzUwNDcsMC4yMDk4MSAtMC4wNTMwNiwwLjEyMDU4IC0wLjA3NDc2LDAuMjY3NjggaCAxLjAzMjE1MSBxIDAuMDU1NDcsMCAwLjA3MjM1LC0wLjAxNjkgMC4wMTkyOSwtMC4wMTkzIDAuMDE5MjksLTAuMDY5OSAwLC0wLjA2NTEgLTAuMDE5MjksLTAuMTYxNTggLTAuMDE2ODgsLTAuMDk4OSAtMC4wNzIzNSwtMC4xOTA1MSAtMC4wNTMwNiwtMC4wOTQxIC0wLjE1MTkyOSwtMC4xNTkxNyAtMC4wOTY0NiwtMC4wNjUxIC0wLjI1MzIxNSwtMC4wNjUxIHogbSAwLjg5MjI4LDAuNzE4NjUgcSAtMC4wNDM0MSwwLjA0ODIgLTAuMTE1NzU1LDAuMDg5MiAtMC4wNzIzNSwwLjA0MSAtMC4xNDk1MTcsMC4wNzIzIGggLTEuMjY4NDg0IHEgMC4wMDI0LDAuMTg4MTEgMC4wNTA2NCwwLjM1OTMzIDAuMDUwNjQsMC4xNjg4MSAwLjE0MjI4MiwwLjI5OTAzIDAuMDk0MDUsMC4xMjc4MSAwLjIyNDI3NiwwLjIwNDk4IDAuMTMyNjM2LDAuMDc3MiAwLjI5NjYyMywwLjA3NzIgMC4wNzQ3NiwwIDAuMTQ0Njk0LC0wLjAxIDAuMDcyMzUsLTAuMDEgMC4xNTQzNCwtMC4wNDM0IDAuMDgxOTksLTAuMDMzOCAwLjE4MDg2NywtMC4wOTg5IDAuMTAxMjg2LC0wLjA2NTEgMC4yMzYzMzQsLTAuMTc2MDUgMC4wMzEzNSwwLjAxNjkgMC4wNTMwNSwwLjA0ODIgMC4wMjQxMiwwLjAzMTQgMC4wMzYxNywwLjA1MDYgLTAuMTYxNTc1LDAuMTc2MDQgLTAuMjg0NTY1LDAuMjg0NTYgLTAuMTIwNTc4LDAuMTA2MTEgLTAuMjI5MDk5LDAuMTYzOTkgLTAuMTA2MTA5LDAuMDU3OSAtMC4yMTIyMTgsMC4wNzQ4IC0wLjEwMzY5NywwLjAxOTMgLTAuMjI2Njg3LDAuMDE5MyAtMC4xODU2OTEsMCAtMC4zNTQ1LC0wLjA3OTYgLTAuMTY2Mzk5LC0wLjA3OTYgLTAuMjk0MjEyLC0wLjIyNDI4IC0wLjEyNzgxMywtMC4xNDcxIC0wLjIwNDk4MywtMC4zNTIwOSAtMC4wNzQ3NiwtMC4yMDczOSAtMC4wNzQ3NiwtMC40NjMwMiAwLC0wLjE2MTU3IDAuMDM2MTcsLTAuMzE4MzMgMC4wMzYxNywtMC4xNTY3NSAwLjEwMzY5OCwtMC4yOTY2MiAwLjA2OTk0LC0wLjEzOTg3IDAuMTY4ODA5LC0wLjI1ODA0IDAuMDk4ODcsLTAuMTE4MTYgMC4yMjQyNzYsLTAuMjA0OTggMC4wNTMwNSwtMC4wMzYyIDAuMTE4MTY3LC0wLjA2OTkgMC4wNjc1MiwtMC4wMzYyIDAuMTM5ODcxLC0wLjA2MjcgMC4wNzIzNSwtMC4wMjY1IDAuMTQyMjgyLC0wLjA0MSAwLjA3MjM1LC0wLjAxNjkgMC4xMzc0NTksLTAuMDE2OSAwLjE1Njc1MiwwIDAuMjc5NzQyLDAuMDQzNCAwLjEyMjk5LDAuMDQzNCAwLjIxNDYzLDAuMTE4MTYgMC4wOTE2NCwwLjA3MjQgMC4xNTQzNCwwLjE3MTIyIDAuMDYyNywwLjA5NjUgMC4xMDEyODYsMC4yMDQ5OSAwLjA0MSwwLjEwODUyIDAuMDU3ODgsMC4yMjE4NiAwLjAxNjg4LDAuMTEwOTMgMC4wMTY4OCwwLjIxMjIyIHoiIC8+CiAgICA8L2c+CiAgICA8cGF0aAogICAgICAgaWQ9InJlY3QxMjQzIgogICAgICAgZD0iTSAyLjYyMDU3NDcsMjIzLjA4NzE2IEggNDUuNDMzODIyIHYgOC45NjY3OCBIIDIuNjIwNTc0NyBaIgogICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDojZmZkZGRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICA8ZwogICAgICAgaWQ9InRleHQ4MjktNi0zLTYtOS0zIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjguNDY2NjY2MjJweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OidHZW50aXVtIFBsdXMnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0dlbnRpdW0gUGx1cyc7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgYXJpYS1sYWJlbD0iZ3VhcmQiPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDE0NjUiCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgZD0ibSAxNi43MTYwMTgsMjI3LjI2MDQ4IHEgMCwtMC4yMTkxMSAtMC4wNzQ0MSwtMC40MTM0MSAtMC4wNzAyOCwtMC4xOTg0NCAtMC4yMTQ5NzQsLTAuMzQzMTMgLTAuMTQwNTYsLTAuMTQ4ODMgLTAuMzU1NTM0LC0wLjIzMTUxIC0wLjIxMDg0LC0wLjA4NjggLTAuNDg3ODI2LC0wLjA4NjggLTAuMTAzMzUzLDAgLTAuMjMxNTEsMC4wNTM4IC0wLjEyNDAyNCwwLjA1MzcgLTAuMjM1NjQ1LDAuMTU3MDkgLTAuMTExNjIxLDAuMTAzMzYgLTAuMTg2MDM1LDAuMjYwNDUgLTAuMDc0NDEsMC4xNTcxIC0wLjA3NDQxLDAuMzU5NjcgMCwwLjIxOTExIDAuMDY2MTUsMC40MTc1NSAwLjA3MDI4LDAuMTk0MyAwLjIwNjcwNiwwLjMzODk5IDAuMTQwNTYsMC4xNDQ3IDAuMzUxMzk5LDAuMjMxNTEgMC4yMTQ5NzQsMC4wODI3IDAuNTA4NDk2LDAuMDgyNyAwLjExOTg5LDAgMC4yNDgwNDcsLTAuMDQ5NiAwLjEzMjI5MiwtMC4wNTM4IDAuMjM1NjQ1LC0wLjE1NzEgMC4xMDc0ODcsLTAuMTA3NDkgMC4xNzM2MzMsLTAuMjYwNDUgMC4wNzAyOCwtMC4xNTI5NiAwLjA3MDI4LC0wLjM1OTY3IHogbSAtMC43MTEwNjgsMi40OTcwMSBxIC0wLjE1NzA5NiwtMC4wMTY1IC0wLjI4OTM4OCwtMC4wMzcyIC0wLjEzMjI5MiwtMC4wMjA3IC0wLjI0ODA0NywtMC4wNDU1IC0wLjI5NzY1NiwwLjE2MTIzIC0wLjQ3MTI4OSwwLjI4OTM4IC0wLjE2OTQ5OSwwLjEyODE2IC0wLjI1NjMxNSwwLjIyNzM4IC0wLjA4NjgyLDAuMTAzMzUgLTAuMTExNjIxLDAuMTg2MDQgLTAuMDIwNjcsMC4wODI3IC0wLjAyMDY3LDAuMTQ4ODIgMCwwLjE3MzY0IDAuMTE1NzU1LDAuMzI2NiAwLjExNTc1NiwwLjE1NzA5IDAuMzEwMDU5LDAuMjY4NzIgMC4xOTQzMDMsMC4xMTU3NSAwLjQ1MDYxOCwwLjE4MTkgMC4yNTYzMTYsMC4wNzAzIDAuNTM3NDM1LDAuMDcwMyAwLjI3Njk4NiwwIDAuNTA0MzYyLC0wLjA3NDQgMC4yMjczNzcsLTAuMDc0NCAwLjM4ODYwNywtMC4yMDY3IDAuMTYxMjMxLC0wLjEyODE2IDAuMjQ4MDQ3LC0wLjMxMDA2IDAuMDkwOTUsLTAuMTc3NzcgMC4wOTA5NSwtMC4zOTI3NCAwLC0wLjExNTc2IC0wLjA1Mzc0LC0wLjIxNDk4IC0wLjA1Mzc0LC0wLjA5NTEgLTAuMTk0MzAzLC0wLjE3MzYzIC0wLjE0MDU2LC0wLjA3ODUgLTAuMzg0NDczLC0wLjE0MDU2IC0wLjIzOTc3OSwtMC4wNjIgLTAuNjE1OTgzLC0wLjEwMzM1IHogbSAxLjI4OTg0NCwtMi42NjY1MSBxIDAsMC4zMTgzMyAtMC4xNDQ2OTQsMC41ODI5MSAtMC4xNDA1NiwwLjI2MDQ1IC0wLjM3MjA3MSwwLjQ1MDYyIC0wLjIzMTUxLDAuMTg2MDQgLTAuNTI1MDMyLDAuMjkzNTIgLTAuMjkzNTIyLDAuMTAzMzYgLTAuNTk1MzEzLDAuMTAzMzYgaCAtMC4wMTY1NCBxIC0wLjE5ODQzOCwwLjE2NTM2IC0wLjI3Mjg1MiwwLjI3Njk4IC0wLjA3NDQxLDAuMTA3NDkgLTAuMDc0NDEsMC4xMzIzIDAsMC4wNDk2IDAuMDQxMzQsMC4wOTkyIDAuMDQ1NDgsMC4wNDU1IDAuMTYxMjMxLDAuMDkxIDAuMTE5ODg5LDAuMDQxMyAwLjMyNjU5NSwwLjA4NjggMC4yMDY3MDYsMC4wNDEzIDAuNTI5MTY3LDAuMDc4NiAwLjQ1MDYxOCwwLjA0OTYgMC43NDQxNCwwLjE0ODgzIDAuMjkzNTIyLDAuMDk5MiAwLjQ2NzE1NSwwLjIzMTUxIDAuMTczNjMzLDAuMTI4MTYgMC4yMzk3NzksMC4yNzY5OCAwLjA3MDI4LDAuMTQ4ODMgMC4wNzAyOCwwLjI5MzUzIDAsMC4yMjczNyAtMC4wODY4MiwwLjQyOTk0IC0wLjA4NjgyLDAuMjA2NzEgLTAuMjM1NjQ0LDAuMzgwMzQgLTAuMTQ4ODI4LDAuMTczNjMgLTAuMzUxNCwwLjMxNDE5IC0wLjIwMjU3MiwwLjE0MDU2IC0wLjQzNDA4MiwwLjIzOTc4IC0wLjIzMTUxLDAuMDk5MiAtMC40Nzk1NTcsMC4xNTI5NyAtMC4yNDgwNDcsMC4wNTM3IC0wLjQ5MTk2LDAuMDUzNyAtMC4xOTQzMDMsMCAtMC40MDEwMDksLTAuMDI4OSAtMC4yMDY3MDYsLTAuMDI0OCAtMC40MDkyNzcsLTAuMDgyNyAtMC4yMDI1NzIsLTAuMDU3OSAtMC4zODQ0NzMsLTAuMTQ4ODMgLTAuMTc3NzY3LC0wLjA4NjggLTAuMzE0MTkzLC0wLjIxNDk3IC0wLjEzNjQyNSwtMC4xMjQwMyAtMC4yMTkxMDgsLTAuMjg1MjYgLTAuMDc4NTUsLTAuMTU3MDkgLTAuMDc4NTUsLTAuMzU5NjcgMCwtMC4xMDc0OCAwLjAzNzIxLC0wLjIyNzM3IDAuMDQxMzQsLTAuMTE1NzYgMC4xNjEyMzEsLTAuMjUyMTggMC4xMTk4ODksLTAuMTM2NDMgMC4zMzQ4NjMsLTAuMjkzNTMgMC4yMTQ5NzQsLTAuMTU3MDkgMC41NzA1MDgsLTAuMzQ3MjYgLTAuMjY4NzE4LC0wLjA5NTEgLTAuMzcyMDcxLC0wLjIxNDk4IC0wLjEwMzM1MywtMC4xMTk4OCAtMC4xMDMzNTMsLTAuMjQzOTEgMCwtMC4wMzMxIDAuMDIwNjcsLTAuMDg2OCAwLjAyMDY3LC0wLjA1NzkgMC4wODI2OCwtMC4xMzY0MyAwLjA2NjE1LC0wLjA4MjcgMC4xODE5MDEsLTAuMTg2MDQgMC4xMTk4OSwtMC4xMDMzNSAwLjMxMDA1OSwtMC4yMzU2NCAtMC4yMTA4NCwtMC4wNTc5IC0wLjM4NDQ3MywtMC4xNjUzNiAtMC4xNjk0OTgsLTAuMTExNjMgLTAuMjkzNTIyLC0wLjI2NDU5IC0wLjExOTg4OSwtMC4xNTcwOSAtMC4xOTAxNjksLTAuMzUxNCAtMC4wNjYxNSwtMC4xOTg0MyAtMC4wNjYxNSwtMC40Mjk5NSAwLC0wLjMwMTc5IDAuMTM2NDI2LC0wLjU3MDUgMC4xMzY0MjYsLTAuMjcyODUgMC4zNTk2NjgsLTAuNDcxMjkgMC4yMjMyNDIsLTAuMjAyNTcgMC41MDg0OTYsLTAuMzE4MzMgMC4yODUyNTQsLTAuMTE5ODkgMC41ODcwNDQsLTAuMTE5ODkgMC4yNDgwNDcsMCAwLjQ2MzAyMSwwLjA3MDMgMC4yMTkxMDgsMC4wNzAzIDAuMzk2ODc1LDAuMTk4NDQgMC4yMTQ5NzQsLTAuMDIwNyAwLjM4ODYwNywtMC4wNTM3IDAuMTczNjMyLC0wLjAzMzEgMC4zMTAwNTgsLTAuMDcwMyAwLjE0MDU2LC0wLjAzNzIgMC4yNDgwNDcsLTAuMDc0NCAwLjEwNzQ4NywtMC4wMzcyIDAuMTk0MzAzLC0wLjA3MDMgbCAwLjA4MjY4LDAuMTI0MDMgcSAtMC4wNDk2MSwwLjExNTc1IC0wLjA5NTA4LDAuMjE0OTcgLTAuMDQ1NDcsMC4wOTUxIC0wLjE0MDU2LDAuMTk4NDQgLTAuMTU3MDk2LDAuMDI4OSAtMC4zMTAwNTgsMC4wNDU1IC0wLjE0ODgyOCwwLjAxNjUgLTAuMzM4OTk4LDAuMDI0OCAwLjEwNzQ4NywwLjE1NzA5IDAuMTY1MzY1LDAuMzM0ODYgMC4wNjIwMSwwLjE3Nzc3IDAuMDYyMDEsMC4zNzYyIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQ2NyIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDIyLjQxNjk2MSwyMjkuNDAxOTUgcSAtMC4xNTI5NjIsMC4wOTkyIC0wLjI5MzUyMiwwLjE4NjA0IC0wLjE0MDU2LDAuMDgyNyAtMC4yNjA0NDksMC4xNDQ2OSAtMC4xMTk4ODksMC4wNjIgLTAuMjEwODQsMC4wOTUxIC0wLjA5MDk1LDAuMDM3MiAtMC4xNDA1NiwwLjAzNzIgLTAuMTQ0Njk0LDAgLTAuMjM1NjQ0LC0wLjE5MDE2IC0wLjA5MDk1LC0wLjE5NDMxIC0wLjExNTc1NiwtMC42MjAxMiAtMC4yNTYzMTUsMC4yNTYzMSAtMC40NzEyODksMC40MTc1NCAtMC4yMTA4MzksMC4xNTcxIC0wLjM5Mjc0LDAuMjQzOTIgLTAuMTc3NzY3LDAuMDg2OCAtMC4zMzA3MywwLjExNTc1IC0wLjE0ODgyOCwwLjAzMzEgLTAuMjgxMTE5LDAuMDMzMSAtMC4xOTQzMDQsMCAtMC4zNzIwNzEsLTAuMDUzNyAtMC4xNzc3NjcsLTAuMDUzNyAtMC4zMTQxOTIsLTAuMTk0MyAtMC4xMzY0MjYsLTAuMTQ0NyAtMC4yMTkxMDgsLTAuMzkyNzQgLTAuMDc4NTUsLTAuMjQ4MDUgLTAuMDc4NTUsLTAuNjM2NjYgdiAtMS43ODU5MyBxIDAsLTAuMTk4NDQgLTAuMDEyNCwtMC4zMDU5MyAtMC4wMTI0LC0wLjExMTYyIC0wLjA2NjE1LC0wLjE2NTM2IC0wLjA0OTYxLC0wLjA1NzkgLTAuMTU3MDk2LC0wLjA3ODYgLTAuMTA3NDg3LC0wLjAyMDcgLTAuMjk3NjU2LC0wLjA0MTMgdiAtMC4xNjUzNyBxIDAuMTQ4ODI4LC0wLjAxNjUgMC4yNzY5ODUsLTAuMDQxMyAwLjEzMjI5MiwtMC4wMjQ4IDAuMjUyMTgxLC0wLjA1NzkgMC4xMjQwMjQsLTAuMDMzMSAwLjI0ODA0NywtMC4wNzQ0IDAuMTI0MDI0LC0wLjA0NTUgMC4yNjA0NDksLTAuMDk5MiBsIDAuMTE1NzU2LDAuMTYxMjMgdiAyLjQyNjczIHEgMCwwLjI4OTM5IDAuMDQxMzQsMC40ODM2OSAwLjA0NTQ3LDAuMTk0MyAwLjEyNDAyMywwLjMxMDA2IDAuMDgyNjgsMC4xMTU3NSAwLjE5ODQzOCwwLjE2NTM2IDAuMTE5ODg5LDAuMDQ5NiAwLjI2ODcxNywwLjA0OTYgMC4xMzIyOTIsMCAwLjI2ODcxNywtMC4wMzcyIDAuMTQwNTYsLTAuMDQxMyAwLjI4NTI1NCwtMC4xMjQwMiAwLjE0ODgyOCwtMC4wODY4IDAuMzEwMDU5LC0wLjIxOTExIDAuMTYxMjMsLTAuMTM2NDIgMC4zNDMxMzEsLTAuMzMwNzMgdiAtMS44NTYyMSBxIDAsLTAuMTg2MDQgLTAuMDIwNjcsLTAuMjk3NjYgLTAuMDE2NTQsLTAuMTExNjIgLTAuMDc4NTUsLTAuMTczNjMgLTAuMDYyMDEsLTAuMDYyIC0wLjE3Nzc2NywtMC4wODY4IC0wLjExMTYyMSwtMC4wMjQ4IC0wLjMwMTc5MSwtMC4wMzMxIHYgLTAuMTY1MzcgcSAwLjI5NzY1NywtMC4wMzcyIDAuNTcwNTA4LC0wLjExNTc1IDAuMjcyODUyLC0wLjA3ODYgMC41MDQzNjIsLTAuMTU3MSBsIDAuMTI0MDI0LDAuMTYxMjMgdiAyLjc1NzQ2IHEgMCwwLjI1NjMxIDAuMDE2NTQsMC40MTc1NCAwLjAyMDY3LDAuMTYxMjMgMC4wNzg1NSwwLjIwMjU3IDAuMDQ5NjEsMC4wMzMxIDAuMTY5NDk5LDAuMDE2NSAwLjExOTg4OSwtMC4wMjA3IDAuMzMwNzI5LC0wLjExMTYyIHoiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMTQ2OSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICBkPSJtIDIzLjkzNDE4MSwyMjkuMzI3NTQgcSAwLjI0ODA0NywwIDAuNTI1MDMyLC0wLjEyNDAyIDAuMjgxMTIsLTAuMTI4MTYgMC41OTUzMTMsLTAuNDAxMDEgdiAtMS4wNzA3NCBxIC0wLjM0NzI2NiwwLjA1NzkgLTAuNTc0NjQyLDAuMTExNjIgLTAuMjIzMjQyLDAuMDUzOCAtMC4zNjc5MzYsMC4xMTE2MiAtMC4xNDQ2OTQsMC4wNTM4IC0wLjIzMTUxMSwwLjExNTc2IC0wLjA4NjgyLDAuMDYyIC0wLjE1Mjk2MiwwLjEzMjI5IC0wLjEwNzQ4NywwLjExMTYyIC0wLjE3MzYzMywwLjI1NjMyIC0wLjA2NjE1LDAuMTQwNTYgLTAuMDY2MTUsMC4zMzQ4NiAwLDAuMTY1MzYgMC4wNDk2MSwwLjI2ODcyIDAuMDQ5NjEsMC4xMDMzNSAwLjExOTg4OSwwLjE2NTM2IDAuMDcwMjgsMC4wNTc5IDAuMTQ0Njk0LDAuMDc4NiAwLjA3ODU1LDAuMDIwNyAwLjEzMjI5MiwwLjAyMDcgeiBtIDIuMzcyOTgxLDAuMDc0NCBxIC0wLjM1MTM5OSwwLjI0MzkyIC0wLjU4MjkxLDAuMzUxNCAtMC4yMjczNzYsMC4xMTE2MiAtMC4zNDMxMzEsMC4xMTE2MiAtMC4xMzY0MjYsMCAtMC4yMjczNzcsLTAuMTkwMTYgLTAuMDkwOTUsLTAuMTkwMTcgLTAuMDk5MjIsLTAuNTI1MDQgLTAuMTg2MDM1LDAuMTg2MDQgLTAuMzcyMDcxLDAuMzIyNDYgLTAuMTg2MDM1LDAuMTM2NDMgLTAuMzYzODAyLDAuMjIzMjUgLTAuMTc3NzY3LDAuMDg2OCAtMC4zMzg5OTcsMC4xMjgxNSAtMC4xNTcwOTYsMC4wNDEzIC0wLjI4OTM4OCwwLjA0MTMgLTAuMTQ4ODI4LDAgLTAuMzA1OTI1LC0wLjA0OTYgLTAuMTU3MDk2LC0wLjA0OTYgLTAuMjg1MjUzLC0wLjE1NzEgLTAuMTI0MDI0LC0wLjEwNzQ5IC0wLjIwNjcwNiwtMC4yNzY5OSAtMC4wODI2OCwtMC4xNjk1IC0wLjA4MjY4LC0wLjQwOTI3IDAsLTAuMzE0MiAwLjEwNzQ4NywtMC41MjUwNCAwLjExMTYyMSwtMC4yMTA4NCAwLjI2NDU4MywtMC4zNjM4IDAuMDk5MjIsLTAuMDk5MiAwLjIyMzI0MiwtMC4xODYwMyAwLjEyODE1OCwtMC4wOTEgMC4zMzQ4NjMsLTAuMTczNjQgMC4yMTA4NCwtMC4wODI3IDAuNTI1MDMzLC0wLjE1NzA5IDAuMzE0MTkzLC0wLjA3NDQgMC43ODk2MTYsLTAuMTQ0NyB2IC0wLjU4MjkxIHEgMCwtMC4xNDA1NiAtMC4wMzMwNywtMC4yNjA0NSAtMC4wMzMwNywtMC4xMjQwMiAtMC4xMTE2MjEsLTAuMjEwODQgLTAuMDc4NTUsLTAuMDkxIC0wLjIxNDk3NCwtMC4xMzY0MiAtMC4xMzIyOTIsLTAuMDQ5NiAtMC4zMzQ4NjQsLTAuMDQ1NSAtMC4xMzIyOTEsMC4wMDQgLTAuMjYwNDQ5LDAuMDQ1NSAtMC4xMjgxNTcsMC4wNDEzIC0wLjIyMzI0MiwwLjExNTc1IC0wLjA5NTA5LDAuMDc0NCAtMC4xNDg4MjgsMC4xNzc3NyAtMC4wNTM3NCwwLjA5OTIgLTAuMDQxMzQsMC4yMjMyNCAwLjAwNDEsMC4wMzcyIC0wLjA4NjgyLDAuMDg2OCAtMC4wODY4MiwwLjA0NTUgLTAuMjEwODM5LDAuMDgyNyAtMC4xMTk4OSwwLjAzNzIgLTAuMjM5Nzc5LDAuMDU3OSAtMC4xMTU3NTUsMC4wMjA3IC0wLjE2NTM2NSwwLjAwOCBsIC0wLjA1Nzg4LC0wLjE2MTIzIHEgMC4wOTUwOCwtMC4yMDY3MSAwLjI4OTM4OCwtMC4zOTY4OCAwLjE5NDMwMywtMC4xOTAxNyAwLjQ0MjM1LC0wLjMzNDg2IDAuMjUyMTgxLC0wLjE0NDcgMC41MjkxNjcsLTAuMjMxNTEgMC4yODExMTksLTAuMDg2OCAwLjU0MTU2OSwtMC4wODY4IDAuNDU0NzUyLDAgMC42OTg2NjUsMC4yMzk3OCAwLjI0ODA0NywwLjIzNTY0IDAuMjQ4MDQ3LDAuNjYxNDYgdiAyLjMzMTY0IHEgMCwwLjE3MzYzIDAuMDQ1NDcsMC4yNDgwNSAwLjA0NTQ3LDAuMDc0NCAwLjExOTg4OSwwLjA3NDQgMC4wNTc4OCwwIDAuMTQ4ODI5LC0wLjAyMDcgMC4wOTA5NSwtMC4wMjA3IDAuMjU2MzE1LC0wLjA5MDkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDcxIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMjkuNTQ4MzA5LDIyNS45MjUxNiBxIDAuMDM3MjEsMC4wMjQ4IDAuMDMzMDcsMC4xNDQ3IDAsMC4xMTk4OSAtMC4wMzMwNywwLjI3Njk4IC0wLjAyODk0LDAuMTU3MSAtMC4wNzg1NSwwLjMyMjQ2IC0wLjA0OTYxLDAuMTY1MzcgLTAuMDk5MjIsMC4yNzY5OSBoIC0wLjE3Nzc2NyBxIC0wLjAyNDgxLC0wLjE2NTM2IC0wLjA3MDI4LC0wLjI4MTEyIC0wLjA0NTQ3LC0wLjExNTc1IC0wLjEwNzQ4NywtMC4xODE5IC0wLjA1Nzg4LC0wLjA3MDMgLTAuMTMyMjkyLC0wLjA5OTIgLTAuMDcwMjgsLTAuMDMzMSAtMC4xNDg4MjgsLTAuMDMzMSAtMC4wOTA5NSwwIC0wLjIxNDk3NCwwLjA3ODYgLTAuMTE5ODg5LDAuMDc0NCAtMC4yNDgwNDYsMC4yMzk3NyAtMC4xMjgxNTgsMC4xNjEyNCAtMC4yNTYzMTYsMC40MTc1NSAtMC4xMjQwMjMsMC4yNTIxOCAtMC4yMjMyNDIsMC42MDM1OCB2IDEuNjIwNTcgcSAwLDAuMDYyIDAuMTUyOTYyLDAuMTI4MTYgMC4xNTcwOTcsMC4wNjYyIDAuNTQ1NzA0LDAuMTI0MDIgdiAwLjE3Nzc3IGggLTEuODk3NTU5IHYgLTAuMTc3NzcgcSAwLjI3Mjg1MiwtMC4wNjIgMC40MjU4MTQsLTAuMTE5ODggMC4xNTI5NjIsLTAuMDYyIDAuMTUyOTYyLC0wLjEzMjMgdiAtMi40MDYwNSBxIDAsLTAuMTM2NDMgLTAuMDA4MywtMC4yMjczOCAtMC4wMDgzLC0wLjA5NTEgLTAuMDIwNjcsLTAuMTUyOTYgLTAuMDEyNCwtMC4wNTc5IC0wLjAzMzA3LC0wLjA5MDkgLTAuMDE2NTQsLTAuMDMzMSAtMC4wMzMwNywtMC4wNTM3IC0wLjAyODk0LC0wLjAyODkgLTAuMDY2MTUsLTAuMDQ1NSAtMC4wMzMwNywtMC4wMjA3IC0wLjA5MDk1LC0wLjAzMzEgLTAuMDUzNzQsLTAuMDEyNCAtMC4xMzIyOTIsLTAuMDE2NSAtMC4wNzg1NSwtMC4wMDggLTAuMTk0MzAzLC0wLjAxNjUgdiAtMC4xNjUzNyBxIDAuMjY4NzE4LC0wLjA3MDMgMC41MjUwMzMsLTAuMTQwNTYgMC4yNjA0NDksLTAuMDc0NCAwLjQ2NzE1NSwtMC4xOTAxNyBsIDAuMTQ0Njk0LDAuMTQ0NyAwLjA1Mzc0LDAuOTM4NDQgcSAwLjExMTYyMSwtMC4yMjczOCAwLjIzOTc3OSwtMC40MjU4MSAwLjEzMjI5MSwtMC4xOTg0NCAwLjI4MTExOSwtMC4zNDMxNCAwLjE0ODgyOSwtMC4xNDg4MiAwLjMxMDA1OSwtMC4yMzE1MSAwLjE2NTM2NSwtMC4wODI3IDAuMzQzMTMxLC0wLjA4MjcgMC4xMzIyOTIsMCAwLjI4NTI1NCwwLjAzMzEgMC4xNTI5NjMsMC4wMzMxIDAuMzA1OTI1LDAuMTE5ODkgeiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgxNDczIgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAgICAgICAgIGQ9Im0gMzQuMDY2ODk1LDIyOS4zOTM2OSBxIC0wLjE5MDE2OSwwLjEyODE1IC0wLjMzODk5NywwLjIxOTEgLTAuMTQ0Njk0LDAuMDg2OCAtMC4yNTYzMTUsMC4xNDA1NiAtMC4xMDc0ODcsMC4wNTc5IC0wLjE4NjAzNSwwLjA4MjcgLTAuMDc4NTUsMC4wMjg5IC0wLjEzNjQyNiwwLjAyODkgLTAuMTM2NDI2LDAgLTAuMjIzMjQyLC0wLjE4NjAzIC0wLjA4NjgyLC0wLjE4NjA0IC0wLjExNTc1NiwtMC42MzY2NSAtMC4xNTcwOTYsMC4xOTAxNyAtMC4zMTQxOTIsMC4zNDMxMyAtMC4xNTI5NjIsMC4xNTI5NiAtMC4zMTgzMjcsMC4yNjA0NSAtMC4xNjEyMzEsMC4xMDMzNSAtMC4zNDMxMzIsMC4xNjEyMyAtMC4xODE5MDEsMC4wNTc5IC0wLjM5Mjc0LDAuMDU3OSAtMC4yMzE1MTEsMCAtMC40NzU0MjQsLTAuMTMyMjkgLTAuMjQzOTEyLC0wLjEzNjQyIC0wLjQ1MDYxOCwtMC4zODg2IC0wLjIwMjU3MiwtMC4yNTIxOCAtMC4zMzQ4NjMsLTAuNjE1OTkgLTAuMTI4MTU4LC0wLjM2MzggLTAuMTI4MTU4LC0wLjgyMjY5IDAsLTAuMjM1NjQgMC4wNjIwMSwtMC40ODc4MiAwLjA2NjE1LC0wLjI1MjE4IDAuMTg2MDM1LC0wLjQ4NzgzIDAuMTE5ODg5LC0wLjIzNTY0IDAuMjkzNTIyLC0wLjQ0NjQ4IDAuMTczNjMzLC0wLjIxMDg0IDAuMzg4NjA3LC0wLjM2Nzk0IDAuMjE0OTc0LC0wLjE2MTIzIDAuNDcxMjg5LC0wLjI1MjE4IDAuMjU2MzE1LC0wLjA5MDkgMC41NDU3MDMsLTAuMDkwOSAwLjE5NDMwMywwIDAuMzg0NDczLDAuMDQ5NiAwLjE5NDMwMywwLjA0NTUgMC40MTc1NDUsMC4yMTA4NCB2IC0xLjU1ODU2IHEgMCwtMC4yMjczOCAtMC4wMTI0LC0wLjM1OTY3IC0wLjAxMjQsLTAuMTM2NDIgLTAuMDcwMjgsLTAuMjA2NyAtMC4wNTc4OCwtMC4wNzQ0IC0wLjE3Nzc2NywtMC4wOTkyIC0wLjExOTg4OSwtMC4wMjg5IC0wLjMzODk5NywtMC4wNDU1IHYgLTAuMTYxMjMgcSAwLjMzODk5NywtMC4wNDU1IDAuNjA3NzE0LC0wLjExOTg5IDAuMjY4NzE4LC0wLjA3ODYgMC40ODM2OTIsLTAuMTQ4ODMgbCAwLjEyODE1NywwLjEyNDAzIHYgNS4yMzM3OSBxIDAsMC4xNDQ2OSAwLjAwNDEsMC4yNDgwNCAwLjAwODMsMC4xMDMzNiAwLjAyMDY3LDAuMTczNjQgMC4wMTI0LDAuMDcwMyAwLjAyODk0LDAuMTE1NzUgMC4wMTY1NCwwLjA0NTUgMC4wNDEzNCwwLjA3NDQgMC4wMzcyMSwwLjA0NTUgMC4xNDA1NiwwLjAyODkgMC4xMDc0ODcsLTAuMDIwNyAwLjM1NTUzNCwtMC4xMTU3NSB6IG0gLTEuMjY1MDM5LC0wLjczMTc0IHYgLTEuOTM4OSBxIC0wLjEzNjQyNiwtMC4yMzU2NSAtMC4zODQ0NzIsLTAuMzYzOCAtMC4yNDgwNDcsLTAuMTMyMyAtMC41NDU3MDQsLTAuMTMyMyAtMC4yNjQ1ODMsMCAtMC40ODM2OTEsMC4wOTkyIC0wLjIxOTEwOCwwLjA5NTEgLTAuMzgwMzM4LDAuMjg5MzkgLTAuMTU3MDk3LDAuMTk0MyAtMC4yNDgwNDcsMC40ODM2OSAtMC4wODY4MiwwLjI4OTM5IC0wLjA4NjgyLDAuNjc4IDAsMC4zNTE0IDAuMDk5MjIsMC42NDA3OCAwLjEwMzM1MywwLjI4NTI2IDAuMjYwNDQ5LDAuNDg3ODMgMC4xNTcwOTcsMC4yMDI1NyAwLjM0MzEzMiwwLjMxNDE5IDAuMTkwMTY5LDAuMTA3NDkgMC4zNTk2NjgsMC4xMDc0OSAwLjE0MDU2LDAgMC4yNzY5ODUsLTAuMDU3OSAwLjEzNjQyNiwtMC4wNTc5IDAuMjY4NzE4LC0wLjE0ODgzIDAuMTMyMjkxLC0wLjA5NTEgMC4yNjA0NDksLTAuMjE0OTcgMC4xMzIyOTIsLTAuMTE5ODkgMC4yNjA0NDksLTAuMjQzOTEgeiIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=" alt="Stack guard page" /></p>
</section><section id="clarification-2-stack-heap-collide.-why-a-segfault-2" class="slide level2">
<h2>Clarification 2: Stack & heap collide. Why a segfault?</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> count_calls(n: <span class="dt">u64</span>) -> <span class="dt">u64</span> <span class="op">{</span>
<span class="kw">if</span> n < <span class="dv">1</span> <span class="op">{</span>
<span class="dv">0</span>
<span class="op">}</span> <span class="kw">else</span> <span class="op">{</span>
<span class="dv">1</span> + count_calls(n - <span class="dv">1</span>)
<span class="op">}</span>
<span class="op">}</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="pp">println!</span>(<span class="st">"{}"</span>, count_calls(<span class="dv">174470</span>))
<span class="op">}</span></code></pre></div>
<p class="fragment">
Non-deterministic, but 174470 will crash in ~59/1000 cases.
</p>
</section><section id="clarification-2-stack-heap-collide.-why-a-segfault-3" class="slide level2">
<h2>Clarification 2: Stack & heap collide. Why a segfault?</h2>
<ul>
<li>Thinkpad T495s, AMD Ryzen 7 PRO 3700U, 16GB RAM</li>
<li>160 bytes per function call frame</li>
<li>⇒ 27,915,200 bytes (between 2<sup>24</sup> and 2<sup>25</sup>) allocated on stack before stackoverflow</li>
</ul>
<p class="fragment">
160 bytes? That much? We debugged it. print and formatting is one reason (34 bytes).
</p>
<p class="fragment">
We compiled it optimized. Only a constant was left!
</p>
</section><section id="clarification-2-stack-heap-collide.-why-a-segfault-4" class="slide level2">
<h2>Clarification 2: Stack & heap collide. Why a segfault?</h2>
<pre><code>thread 'main' has overflowed its stack
fatal runtime error: stack overflow
[1] 26166 abort ./elf-executable</code></pre>
</section><section id="clarification-3-allocate-memory-inside-a-for-loop" class="slide level2">
<h2>Clarification 3: Allocate memory inside a for-loop</h2>
<p>It is part of the function call stack frame, right?</p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> a = <span class="dv">42</span>;
<span class="kw">let</span> b = <span class="dv">2</span>;
<span class="pp">println!</span>(<span class="st">"{:p} {:p}"</span>, &a, &b);
<span class="kw">for</span> i <span class="kw">in</span> <span class="dv">1.</span>.<span class="dv">10</span> <span class="op">{</span>
<span class="kw">let</span> c = a + i * b;
<span class="pp">println!</span>(<span class="st">"{:p}"</span>, &c);
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section id="clarification-3-allocate-memory-inside-a-for-loop-1" class="slide level2">
<h2>Clarification 3: Allocate memory inside a for-loop</h2>
<pre><code>0x7ffd4187ff20 0x7ffd4187ff24
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4
0x7ffd4187ffb4</code></pre>
<p>⇒ Yes</p>
</section><section id="clarification-4-dump-the-stack" class="slide level2">
<h2>Clarification 4: Dump the stack</h2>
<p>→ <a href="https://doc.rust-lang.org/1.2.0/book/inline-assembly.html">Inline assembly</a></p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="pp">asm!</span>(assembly template
: output operands
: input operands
: clobbers
: options
);</code></pre></div>
<ul>
<li>unstable API, only on nightly</li>
<li>Only in <code>unsafe { }</code> blocks</li>
</ul>
</section><section id="clarification-4-dump-the-stack-1" class="slide level2">
<h2>Clarification 4: Dump the stack</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#![</span>feature<span class="at">(</span>asm<span class="at">)]</span>
<span class="at">#[</span>cfg<span class="at">(</span>any<span class="at">(</span>target_arch <span class="at">=</span> <span class="st">"x86"</span><span class="at">,</span> target_arch <span class="at">=</span> <span class="st">"x86_64"</span><span class="at">))]</span>
<span class="kw">fn</span> dump_stack() <span class="op">{</span>
<span class="kw">let</span> nr_elements = <span class="dv">70</span>;
<span class="kw">for</span> i <span class="kw">in</span> <span class="dv">0.</span>.nr_elements <span class="op">{</span>
<span class="kw">let</span> offset = nr_elements - i - <span class="dv">1</span>;
<span class="kw">let</span> <span class="kw">mut</span> result: <span class="dt">u64</span>;
<span class="kw">unsafe</span> <span class="op">{</span>
<span class="pp">asm!</span>(<span class="st">"movq %rsp, %rax</span>
<span class="st"> addq %rbx, %rax</span>
<span class="st"> movq (%rax), %rcx"</span>
: <span class="st">"={rcx}"</span>(result)
: <span class="st">"{rbx}"</span>(<span class="dv">8</span> * offset)
: <span class="st">"rax"</span>, <span class="st">"rbx"</span>, <span class="st">"rcx"</span>
:)
<span class="op">}</span>
<span class="pp">println!</span>(<span class="st">"sp+{:03} ⇒ value {:016x}"</span>,
<span class="dv">8</span> * offset, result);
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section id="clarification-4-dump-the-stack-2" class="slide level2">
<h2>Clarification 4: Dump the stack</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#[</span>cfg<span class="at">(</span>any<span class="at">(</span>target_arch <span class="at">=</span> <span class="st">"x86"</span><span class="at">,</span> target_arch <span class="at">=</span> <span class="st">"x86_64"</span><span class="at">))]</span>
<span class="at">#[</span>inline<span class="at">(</span>always<span class="at">)]</span>
<span class="kw">fn</span> print_current_address() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> result: <span class="dt">u64</span>;
<span class="kw">unsafe</span> <span class="op">{</span>
<span class="co">// https://stackoverflow.com/a/52050776</span>
<span class="pp">asm!</span>(<span class="st">"leaq (%rip), %rax"</span>
: <span class="st">"={rax}"</span>(result)
:
: <span class="st">"rax"</span>
:)
<span class="op">}</span>
<span class="pp">println!</span>(<span class="st">"rip = {:016x}"</span>, result);
<span class="op">}</span></code></pre></div>
</section><section id="clarification-4-dump-the-stack-3" class="slide level2">
<h2>Clarification 4: Dump the stack</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> sub(sub_arg: <span class="dt">u64</span>) -> <span class="dt">u64</span> <span class="op">{</span>
print_current_address();
<span class="kw">let</span> sub_local = <span class="dv">0xDEAD_C0DE</span>;
<span class="kw">let</span> sub_sum = sub_arg + sub_local;
dump_stack();
sub_sum
<span class="op">}</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> _main_a: <span class="dt">u64</span> = <span class="dv">0xDEAD_BEEF</span>;
<span class="kw">let</span> main_arg: <span class="dt">u64</span> = <span class="dv">0xFEED_C0DE</span>;
print_current_address();
<span class="kw">let</span> main_ret = sub(main_arg);
<span class="pp">assert_eq!</span>(main_ret, <span class="dv">0x0000_0001_DD9B_81BC</span>);
<span class="kw">let</span> s = sub <span class="kw">as</span> *<span class="kw">const</span> ();
<span class="kw">let</span> m = main <span class="kw">as</span> *<span class="kw">const</span> ();
<span class="pp">println!</span>(<span class="st">"sub = {:016p}"</span>, s);
<span class="pp">println!</span>(<span class="st">"main = {:016p}"</span>, m);
print_current_address();
<span class="op">}</span></code></pre></div>
</section><section id="clarification-4-dump-the-stack-4" class="slide level2">
<h2>Clarification 4: Dump the stack</h2>
<pre><code>rip = 00005639782d660f early main instruction
rip = 00005639782d650a early sub instruction
sp+552 ⇒ value 00000000feedc0de main_arg local var
sp+544 ⇒ value 00000000deadbeef _main_a local var
sp+536 ⇒ value 00005639782f8f18
sp+528 ⇒ value 0000000000000002
sp+520 ⇒ value 0000563979f16920
sp+512 ⇒ value 0000563979f16920
sp+504 ⇒ value 0000563979f16920
sp+496 ⇒ value 0000563979f16971
sp+488 ⇒ value 0000000000000000
sp+480 ⇒ value 0000000000000000
sp+472 ⇒ value 0000000000000000
sp+464 ⇒ value 0000000000000000
sp+456 ⇒ value 0000000000000000
sp+448 ⇒ value 0000000000000000
sp+440 ⇒ value 0000000000000000
sp+432 ⇒ value 0000000000000000
sp+424 ⇒ value 0000000000000000
sp+416 ⇒ value 0000000000000001
sp+408 ⇒ value 00005639782d66b5 return address(?)
sp+400 ⇒ value 00007fff62eef870
sp+392 ⇒ value 00007fff62eef870
sp+384 ⇒ value 00005639782f7600
sp+376 ⇒ value 00007fff62eef870
sp+368 ⇒ value 0000000000000001
sp+360 ⇒ value 00007fff62eef8a8
sp+352 ⇒ value 0000000000000001
sp+344 ⇒ value 00005639782f8f18
sp+336 ⇒ value 0000000000000002
sp+328 ⇒ value 0000563978503f48
sp+320 ⇒ value 00005639782d650a early sub instruction(?!)
sp+312 ⇒ value 00000001dd9b81bc sub_sum local var
sp+304 ⇒ value 00000000deadc0de sub_local local var
sp+296 ⇒ value 00000000feedc0de main_arg var
sp+288 ⇒ value 00005639782f8f18
sp+280 ⇒ value 00000001dd9b81bc sub return value
sp+272 ⇒ value 0000000000000001
sp+264 ⇒ value 00005639782d65b8
sp+256 ⇒ value 00007fff62eefbf0
sp+248 ⇒ value 00007fff62eef7b0
sp+240 ⇒ value 00007fff62eef81c
sp+232 ⇒ value 000000f0782f9b25
sp+224 ⇒ value 00007fff62eef7b0
sp+216 ⇒ value 00007fff62eef81c
sp+208 ⇒ value 00005639782f7600
sp+200 ⇒ value 00007fff62eef7b0
sp+192 ⇒ value 00005639782f77b0
sp+184 ⇒ value 00007fff62eef81c
sp+176 ⇒ value 0000000000000002
sp+168 ⇒ value 00007fff62eef7e8
sp+160 ⇒ value 0000000000000002
sp+152 ⇒ value 00005639782f8e90
sp+144 ⇒ value 0000000000000003
sp+136 ⇒ value 0000563978503ef0
sp+128 ⇒ value 0000563978503ef0
sp+120 ⇒ value 0000000f00000036
sp+112 ⇒ value 0000003778503f48
sp+104 ⇒ value 0000003800000001
sp+096 ⇒ value 0000003979f16c03
sp+088 ⇒ value 000000460000003b
sp+080 ⇒ value 0000004600000000
sp+072 ⇒ value 0000004600000000
sp+064 ⇒ value 0000004600000009
sp+056 ⇒ value 0000000700000038
sp+048 ⇒ value 00000038e6568a80
sp+040 ⇒ value 00007fff62eef81c
sp+032 ⇒ value 00005639782f77b0
sp+024 ⇒ value 00007fff62eef7b0
sp+016 ⇒ value 00005639782f7600
sp+008 ⇒ value 00005639782f8e90
sp+000 ⇒ value 0000000000000002
sub = 0x005639782d64f0
main = 0x005639782d65e0
rip = 00005639782d69d7 late main instruction</code></pre>
</section></section>
<section><section id="dialogue" class="titleslide slide level1"><h1>Dialogue</h1></section><section id="today" class="slide level2">
<h2>Today</h2>
<ul>
<li>Attributes and Feature guards</li>
<li>Just for fun</li>
<li>Recap → Quiz</li>
<li>A tiny I/O example</li>
<li>Stack</li>
<li>Stack with String</li>
<li>On pointers and references</li>
<li>Graph</li>
</ul>
</section><section id="attributes-and-feature-guards" class="slide level2">
<h2>Attributes and Feature guards</h2>
<p>An <em>attribute</em> is metadata applied to some module, crate or item. This metadata can be used to/for:</p>
<ul>
<li>conditional compilation of code</li>
<li>set crate name, version and type (bin/lib)</li>
<li>disable lints (warnings)</li>
<li>enable compiler features (macros,etc.)</li>
<li>link to a foreign library</li>
<li>mark functions as unit tests</li>
<li>mark functions that will be part of a benchmark</li>
</ul>
</section><section id="attributes-and-feature-guards-1" class="slide level2">
<h2>Attributes and Feature guards</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// syntaxes</span>
<span class="at">#[</span>attribute <span class="at">=</span> <span class="st">"value"</span><span class="at">]</span>
<span class="at">#[</span>attribute<span class="at">(</span>key <span class="at">=</span> <span class="st">"value"</span><span class="at">)]</span>
<span class="at">#[</span>attribute<span class="at">(</span>value<span class="at">)]</span>
<span class="co">// multi-value attributes</span>
<span class="at">#[</span>attribute<span class="at">(</span>value<span class="at">,</span> value2<span class="at">)]</span>
<span class="at">#[</span>attribute<span class="at">(</span>value<span class="at">,</span> value2<span class="at">,</span> value3<span class="at">,</span>
value4<span class="at">,</span> value5<span class="at">)]</span></code></pre></div>
<p>via <a href="https://doc.rust-lang.org/rust-by-example/attribute.html">rust by example</a></p>
</section><section id="attributes-and-feature-guards-2" class="slide level2">
<h2>Attributes and Feature guards</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// ! means “scope is global = crate”</span>
<span class="at">#![</span>crate_type <span class="at">=</span> <span class="st">"lib"</span><span class="at">]</span>
<span class="co">// no ! means “scope is local = module/item”</span>
<span class="at">#[</span>allow<span class="at">(</span>dead_code<span class="at">)]</span></code></pre></div>
</section><section id="attributes-and-feature-guards-3" class="slide level2">
<h2>Attributes and Feature guards</h2>
<p>Examples:</p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#![</span>crate_type <span class="at">=</span> <span class="st">"lib"</span><span class="at">]</span> <span class="co">// crate is library, not binary</span>
<span class="at">#![</span>crate_name <span class="at">=</span> <span class="st">"rary"</span><span class="at">]</span> <span class="co">// named “rary”</span>
<span class="at">#[</span>cfg<span class="at">(</span>any<span class="at">(</span>target_arch <span class="at">=</span> <span class="st">"x86"</span><span class="at">,</span> target_arch <span class="at">=</span> <span class="st">"x86_64"</span><span class="at">))]</span>
<span class="at">#[</span>inline<span class="at">(</span>always<span class="at">)]</span>
<span class="kw">fn</span> arch_specific_code() <span class="op">{}</span>
<span class="at">#[</span>allow<span class="at">(</span>dead_code<span class="at">)]</span>
<span class="kw">fn</span> unused_function() <span class="op">{}</span></code></pre></div>
</section><section id="attributes-and-feature-guards-4" class="slide level2">
<h2>Attributes and <a href="https://doc.rust-lang.org/unstable-book/language-features/box-syntax.html">Feature guards</a>:</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#![</span>feature<span class="at">(</span>box_syntax<span class="at">)]</span>
<span class="at">#[</span>allow<span class="at">(</span>unused_variables<span class="at">)]</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> b = <span class="kw">box</span> <span class="dv">5</span>;
<span class="op">}</span></code></pre></div>
<p>… on unstable, instead of …</p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#[</span>allow<span class="at">(</span>unused_variables<span class="at">)]</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> b = <span class="dt">Box</span>::new(<span class="dv">5</span>);
<span class="op">}</span></code></pre></div>
</section><section id="just-for-fun" class="slide level2">
<h2>Just for fun</h2>
<p><img src="data:image/png;base64,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" alt="search result for “x86_64 uncondi”: “x86_64 unconditional love”" /></p>
</section><section id="just-for-fun-1" class="slide level2">
<h2>Just for fun</h2>
<p>Does it compile?</p>
<div class="sourceCode"><pre class="sourceCode c"><code class="sourceCode c"><span class="pp">#include </span><span class="im"><stdio.h></span>
<span class="dt">int</span> main() {
printf(<span class="st">"Hello %s!</span><span class="sc">\n</span><span class="st">"</span>,
<span class="pp">#include </span><span class="im">"/dev/stdin"</span>
);
<span class="cf">return</span> <span class="dv">0</span>;
}</code></pre></div>
</section><section id="just-for-fun-2" class="slide level2">
<h2>Just for fun</h2>
<pre><code>meisterluk@gardner ~ % cat input
"RustGraz"
meisterluk@gardner ~ % cat input | gcc test.c
meisterluk@gardner ~ % ./a.out
Hello RustGraz!</code></pre>
<p>Yes on gcc, no on clang. via <a href="https://twitter.com/Poita_/status/1198413809670598662">Poita_ on twitter</a></p>
</section><section id="recap-last-session" class="slide level2">
<h2>Recap (last session)</h2>
<ul>
<li><code>&a</code> is a (shared) reference. <code>&mut a</code> is a mutable reference.</li>
<li><code>*a</code> dereferences a variable (sometimes auto-dereferencing happens)</li>
<li>Every variable has an owner. Owner can borrow ownership.</li>
<li>Only owners can destroy the variable.</li>
<li>References borrow ownership, they don't move ownership.</li>
</ul>
<p>The ultimate rule: <strong>aliasing XOR mutation</strong></p>
</section><section id="quiz" class="slide level2">
<h2>Quiz</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> sub(s: &<span class="kw">mut</span> <span class="dt">String</span>) <span class="op">{</span>
s.push(<span class="ch">'o'</span>);
<span class="op">}</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> base = <span class="dt">String</span>::from(<span class="st">"f"</span>);
sub(&<span class="kw">mut</span> base);
sub(&<span class="kw">mut</span> base);
<span class="pp">println!</span>(<span class="st">"{} bar"</span>, base);
<span class="op">}</span></code></pre></div>
<p>Compiles? <span class="fragment">Yes.</span></p>
</section><section id="quiz-1" class="slide level2">
<h2>Quiz</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> sub(s: &<span class="kw">mut</span> <span class="dt">String</span>) <span class="op">{</span>
s.push(<span class="ch">'o'</span>);
<span class="op">}</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> base = <span class="dt">String</span>::from(<span class="st">"f"</span>);
<span class="kw">let</span> c = &<span class="kw">mut</span> base;
sub(c);
<span class="kw">let</span> d = &<span class="kw">mut</span> base;
sub(d);
<span class="pp">println!</span>(<span class="st">"{} bar"</span>, base);
<span class="op">}</span></code></pre></div>
<p>Compiles? <span class="fragment">Yes.</span></p>
</section><section id="quiz-2" class="slide level2">
<h2>Quiz</h2>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> sub(s: &<span class="kw">mut</span> <span class="dt">String</span>) <span class="op">{</span>
s.push(<span class="ch">'o'</span>);
<span class="op">}</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> base = <span class="dt">String</span>::from(<span class="st">"f"</span>);
<span class="kw">let</span> c = &<span class="kw">mut</span> base;
<span class="kw">let</span> d = &<span class="kw">mut</span> base;
sub(c);
sub(d);
<span class="pp">println!</span>(<span class="st">"{} bar"</span>, base);
<span class="op">}</span></code></pre></div>
<p>Compiles? <span class="fragment">No. “cannot borrow base as mutable more than once at a time”.</span></p>
</section><section id="quiz-3" class="slide level2">
<h2>Quiz</h2>
<p>Remark: <a href="https://www.jawahar.tech/home/no-more-dangling-pointers-with-rust">Sometimes</a> borrowing is explained with “not more than one mutable reference allowed in a scope”. It is a little bit more complicated IMHO. <a href="https://www.youtube.com/watch?v=hY0gyzItyEo&t=49m16s">Aaron Turon</a> explains it with overlapping regions.</p>
<p>An approach to visualization: <a href="https://rufflewind.com/2017-02-15/rust-move-copy-borrow">rufflewind.com</a></p>
<p><img src="data:image/png;base64,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7UujRo2AsI15/vnnmTdvHueee25Eb3EwGLT/rmhVXbvdEeHxIQKBFI79jnHdLHvXsGHDCnvCYs30YoW6aJrGu+++i9fr5aGHHuLAgQPExcURHx8fEU7ncrmYN28eV199NbfffjuPPvqoLdIh7EiYNGkSgBLkit+MKinIERIdQV5Qciggy16dj89lIWR4xPzmIqub7PebK9oSnosXLyYjI4Nu3bpRUlJCjRo1uOyyy1i8eDEQOZuIFQdnxchWGDenaQigtg82F5nsLTFJjhOcn6ZxfpoHypaG1mIcwxlLHL2QTHn7xvotFApx44030rBhQ/r370/r1q15//336dGjhy3KY5XNEmu6rpOfn0+PHj1o2rQpoVCI2267zS6jlDLiGE40TaOoqIh+/frZg2quvvpq7r33XkzTpKioCNM0adOmDQDJyck0btyY9evXR3Rpt23blhkzZlCtWjX7OE6uvPJKLrroImrUqGGnMU2T7OxsO5a6RYsWXHnllRHpXC4X+fn59O7dmzp16mAYBv379wfC4S6rVq3iueeew+12YxgG/fr14/nnn2fnzp1ommYPZszIyCA+Pp5atWrh8XgoKCigevXqttiOFesN4cGQFnFxccTFxdlp/H4/tWvXplevXgSDQVq3bk3Dhg3t2VPmz59Pt27dyMjIoLi4mEsuuYT69evzww8/0KVLl6PqqDJYz9nmzZs5ePAgAwYMsF9ab7rpJu655x5KSkrw+Xx4vV47/1YXurOMzpcPq1F1bhdC0L9/f3r16mVfN9Uwnj44X/jDIu/EEEJgSIOgGcLj8pzQfX8qYD1npmkyefJkdu7caYvtrVu32jMglbf2gRW2EUuU217qsllsBMfXExEKhXC5XMycOZOxY8eSlJRkh+0Fg0F69eoVYWucSEf7P3bsWA4ePMh9993H/v37OXDgACNGjCAlJYWWLVsihGDWrFlce+213HvvvYwYMSIiPYSdcJa9OR1XT1b8PlRJQS4RIAQlhiRoAiIcxnI81lYIAUISKnOrC36/XkjLIAWDQbZs2UKnTp2AsFD74YcfaNiwYYS4sNA0jVAoFDG3crQRE0IgywLqn8qO47pvS8meUUJtn6BTTY1HznKTlaAjZXif6PJZBnLr1q08+uij5Obm2gNfDMMgMzOT9957j7i4uHINmZWP0tJSLrjgAnJycrjnnnvo168f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4+GWW24hJyeHuXPn0qJFC1577TXb++rxeOjYsSP//Oc/Wb16NWPHjuXtt9+OOE+5+fDEYXz/HaF5X2Ns2UTgndcR1aqhZTUMG5kYgtxZBmuqRufHOcVeLENhSokQsCLfpPEXxby9McjawyaLDoTY8P/tnXmYFNX19z+3qrtnYRgYYIBhm5HVURQERVkUNQYIKhFcUIiCSH7K44JBRAfEaIISF9wgUbIZI29+LtE3icElYIhBE5TAi2wKCLiBINtszEwvVff9o7pqqmd6BjDCTM+cz/P00911a7lV1X3re88959wyTY8WrsW//rq7HYOBAwcyd+5c0k+AG5GL1poBAwawbNky7r77bnbs2EE0GuWUU05Ba81ll13GwYMHmT17Nlu2bGHx4sV88MEHXHPNNd41iUajRKNRb3/+9127drF69WrWr19PWVkZK1euZMOGDVRWVpKZmcnFF1/MQw89xHvvvcfatWtZuHCh57Z0JNyH4Ztvvsnw4cO5+uqr+fLLL73hT0EQGjPxkcvYYcc/+hthODOxRcrju/zmgtzfdiV7uSjlpHEtLi6muLiYkpISJk2axNlnn11r9M99hUIhgsFg/cLTbwlXioRJgY6A297t37+ftWvXsn79eu/14YcfsmvXroRzPLrrQa3zT7a93+++V69edO/e3bsOPXr0oKCgoN7kCMfKsZyD0HRolBZylOPJZds2RmYmaTdMo+rHd6G1jVJOH6LmH97/XRkGdkkJoRumYXTv6f3ZjPi+jxV3CKqkpISioiLWrl1LWloamzdv5sorr+SHP/whs2fPplu3bvzyl7+kqKiIcePGUVlZyWWXXcbPfvazBB+y2bNnc/311/Pd734X0zR5+umnPet4siAb77zadsBo15HYyhXEFj2KCgZJmz4Lo20utm0516aG20rNIJ76qC86fGBrg5t6BJn/UYSnPlGURDSjOpr86GTHZy5whOvqt0749308Lbx+V5Bzzz2XM888kwEDBniR6276x759+/L4448zb948XnjhBSKRCPfddx/f+973vHq7k2b4r4n7+c033+T+++8nPT2dzp07M2XKFAoKCvjVr35Fz549KSoq4pNPPmH06NEUFhZyxhlncMYZZxwxj7r/GuXk5JCbm8v+/fspLy+vdS0FQWiEuO1bqBUYQSDyDXZiO24roVb/dQaSunzI/e554IxojhgxwjMWAezYscMbBdZaEwqFPOs4OEGO//nPf5gwYcKxTXRzlO2YO6I4ZswYxowZU+d6R8q6lXgN3O/K11eo2/XSjQsKBAJccMEFpKWleX7hpmkelRW8Pvyuk+vWrePUU08lIyNDRkSbCY1TkOPryds2geEXEZr8P0R+9XN0MIhye+E+321lOD1tbVno0hICIy8mdN1UZ3p58Nw8vgmuqMvJyeGpp56isrLSW2bbtpeKz7ZtRo4cyeDBg/n4449p2bIlhYWF3vn4c8C+8cYbrF+/nry8PLp16+aVJxPELmlTb0bl5IBhEty+DZWXh5HTNv4nTu4LdyzBIMnWcX3ITUMx99QQ158UYFelJieo6J3tNGTfRgN0PPBf00GDBrFkyRJs2+aGG27wHiru72fSpEmMGDGCzz77jLy8PPLz8xMsQffcc4/3m6zZ4I8bN45hw4Z599d1TercuTNaa/Lz81m6dCnr16+nQ4cOdOvWjS1btlBQUADUPcQJ1eL/nHPO4ZprruG9994jPz/fKxMEoRGjlRPQ2eY0x1c6fPjoAjq97XEEazAEOadWW5a/aXV8gk8pRSQSIRaLeelw3TZu9OjRPPDAA0yZMoVzzjmHV199lWnTpvGHP/zByzSVn5+PYRi8/vrr3HbbbcyYMYN9+/YxceJEz/jktVGu6FbKcVHR2vEjPyZrdrVRyx+D46KUqrcj4J27tjANk5gdw7JtIlYUlEbbRzfjtTsKcM8999Tq4PjXPRLuedS0zCulWLBgAQsWLODWW29lzpw5/7XQF1KDRivI/X9kbVkEJ/0QWrYi+vtfYe/f5/wB0tPBFVWRMEQikN2K0ITJhG66HUIhiM9g+d/8jP1+0N26datzPcMwiMViZGdnezNA+nu2/gYlIyODs892JkPw+43X/NP5PxudOnufzVP6Ouv7Zug8Hn9Yv2i1NXTJNOjiJCfBjmcMMI6isairsTreFnKXUChEly5dALwc35AYPZ+Xl0deXh6AN1rh7qNTp0511jknJ8ebpCgZtm2TlpbGWWed5R2zT58+de7Pj1u/Q4cOsWzZMiZOnEhGRgaRSOSofNAFQWhAXAGangN5w2DrqyQNtqkPbUBmR2d6ea059h1U405itnz5cmbOnOnlIZ82bRpFRUUsXryYIUOGMH36dNauXcu4ceNo3bo1Bw4cYPz48QwdOtQTkQUFBcyePZt58+axaNEiqqqqeP755zFNk1gslmi48Ldx7qRAycrqwW0n6wuK9K9XE7ct/duny/nL9teI6hi2tih6dw6dszoz/Yxbad8i96ifZf59Hu1zzC+609LSvDTINfe7d+9e9u3bx5o1a+pPIyk0KRqtIIdqq7abQSR4+dWYgwYTffUFrDXvo7/4HBUIoKNRVIc8zH4DCF48FqP/QGcH35JYrRkMUtNVwHWN0NqZHMD1+4XqIBl/L9gNEPSvU1cd/cu0bVcH+bipr3xDjcdD3Po7EgYay3fuRo3yxkjNe+deeyBBcJummTB9vf++uZ0od3lNtxv/vfTjT43oDmu63/2C/2geAKtXryYrK4vrrrsuYXhUEIRGjFJxy4WGfrNgx5/joto/62Yd2+r49pYNhVMhvV18avlvLsjdZ82AAQN48skn0drJjR2JOK40J598MuBk5XrhhRd47733+OSTT+jfvz/9+vVzquVr6+68807OP/98Nm/ezAUXXEC3bt2St0/+9jF8yLGOBzNBBR3fehVwHbq/8bkdCbc+Z+WdSdeWXTCNAKYyidoRQkaI1unZCevVxZGe00dTB4ApU6ZwxRVXJMxw6j5n7rvvPpYuXUpBQQHBYDDBXVJouijdiB1RE4INXSEct3bH3nuHyqLbMTIysYsPErr5DtKum+oEfbpDZSrR11cQUg339xuLxdi7dy9dunSRvLSCcBRY2sJUJu9/tZqHVj9CzI5RFilj+oBbuaznmBPzbNBuzvG4n8r7d8MHD0MazveaOcn9n5UBVTZ0Gwqj34BgVnX5cf7fJ7s2NZfVtY6/3CtzA9ANA/55IxhpMOwpKP8SXiqEIU/BydeDFalzYqCmjhvob5omO3bsYPDgwTz33HOMGjXKG3GQ9r5p0/gt5HE08WDNaASUkzFFBQKeywqBADoWRVs2Rpozg6RqxJZbQTga3N9vMBj08tlLCixBSBGUX3TbcNZPoGofbHwWjHiO8fgq1evHR0CjNnQ+G77zBwi1rDUq+k1INtrrH6Xzv1yB6I2Q+kZyq09P1VonaUcnblRDa+h0PqyYDCXboGQr5PSF7pc7rj3q+EmShHNPkq9NceSJ5r6NOgAJ96CmSyvAggULKCws5MILL6zlPik0XRq1IPfj/WANA2XGq+2PONcaFQiCjjZqFwpBOBaSudzIqI8gpBCuyNY2GCEY/hsnyPPDBc608YrqBMSWdlxcMnPglCvg7AerXVWOIUVg3VWpHYRY37rJ1qm5rKaBoM79up2TntdAVj588gfofKHjjhPKjgvy42dsSDj3eqLKTlRcU83r6/989913Ew6HCYVCXl510TVNn5QR5BAX5b7P1PFjlh+t0FT4b6L4BUFoBOj4zJzKiFu5DTj9R9BjAmx6CjYshGiZ41ae1Rn6XOtYjHPPdLa37Wq/cb8RKpXw6hy3lHcc4rxcdHwCpWNKQdO08LfrXbt2BUgwwki73/SRsW9BEARBOF4oVZ2+0IiLTjsKLTpA39uhRWdHjMeAzufC2fMdMW7Hqrdx3T1SVZS59XfdXbTte/lm72y0EW3HH3/CiJruRELzIKUs5IIgCIKQcvhcK53vhiNGwwfjWUZwXlbYEetapb5V3E+t+ic5n1Q/x/+Sukb5xTLefBBBLgiCIAjfFn4BbUcB5aT5c5e5FnNlOKI7QW8pJ7BRAbhuHIIgNAdEkAuCIAjCt4XfGm74Ju9Kaul2TeO+bV33jWbqSy0IzRXpfguCIAjCt4XnlqLggzmw9sFEP2lBEIQkiCAXBEEQhG8DL3jRglglbHoaPvlfqDp03GeiFAQhtWlwl5WakcQKnEl/mkIgiyAIgtB88PzEDQhkwJXrnaDNjDbxPNvyTBMEITkNLsgTmietHTFOc85GKgiCIKQktuUEau5bAwc3QiATWnRxUhuaQbGQC4JQJw0uyF0B7p/oRyOpfgRBEIQUQ1ugDfhyOXy0GMLF0OZ0+N5rYASaRgpDQRCOCw3vQ27bzltlJdZHm9BVlQDo+HJBEARBSAncrCqnTYerNkK/mRApqZ72XomFXBCE5DS4IPdmpvryMypv/AHW55+itEbbdvXMVb4ZrARBEAShUeJmUjHTHXeVQEZ1KkNnhQatniAIjZcGd1lxXVOUYaKyslCmM4GCCgTicyM4Q3wKRJQLgiAIjRcvvaEFGI5PubtcEAShHhrcQu7iiW3TRJeWoD//1MkSFbc4iF+5IAiC0Kjxz8bpt4zLs0sQhCPQ4BZyD22jg0Gi//dl7I83Yn/+Keapp5M290HIbuX4lEujJgiCIAiCIDQxGo2FXKWlo7/4DF1yiLQ755Lx4BPYWz4i9sLzKHFZEQRBEBoj/gl/vImBfN/96wmCINRBoxHk2rYhlEbw8mswe/bBPONMguN/QGzVSnQ0ijIMcVkRBEEQGhc1XVMMA9CJEwF56Q5FlAuCkJxG47KiYjFUThtIz0DbFmhQbdqiw2F0JAKBRlNVQRAEQXDwW74jpWBHIaOd892OgBFyXk5QlCRaEQQhKY3HQq4UyjUiKCNuZYhPGiRWBUEQBKExon3W8C/egJdOhZLtEKuAT16EVj3is3TGJA5KEIQ6aTRmZ2UY6KpKdDTmuaboykq0odCBIIZS2FqLcUEQBEFoPCjleKJoDd2+Bxt/Dn8eBuntIXwA+s1yVxRBLghCnTS8IHcnBgoE0Af2Ya16F7NPIVQcJvbWa5iFp6FCznCfkqAYQRAEoTHh9xMPtYLRS+Hz1yFSDt1GQlbXuA95wOdLLgiCkEiDC3Idz6BCJIIq6IG9YR1Vd0zD/novRCIEZ04EwLZtlGFITIwgCILQePCLbG1DKBt6Xu0rj08SpDTiQC4IQl00uCD3Zups34H0O+/FOL0f1tr/oPftJXDuBRiduqDjYlwp8SYXBEEQGhHxyeviAVCOKMcvvg3fOg1XTUEQGjeNRpAbLbMxzrvA+XzhCK9ca+1YxpE85IIgCMKxo1AYKIzjlcfAFdzgJCXwPtdMe5gMw3kpp6aCIDRPGlyQa60dy7fWYNtOdhXbdhoww3CCPeONm1jIBUEQhKNBx58Wlm1xOHqYmB2jLFpG1I4enwP6BXdN8V1LjLsTB9kQOwxRG2KAVXl86iYIQqOnwQW557KiFJims9B9r7GOIAiCIBwNKp7zu1VaNme074+lLSqiFXTIbA+QYOg54bj5yM00aHsaBFuBpSG7V7y8hoVdEIQmT4MLckEQBEH4tjGU455yartTmH/uvFrlDWroideNrM7w3Zfjfue2M4EQiBAXhGaICHJBEAShyeEKblvbWLYVdxLRmIaJqcwGFuS+gM9ABtXpw1SNckEQmgsiyAVBEIQmi6EMDLPRTEqdiJuZRRCEZo8IckEQBKHJ4SYMKK4qZnvJTrS2idkWJ7XKp0OLDg3sQx7PuhKrgH2rIVoOdgyyukG7M8SHXBCaISLIBUEQhCaHpW0CymTzgY/5yap5xOwYJeFSZp01kyv7jGtgQW45M3eW74LlE+DgbifLyimj4XtLRZALQjNEBLkgCILQ5FDKEbWmEaBlqCUxO4ZCETKD8fJG4EOuDCfDSvp+iCkIZiWWC4LQbBBBLgiCIDQ94qkFbW1RGaskZseoiFUQ0zGnuEEt5Diu49qGWDlEIo6FPBbPQy4WckFodoggFwRBEJocrtDOz+7GlL6TsbRF1Ipweru+CeUNVDnnPb0dnFEEVQfAjkDb/onlgiA0G0SQC4IgCE0ONw95p6w8xvW6rFZ5o8hDnp4Dp05LUi6CXBCaG6kryJUCM+DM6mkGpAETBEEQauG6pvhpNLM/J6mbPMsEoXmScoJca+243kUi2Af2oUIh9KGD6MrKhHJBEASh+eKmPbTiPuTusvRAOiEz1DjSHmI7KQ+15fiTm+lOYKf4kAtCsyPlBLkynKE+o3tP0qbPQhkGOhzGPOscp9w0G7J6giAIQiPA1jamMtlycCtLPvpfLB2jIlrJVX0u57wu5zawILdBmXD4K1h1J5R/ATEL8r8DZ80TQS4IzZAUFOSO4Da7dMOc9D+1y0WQC4IgNHt0PO1haaSMjfs3ErVjlEVKuaDrcKChfcjjgjtWBXv+BYc+d7KsZOXGy0WIC0JzI+UEuTvUp20bYtH4MiAQcMS4NxQoCIIgNHc0YGOjsbGT+Ww3KLqGH3ljq58gCCeKlBPkbvpWDAMVSqvVfGmlxIdcEAShmaPiechbhVpyWtu+WNqiIlpBu4x2QEPnIXfqRiADOgyCzDywNOT0jZeLy4ogNDeUThaC3oixLQvDNLG2fUz0xSVgmujKCgIjLyE4dDh2LIYRSLl+hiAIgvAt4gZ12tomakW95aYRIGCYjSOoU9tgVcCQ64gAABJdSURBVDnv2gYjBIF0EeSC0AxJOeWqtA2Y2Hu+IvqXP6KCIXTxQYzuvWDocJRtN3QVBUEQhAbGFdqGMkgLpNVZ3iC4x1YGBDLrLhcEodmQcoLc80cxTchsAcEQRCOoYLBBqyUIgiA0HlwLuX8Q2HV59C9vWAu5JtFvXPmWI8JcEJoRKSfINY6PuEpPx8jrhAoE0S0yoUWWUy4+5IIgCM0eV2j7BbdKUt4geBZyBcmeWCLEBaHZkXI+5J7Vo7IC++u9zmfbQuW0xWjV2isXBEEQBEEQhFQg5QS5IAiCIAiCIDQljIaugCAIgiAIgiA0Z1LPh9y2UYaBfXA/9sb1ziRB0Shmr94YXQu8ckEQBKHpkyx482hxtzshbo51BnLWh8/XPMUnvUt2n07o9RdSgub8O0lBQW6hDANry0eE7y9CBYPYJcWk3TaT0DWT0VYMZYQaupqCIAjCCSBZ8OY32f64c6RAzvpoImLc/Wz4jGaNXWTVFIjuZ8uyUEphmqb33TAMDMNocPFYs646ng7jRAlb//Ft28a2bUzTTH58f0dV28468boC2PFU1s1BlKecIE9ofE0DTBNlGrjeN5JjRRAEofngPqQt2+Kjg1s4ULm/XvGqtU1WMItT2hSSGcrEtu0EgXjcsC0wTCjZDl+9C1YFSS3lrmDXGtqeBh0GA4YzcZBKzdFfv6B1r3UkEiEYT1fcWEVWzY6E1toTlgHfBITJvjck/jorpRJ00Ymom/8YbielzuP7vxuml5rUtm1isRihUMjr7DR1UZ5yglxrjQJ0OOxkWYlPDKQrDieUC4IgCE0f9wF9sOoQ9//7J3TJ6kpaIISt45a1+BNBe+JX8XnZF0w5dTLfzb8QW9sofQKsh3bMEeSbn4aPXoROA0FH4y4s/vzjNhhBKPsaTAtG/RUy2juC3L9eiogSV4i7lvH9+/czd+5cpk6dysCBA4nFYglitqGoy6pbsyMBEIvFWL16NW3btqV3796Ulpaybt06evfuTceOHRtcNPrPpTRSyqGqYrq27IKhToz13n/8PXv2sH37dvr370+LFi1qd4Dd37JScGA9OqM9ZHbEtm0efPBBTj75ZK6++uoES3lTpeH/BceI6x9u9jqZ9LnzUCqAjlRh9h/olJtmQ1ZPEARBOIG4D+iIHaFTVmd+MvReWoZa1rvNU/9vEYYRt2waAZ+r9nF82Lv7tqqg3/Uw8Cf1r1+yDf49A8y0uGDxPa5TSJT4reOWZTFp0iQsy+Kkk07yLJ+u9dldP5mLSLLyWhM/1bOPmuXJ9umu47fquh2Ge++9l9LSUp544gkqKiqYNGkSI0eOZOHChWzdupWxY8fyxBNPcO211yaI+WTnksxH2j32ka6Du57fWyCZJR+l0Nri5a2v8PLWV/n1Rc/QJbtzLUFe3zVJdg/92yWrg9baE8+GYfDmm29y55138s4773DKKadUC/KEmAqg7FN4ZQiq1xXoC35HIBCgX79+TJs2ja5duzJ06NAES3lTJPUEuXIEt9GpM6HLJ9QuF0EuCILQ7FBaYWubsBWmhW7B7vKv2FW+i64tu+BYxT+nVVorerbqwZ7yvWitGZx3DvsrDhA0g3TKyjsxlk2loLIYrAhEimHXCogdhi4XwdcfwOHdkH8pHPoI9q2BT/8CBWOc9TqfD2k5Kee+YlkWgUCAJ554gnXr1rF161bPWlrTAu36Ztf13W+9hmrh6Le0u6LQb4n131u/YPTvE8A0TV566SWee+45lixZQk5ODlpr9u7dS3FxsXdM13XF/R4IBGrFMySdnKqOmAf3Wrjn5fql1/zuP04sFqvlm514LJMe2d0ZkncOLUIt4gsT741fyLv799839xq567l1Sva95j601sRisYT77NXPe49/Tm8HBaNR7c9GA9FomLFjx/L+++8zdepU1qxZQ0ZGRsPOsHucSZ1/dByt4j1E20bHos4rGkXH/0ySVl0QBKEZEn8+G8pAoXho9SM8tuZJNuzfxOYDm/ntxudY9tnbVMaqCBpB1n29np0lO1m68w0efP9nAFi2dYIqq8EMwZfL4O1r4Yu3IFwMu/8BO1+B8i8glA1Z3RyRHimGv0+AT//qbG7HTlA9/zv8orKsrIxFixZx880306JFi4SgSMMwKCsrIxwOe99dUe1+P3z4MOXl5RiGgWmanoCORqOeGI9EIpSXl3sC3rX4+q23fgt4eXk5lZWVtfa5bds23njjDSoqKrzz+PnPf86SJUsSzq3muSY7f7eOkUgkYZllWYTD4YQOiWmaVFVVeefg1sm9Fq7QLSkp8b77z8+/f40mZscY1mUoRYNmkZPeGqgdZ+ffPhAIEI1GKSkp8ToH7v5s26aqqsrrIJSWlnodAncfbp3C4TDFxcUopWjZ0hmtqiWgveulnN9zIB0u/B268IcYOJ0Jy7K4+eabOXToEC+99JJX36YoxiEVLeSeu50Cs3b1m+ZtEgRBEOrDH8Cmteak7ALuPOsOurXsCsBF+d/x1r1/6L3eZ1MFiFhh4ARnXNE2hHLgzDkw8MfO8mGLEtcbu6r684B7IT0nvn1q2NKUUp4gX7p0KV988QUTJkxI8AfeuXMnjzzyCG+//TaZmZlccskl/OhHPyInJwfDMPjyyy95+OGH+cc//oFt25x//vncdddddOnSBYCnn36aXbt20b17d37xi19QVVXFiBEjmDt3Lrm5uZ4A97tjfP311zzwwAMsX76cYDDIiBEjmDlzJrm5uVx66aVs2LCBQCDA97//faZOncpNN93EvHnzCIfDPPDAA0d9/m6H4plnnmHDhg388pe/9Ja99tprvPbaa8yfP5/c3FzKyspYsGABf/nLXwiHwwwbNoyioiJOOukkb5sVK1bw6KOP8vHHH9OrVy9uu+02Ro8enXBu7vmu37eBZzf9HltbFGQXMPnUa2mT3qZOlxXbtnnmmWd4/vnnKSkpoUePHtx+++1cdNFFAKxbt4758+czfvx4fv/737N+/Xr69evHXXfdxZAhQ7w6Ll26lMcff5wtW7Zw7rnn0qFDhwRh7zuw8z+wY7DqDvj87xBqjeo5FvrdgalsYraia9euDB48mGeeeYbJkyc36cDO1PhX+/EPd9R8+cubCTX/iP7PgvBt4/992b5RKfm9CQ2N+6A2lGP9vKrPFbRPzwUcsRG1o1jacqy2tkXMiqG1pmvLzlzea6y3jxNTWcN5dRwC3a+qXm5FHVcWbTsvK+pkZ9HacVvJPbN6+xTA3y6sWrWK9u3bk5+f71moDxw4wMiRI1m+fDlz5szh2muv5ZFHHuHmm2/GsiyKi4sZPnw4S5cu5Y477uD222/nxRdf5LrrrqOyshKA1atX8/DDD/PCCy9wyy23MGnSJBYtWsTcuXO9DoHfCqyUYvz48fz1r39l1qxZTJkyhSeffJIbbriBsrIyxo4dy8CBAzEMg/Hjx9O/f3+01vztb39j6dKlx3T+bhu5cuVKXn755YRlGzZs4MUXX6SiogKlFEVFRTz55JNMnjyZWbNm8fbbb3P++eezZ88elFIsW7aMESNG0KZNG3784x+TkZHB2LFj+de//lXLZUVrTfuMXEafNIo+rXvz792riFpR556o2m21YRjccccd3HLLLYwePZq5c+eitWbcuHF8+OGHAOzevZs//vGPFBUVMXDgQO677z42bdrE5ZdfzuHDh1FK8c9//pOxY8cSDof56U9/Sn5+Pr/+9a8JBoO1nxGeZjOg68Vw+nSo2g973nMyrejq58ugQYPYunWrZ3Vvqs+blLOQC4nUDOSo6e8lCN8mfv9Hv/WrqTaQQupga5uMQDrr9n3Iu7v+xZ7DexjaeQjf6XoBbTPaElRBYraFMhSmclwBlFJsL/mUt3a+xaxBM+PBcCegssqE94tg+0uQngt9b4auoyAjN34yMXCDTV0/6PVPQufh0GsiaCslRLnW2nOr2LFjB7169QLw/Lt/8YtfsGfPHtauXUvPnj0BKCgoYOLEiXz22We0bt2a8847j/nz59OxY0cAMjIy+MEPfsC+ffvIz88nLS2NnJwc/vznP5OdnQ3AmjVrWLlyZYJ13G2z9u7dyzvvvONZXAFOO+00Fi5cSGlpKVOmTKGqqoply5YxY8YMz0UjOzv7mJ+r7votWrSgdevWCcvS09Np1aoVaWlp2LbNb3/7W2655RamT58OwKBBg7jtttsoLS0lNzeXuXPncuWVV/L8888DcN111zF48GAeeugh/vSnP9VyXcnLyiMvK49uWV3591fvY6jkqaFdgZuWlsYrr7zCuHHjABgzZgzZ2dmsWLGCfv36kZ6ejmmaPPbYY1x66aUAZGZmMnHiRDZs2MA555zDo48+Sps2bXj77bcJhULeuT/++OO1r51fkHcb6Xz+ajlop4Y6PtqllKJPnz4YhsHmzZsZMmRIk33eiCBPYWpGaSulqKysJD093VvWWEkWOe7/3pjr3pzx36twOEx6err3cG3KwTZCKuBYx8vCZWzYt4HPy77gP3vW8uyG5xiR/13G9LiYXm16satsF7vKd3NWR8faXBopZVvxdmcPJ/JBX7kfDu6A8A747H1omQH974Y+k6BlPnz8K+h4HrTq7axf/DHk9ImfauoIEsMwCIfDHDp0iPz8fACvM/TWW2/Rt29fevbsSWVlJcFgkEsuuYR3332X3NxcsrOzefbZZ1m5ciVLlizh4MGDbNq0CaUUhw87qY4jkQgdO3YkOzubSCSCaZp06tSJjRs3cvjwYbKyshKCCnNychg0aBBz5syhvLycYcOGMXz4cC688EJisRjRaJSysjJs22b37t106tQJ03T8mV3r9rHi5tT2/75s28ayLGKxmGe1X7hwIcFgkFGjRjFgwACWL1+O1ppt27bxwQcfcPrpp/Pyyy9z6NAh2rdvj2VZrF69upYLilKKmBUDBSXhEjTJRzH9I54PPfQQ27Zt4ze/+Q07d+6kuLiYYDBIeXk54Pi8W5ZFz549vWvRtm1bWrRoQXFxMdFolO3btzNmzBhCoRDhcJhAIEB+fn7yZ7o/y4rt1JXoYQg4wadOrKezTdu2bbFtm3379iUN2G0qNClBXlc6oaYo8NxzchsI27a58cYbGTFiBFdddRXRaNSbdKExUt/9aGr3qinhWpyKi4u5/vrrefDBByksLPSCqpqq5UJo/ChlUBULc1ruqcxtPYeN+zZhaYsP933IK5+8yoov/sHEwmvYsH8j5dHDnNXxTLTWFLTMZ2yv7wN4VsTjjrbh7Aeh+1go3QEVe2Hrc/D3H8Mnf4DuV8Dax2DYo9C6jyNY+s9yhDo4+cxTgJoubq61GZx2vqKiwhNbgUAA0zQxTZOBA500xhUVFdx4440sXbqU8847jy5dulBWVlYr5Z4ruEOhUFJ3Or+lPBQK8ac//YnHHnuM3/3ud8yfP5/CwkLuueceRo50LLWu2AsEAt+K8PO3izVTC7rBrQsXLqR379689tprLF68mM6dOzN9+nRuuOEGKioqMAyDFStWsGbNGqLRKFprsrKyGDFihLevmlrHVKaXezzh2CpRQxiGwbPPPsvMmTMpLCyksLCQcDh5XEUkEkkIgnUzsVRUVBAOh2nXrp13Pw3DIBKJJHczSXA/DsTf67/W37RDlCo0KUGeLB9nsuVNAf8P3DAMbr31VlatWsV9992XYLH0X4NkOU1rlkNiI5rsWibb9miPU9c6LjWP6d/ev12yY9R1Tkc659pBLgC+/bn1pu7f0pGOX7NBSnbdXatRsvNJdrz67kddHdP67nfNc6npDuVi2zaZmZl0796dCRMmsGzZMtq0aZPgvtKU/mtCaqC0wtIWrdNyyM8uwLJtTs7pzZgel/CPL//J/9n8v/x647MEjQCZwUw+3LeB/u1PJz2QTpesTvGdnKDKau24p7QudCyCfW9xLOPrn4RNi+CDB0Ar2PmqszyQ4bzMUHx7lRIZDPzuEK1ateLQoUMJy1u3bk1JSQmGYRCNRr2y3bt3k5eXx9///neWLFnCG2+8wahRowBYsWIFK1asSHq8mm2PX7S771VVVXTo0IFHHnmEuXPnsm3bNubNm8f48eNZu3Yt3bt3T2qB/SZtmttuuh0Nf9vudh7cNjMYDDJ79mxmzJjBtm3bWLx4MTfddBNDhw4lNzcXy7K4++67mTJlCmVlZQQCgQSjW81zhaTzwHq/G39dysrKmDFjBuPHj+fpp5/29vH6668n3Jdk18LtVGRlZZGRkcFXX32FYRie5T89Pf0bPRO0rp7Ma//+/QC0adMm4dnU1Pj/Pr9e/KpltFAAAAAASUVORK5CYII=" alt="Borrow cheatsheet" /></p>
</section><section id="a-tiny-io-example" class="slide level2">
<h2>A tiny I/O example</h2>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-1">A tiny I/O example</h3>
<p><a href="https://doc.rust-lang.org/std/io/struct.Stdin.html">std::io::Stdin</a></p>
<ul>
<li><code>pub fn lock(&self) -> StdinLock</code>: Locks this handle to the standard input stream, returning a readable guard.</li>
<li><code>pub fn read_line(&self, buf: &mut String)</code> <code>-> Result<usize></code>: Locks this handle and reads a line of input into the specified buffer.</li>
</ul>
<p><code>StdinLock</code> implements the <code>Read</code> and <code>BufRead</code> traits ⇒ useful methods.</p>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-2">A tiny I/O example</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">use</span> std::io::<span class="op">{</span><span class="kw">self</span>, Write<span class="op">}</span>;
<span class="kw">fn</span> read_line() -> <span class="dt">String</span> <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> input = <span class="dt">String</span>::new();
<span class="kw">match</span> io::stdin().read_line(&<span class="kw">mut</span> input) <span class="op">{</span>
<span class="cn">Ok</span>(n) => <span class="op">{</span>
<span class="pp">eprintln!</span>(<span class="st">"{} bytes, {:?}, {:?}"</span>, n,
input.into_bytes(), input);
input
<span class="op">}</span>
<span class="cn">Err</span>(error) => <span class="pp">panic!</span>(error),
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
<p class="fragment">
Does this code compile?
</p>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-3">A tiny I/O example</h3>
<pre><code>error[E0382]: borrow of moved value: `input`
--> src/main.rs:7:70
|
4 | let mut input = String::new();
| --------- move occurs because `input` has type
| `std::string::String`, which does not implement
| the `Copy` trait
...
7 | eprintln!("{} bytes, {:?}, {:?}", n,
| input.into_bytes(), input);
| ----- ^^^^^
| | value moved here
| value borrowed here after move</code></pre>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-4">A tiny I/O example</h3>
<p><code>pub fn into_bytes(self) -> Vec<u8></code>: Converts a String into a byte vector. This consumes the String, so we do not need to copy its contents.</p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">let</span> n = <span class="dv">42</span>;
<span class="kw">let</span> <span class="kw">mut</span> input = <span class="dt">String</span>::new();
<span class="pp">eprintln!</span>(<span class="st">"{} bytes, {:?}, {:?}"</span>, n,
<span class="dt">String</span>::from(input).into_bytes(), input);</code></pre></div>
<p>Does this code compile? <span class="fragment">No, still consuming.</span></p>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-5">A tiny I/O example</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">let</span> n = <span class="dv">42</span>;
<span class="kw">let</span> <span class="kw">mut</span> input = <span class="dt">String</span>::new();
<span class="pp">eprintln!</span>(<span class="st">"{} bytes, {:?}, {:?}"</span>, n,
<span class="dt">String</span>::from(&input).into_bytes(), input);</code></pre></div>
<p>It compiles!</p>
</section><section class="slide level2">
<h3 id="a-tiny-io-example-6">A tiny I/O example</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">loop</span> <span class="op">{</span>
<span class="pp">print!</span>(<span class="st">"⇐ "</span>);
io::stdout().flush().unwrap();
<span class="kw">let</span> line = read_line();
<span class="kw">if</span> line == <span class="st">""</span> || line == <span class="st">"0</span><span class="sc">\n</span><span class="st">"</span> <span class="op">{</span>
<span class="kw">break</span>
<span class="op">}</span>
<span class="pp">println!</span>(<span class="st">"⇒ {}"</span>, line)
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
<p>⇒ We use it to fetch dynamic data.</p>
</section><section id="data-structure-stack" class="slide level2">
<h2>Data structure: Stack</h2>
</section><section class="slide level2">
<h3 id="data-structure-stack-1">Data structure: Stack</h3>
<ul>
<li>Do you remember stack and heap from last session?</li>
<li>PUSH and POP operation</li>
<li>PUSH: add element to the top</li>
<li>POP: remove element from the top and return it</li>
<li><code>O(1)</code> time complexity for both operations</li>
</ul>
</section><section class="slide level2">
<h3 id="data-structure-stack-2">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#[</span>derive<span class="at">(</span><span class="bu">Debug</span><span class="at">)]</span>
<span class="kw">struct</span> Stack <span class="op">{</span>
content: <span class="dt">Vec</span><<span class="dt">u64</span>>
<span class="op">}</span>
<span class="kw">impl</span> Stack <span class="op">{</span>
<span class="kw">fn</span> new() -> Stack <span class="op">{</span>
Stack <span class="op">{</span> content: <span class="dt">Vec</span>::<<span class="dt">u64</span>>::new() <span class="op">}</span>
<span class="op">}</span>
<span class="kw">fn</span> push(&<span class="kw">mut</span> <span class="kw">self</span>, element: <span class="dt">u64</span>) -> &<span class="kw">mut</span> <span class="kw">Self</span> <span class="op">{</span>
<span class="kw">self</span>.content.push(element);
<span class="kw">self</span>
<span class="op">}</span>
<span class="kw">fn</span> pop(&<span class="kw">mut</span> <span class="kw">self</span>) -> <span class="dt">Option</span><<span class="dt">u64</span>> <span class="op">{</span>
<span class="kw">self</span>.content.pop()
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-3">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">use</span> std::fmt;
<span class="kw">use</span> std::io::<span class="op">{</span><span class="kw">self</span>, Write<span class="op">}</span>;
<span class="kw">impl</span> fmt::<span class="bu">Display</span> <span class="kw">for</span> Stack <span class="op">{</span>
<span class="kw">fn</span> fmt(&<span class="kw">self</span>, f: &<span class="kw">mut</span> fmt::Formatter<<span class="ot">'_</span>>)
-> fmt::<span class="dt">Result</span> <span class="op">{</span>
<span class="pp">write!</span>(f, <span class="st">"Stack[{}]"</span>, <span class="kw">self</span>.content
.iter().map(|<span class="dt">uint</span>| <span class="op">{</span> <span class="dt">uint</span>.to_string() <span class="op">}</span>)
.collect::<<span class="dt">Vec</span><<span class="dt">String</span>>>().join(<span class="st">" "</span>))
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-4">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// Example usage</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> s = Stack::new();
s.push(<span class="dv">1</span>).push(<span class="dv">1</span>).push(<span class="dv">2</span>).push(<span class="dv">3</span>).push(<span class="dv">5</span>).push(<span class="dv">8</span>);
<span class="pp">println!</span>(<span class="st">"{}"</span>, s.pop());
<span class="op">}</span></code></pre></div>
<p>Does it compile? <span class="fragment">No.</span></p>
</section><section class="slide level2">
<h3 id="data-structure-stack-5">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// Example usage</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> s = Stack::new();
s.push(<span class="dv">1</span>).push(<span class="dv">1</span>).push(<span class="dv">2</span>).push(<span class="dv">3</span>).push(<span class="dv">5</span>).push(<span class="dv">8</span>);
<span class="pp">println!</span>(<span class="st">"{}"</span>, s.pop());
<span class="op">}</span></code></pre></div>
<p><code>s</code> is now mutable. Does it compile? <span class="fragment">No.</span></p>
</section><section class="slide level2">
<h3 id="data-structure-stack-6">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// Example usage</span>
<span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> s = Stack::new();
s.push(<span class="dv">1</span>).push(<span class="dv">1</span>).push(<span class="dv">2</span>).push(<span class="dv">3</span>).push(<span class="dv">5</span>).push(<span class="dv">8</span>);
<span class="pp">println!</span>(<span class="st">"{}"</span>, s.pop().unwrap());
<span class="op">}</span></code></pre></div>
<code>pop()</code> returns <code>std::option::Option<u64></code>.
<div class="fragment">
It compiles.
</div>
</section><section class="slide level2">
<h3 id="data-structure-stack-7">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="co">// Parse a line and push integer to the stack</span>
<span class="kw">fn</span> handle_input(s: &<span class="kw">mut</span> Stack, input: &<span class="dt">String</span>) <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> provided_integer = <span class="dv">0</span>;
<span class="kw">let</span> <span class="kw">mut</span> valid = <span class="cn">true</span>;
<span class="kw">let</span> input_trimmed = input.trim();
<span class="kw">match</span> input_trimmed.parse::<<span class="dt">u64</span>>() <span class="op">{</span>
<span class="cn">Ok</span>(val) => provided_integer = val,
<span class="cn">Err</span>(_) => <span class="op">{</span>
<span class="pp">println!</span>(<span class="st">"… is not an integer"</span>);
valid = <span class="cn">false</span>;
<span class="op">}</span>,
<span class="op">}</span>
<span class="kw">if</span> valid <span class="op">{</span>
s.push(provided_integer);
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-8">Data structure: Stack</h3>
<p>More advanced:</p>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="at">#[</span>derive<span class="at">(</span><span class="bu">PartialEq</span><span class="at">)]</span>
<span class="kw">enum</span> Op <span class="op">{</span>
Pop,
Push,
Print,
<span class="op">}</span>
…
<span class="kw">match</span> op <span class="op">{</span>
Op::Push => <span class="op">{</span> s.push(provided_integer); <span class="op">}</span>,
Op::Pop => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{:?}"</span>, s.pop()); <span class="op">}</span>,
Op::Print => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{}"</span>, s); <span class="op">}</span>,
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-9">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> handle_input(s: &<span class="kw">mut</span> Stack, input: &<span class="dt">String</span>) <span class="op">{</span>
<span class="kw">let</span> input_trimmed = input.trim();
<span class="kw">let</span> <span class="kw">mut</span> fields = input_trimmed.split_whitespace();
<span class="kw">let</span> op = <span class="kw">match</span> fields.next() <span class="op">{</span>
<span class="cn">Some</span>(<span class="st">"push"</span>) => Op::Push,
<span class="cn">Some</span>(<span class="st">"pop"</span>) => Op::Pop,
<span class="cn">Some</span>(<span class="st">"print"</span>) => Op::Print,
<span class="cn">Some</span>(_) | <span class="cn">None</span> => <span class="op">{</span>
<span class="pp">eprintln!</span>(<span class="st">"unknown operation"</span>);
<span class="kw">return</span>;
<span class="op">}</span>,
<span class="op">}</span>;
…</code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-10">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"> …
<span class="kw">let</span> <span class="kw">mut</span> provided_integer = <span class="dv">0</span>;
<span class="kw">if</span> op == Op::Push <span class="op">{</span>
<span class="kw">match</span> fields.next() <span class="op">{</span>
<span class="cn">Some</span>(val) => <span class="op">{</span>
<span class="kw">match</span> val.parse::<<span class="dt">u64</span>>() <span class="op">{</span>
<span class="cn">Ok</span>(val) => provided_integer = val,
<span class="cn">Err</span>(_) => <span class="op">{</span>
<span class="pp">eprintln!</span>(<span class="st">"… is not an integer"</span>);
<span class="kw">return</span>;
<span class="op">}</span>,
<span class="op">}</span>
<span class="op">}</span>,
<span class="cn">None</span> => <span class="op">{</span>
<span class="pp">eprintln!</span>(<span class="st">"I find this lack of arguments disturbing!"</span>);
<span class="kw">return</span>;
<span class="op">}</span>
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-11">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"> …
<span class="kw">match</span> op <span class="op">{</span>
Op::Push => <span class="op">{</span> s.push(provided_integer) <span class="op">}</span>,
Op::Pop => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{:?}"</span>, s.pop()) <span class="op">}</span>,
Op::Print => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{}"</span>, s) <span class="op">}</span>,
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
<p>Does it compile? <span class="fragment">No, unmatching types in branches</span></p>
</section><section class="slide level2">
<h3 id="data-structure-stack-12">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"> …
<span class="kw">match</span> op <span class="op">{</span>
Op::Push => <span class="op">{</span> s.push(provided_integer); <span class="op">}</span>,
Op::Pop => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{:?}"</span>, s.pop()); <span class="op">}</span>,
Op::Print => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{}"</span>, s); <span class="op">}</span>,
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
<p>Does it compile? Yes, with semicolons.</p>
</section><section class="slide level2">
<h3 id="data-structure-stack-13">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"> …
<span class="kw">match</span> op <span class="op">{</span>
Op::Push => <span class="op">{</span> s.push(provided_integer); <span class="op">}</span>,
Op::Pop => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{:?}"</span>, s.pop()); <span class="op">}</span>,
Op::Print => <span class="op">{</span> <span class="pp">println!</span>(<span class="st">"{}"</span>, s); <span class="op">}</span>,
<span class="op">}</span>
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-14">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust"><span class="kw">fn</span> main() <span class="op">{</span>
<span class="kw">let</span> <span class="kw">mut</span> s = Stack::new();
<span class="kw">loop</span> <span class="op">{</span>
<span class="pp">print!</span>(<span class="st">"⇐ "</span>);
io::stdout().flush().unwrap();
<span class="kw">let</span> line = read_line();
<span class="kw">if</span> line == <span class="st">""</span> || line == <span class="st">"bye</span><span class="sc">\n</span><span class="st">"</span> <span class="op">{</span>
<span class="kw">break</span>
<span class="op">}</span>
handle_input(&<span class="kw">mut</span> s, &line);
<span class="pp">println!</span>(<span class="st">"⇒ {}"</span>, line)
<span class="op">}</span>
<span class="pp">println!</span>(<span class="st">"{}"</span>, s);
<span class="op">}</span></code></pre></div>
</section><section class="slide level2">
<h3 id="data-structure-stack-15">Data structure: Stack</h3>
<div class="sourceCode"><pre class="sourceCode rust"><code class="sourceCode rust">% cargo run
⇐ push <span class="dv">42</span>
⇒ push <span class="dv">42</span>
⇐ push <span class="dv">73</span>
⇒ push <span class="dv">73</span>
⇐ print
Stack<span class="op">[</span><span class="dv">42</span> <span class="dv">73</span><span class="op">]</span>
⇒ print
⇐ pop
<span class="cn">Some</span>(<span class="dv">73</span>)
⇒ pop
⇐ Stack<span class="op">[</span><span class="dv">42</span><span class="op">]</span></code></pre></div>
</section><section id="data-structure-stack-with-strings" class="slide level2">
<h2>Data structure: Stack with strings</h2>
</section><section class="slide level2">
<h3 id="data-structure-stack-with-strings-1">Data structure: Stack with strings</h3>
<p>Use <code>String</code> instead of <code>u64</code> as elements. What is the interesting difference?</p>
<p>→ Replace every occurence of <code>u64</code> with <code>String</code>.</p>
Does it compile?
<p class="fragment">
Yes.
</p>
</section><section id="on-pointers-and-references" class="slide level2">
<h2>On pointers and references</h2>
<p>Pointers in C/C++:</p>
<p>{NULL Pointer, Dangling Pointer, Generic Pointer, Wild Pointer, Near Pointer, Far Pointer, Huge Pointer, Fat pointer, Shared pointer, Smart pointer, Unique pointer, Weak pointer}</p>
</section><section id="on-pointers-and-references-1" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>NULL pointer</strong></p>
<ul>
<li>defined e.g. in <code>stddef.h</code></li>
<li>Tony Hoare “I call it my billion-dollar mistake. It was the invention of the null reference in 1965”</li>
<li>Use Option/Result instead in rust</li>
</ul>
</section><section id="on-pointers-and-references-2" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Dangling Pointer</strong></p>
<ul>
<li>object A exists</li>
<li>pointer p points to A</li>
<li>object A vanishes</li>
<li>pointer p becomes a Dangling pointer</li>
<li>Impossible in rust to the best of my knowledge</li>
</ul>
</section><section id="on-pointers-and-references-3" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Generic Pointer</strong></p>
<ul>
<li>aka “void pointer”</li>
<li><a href="https://doc.rust-lang.org/nightly/std/ptr/fn.null_mut.html">std::ptr::null_mut</a></li>
<li>rust has a strong, full-featured type system</li>
<li>thus only used for FFI in rust</li>
</ul>
</section><section id="on-pointers-and-references-4" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Wild pointer</strong></p>
<ul>
<li>i.e. uninitialized pointer</li>
<li><code>int *ptr;</code> in C</li>
<li><code>let a: Box<u32>; a = Box::new(5);</code> in rust</li>
<li>rust ensure: no read before write!</li>
</ul>
</section><section id="on-pointers-and-references-5" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Near Pointer</strong></p>
<ul>
<li>can only address values in (e.g.) ±32KB data segment</li>
</ul>
<p><strong>Far Pointer</strong></p>
<ul>
<li>can address values outside (e.g.) ±32KB data segment</li>
</ul>
<p>Non-standard Intel extension (16 bit architecture).</p>
</section><section id="on-pointers-and-references-6" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Huge Pointer</strong></p>
<p>Like far pointer, but points to consecutive memory blocks (→ memory management details)</p>
</section><section id="on-pointers-and-references-7" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Fat Pointer</strong></p>
<pre><code>size_of::<&u32>() = 8
size_of::<&[u32; 2]>() = 8
size_of::<&[u32]>() = 16</code></pre>
<p><code>&[u32]</code> must carry around the length of the memory view. Thus needs more space.</p>
<p>via <a href="https://stackoverflow.com/q/57754901">stackoverflow</a></p>
</section><section id="on-pointers-and-references-8" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Shared pointer</strong></p>
<blockquote>
<p>Manages the storage of a pointer, providing a limited garbage-collection facility, possibly sharing that management with other objects.</p>
</blockquote>
<p>via C++: <a href="http://www.cplusplus.com/reference/memory/shared_ptr/">shared_ptr</a></p>
</section><section id="on-pointers-and-references-9" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Smart pointer</strong></p>
<blockquote>
<p>A smart pointer is an abstract data type that simulates a pointer while providing added features, such as automatic memory management or bounds checking</p>
</blockquote>
<p>via <a href="https://en.wikipedia.org/wiki/Smart_pointer">Wikipedia</a></p>
</section><section id="on-pointers-and-references-10" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Unique pointer</strong></p>
<blockquote>
<p><code>std::unique_ptr</code> is a smart pointer that owns and manages another object through a pointer and disposes of that object when the unique_ptr goes out of scope.</p>
</blockquote>
<p>via C++: <a href="https://en.cppreference.com/w/cpp/memory/unique_ptr">unique_ptr</a></p>
</section><section id="on-pointers-and-references-11" class="slide level2">
<h2>On pointers and references</h2>
<p><strong>Weak pointer</strong></p>
<blockquote>
<p><code>std::weak_ptr</code> is a smart pointer that holds a non-owning ("weak") reference to an object that is managed by std::shared_ptr. It must be converted to std::shared_ptr in order to access the referenced object.</p>
</blockquote>
<p>via C++: <a href="https://en.cppreference.com/w/cpp/memory/weak_ptr">weak_ptr</a></p>
</section><section id="stdrcrc" class="slide level2">
<h2>std::rc::Rc</h2>
<ul>
<li>A single-threaded reference-counting pointer. 'Rc' stands for 'Reference Counted'.</li>
<li>The type <code>Rc<T></code> provides shared ownership of a value of type <code>T</code>, allocated in the heap. Invoking <code>clone</code> on Rc produces a new pointer to the same value in the heap. When the last Rc pointer to a given value is destroyed, the pointed-to value is also destroyed.</li>
</ul>
<p>via <a href="https://doc.rust-lang.org/std/rc/index.html">rust doc</a></p>
</section><section id="data-structure-graph" class="slide level2">
<h2>Data structure: Graph</h2>
<ul>
<li>A graph consists of vertices and edges</li>
<li>Vertices are distinctive and edges are tuples (directed) or sets (undirected) of 2 edges</li>
<li>e.g. DAG – Directed Acyclic Graph</li>
<li>See code example</li>
</ul>
</section><section class="slide level2">
<h3 id="valgrind-to-check-for-memory-leaks">valgrind to check for memory leaks</h3>
<pre><code>% valgrind ./target/debug/strstack
==4731== Memcheck, a memory error detector
==4731== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4731== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==4731== Command: ./target/debug/stack
==4731==
⇐ push foo
⇒ push foo
⇐ push bar
⇒ push bar
⇐ push baz
⇒ push baz
⇐ pop
Some("baz")
⇒ pop
⇐ Stack[foo bar]
0x1ffefff4a4 0x1ffefff4a8
==4731==
==4731== HEAP SUMMARY:
==4731== in use at exit: 0 bytes in 0 blocks
==4731== total heap usage: 39 allocs, 39 frees, 12,030 bytes allocated
==4731==
==4731== All heap blocks were freed -- no leaks are possible
==4731==
==4731== For counts of detected and suppressed errors, rerun with: -v
==4731== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)</code></pre>
</section></section>
<section><section id="epilogue" class="titleslide slide level1"><h1>Epilogue</h1></section><section id="quiz-4" class="slide level2">
<h2>Quiz</h2>
<dl>
<dt>
How can we print a pointer with fmt?
</dt>
<dd class="fragment">
<code>{:p}</code>
</dd>
<dt>
What is rust's ultimate borrowing rule?
</dt>
<dd class="fragment">
aliasing XOR mutation
</dd>
<dt>
Which print macro prints to stderr?
</dt>
<dd class="fragment">
e-prefixed <code>eprintln!(…)</code>
</dd>
<dt>
How can we parse a string into an integer?
</dt>
<dd class="fragment">
<code>stringvar.parse::<u64>()</code>
</dd>
<dt>
Why was <code>#[derive(PartialEq)]</code> required?
</dt>
<dd class="fragment">
<code>op == Op::Push</code> requires it, not <code>match</code>
</dd>
</dl>
</section><section id="next-session" class="slide level2">
<h2>Next session</h2>
<p>Wed, 2019/12/25 19:00? <br /> → 2019/12/18 instead</p>
<p>My suggestion:</p>
<ol type="1">
<li><strong>Short topic:</strong> Strings, string types and UTF-8</li>
<li><strong>Fun:</strong> Hacker jeopardy</li>
</ol>
<p>January: Traits, generics <br /> Feb+: lifetimes, concurrency, macros, crates, crates, crates …</p>
</section></section>
</div>
</div>
<script src="data:text/html; charset=utf-8,%3C%21DOCTYPE%20html%3E%0A%3Chtml%3E%0A%20%20%3Chead%3E%0A%20%20%20%20%3Cmeta%20http%2Dequiv%3D%22Content%2Dtype%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf%2D8%22%3E%0A%20%20%20%20%3Cmeta%20http%2Dequiv%3D%22Content%2DSecurity%2DPolicy%22%20content%3D%22default%2Dsrc%20%27none%27%3B%20style%2Dsrc%20%27unsafe%2Dinline%27%3B%20img%2Dsrc%20data%3A%3B%20connect%2Dsrc%20%27self%27%22%3E%0A%20%20%20%20%3Ctitle%3EPage%20not%20found%20%26middot%3B%20GitHub%20Pages%3C%2Ftitle%3E%0A%20%20%20%20%3Cstyle%20type%3D%22text%2Fcss%22%20media%3D%22screen%22%3E%0A%20%20%20%20%20%20body%20%7B%0A%20%20%20%20%20%20%20%20background%2Dcolor%3A%20%23f1f1f1%3B%0A%20%20%20%20%20%20%20%20margin%3A%200%3B%0A%20%20%20%20%20%20%20%20font%2Dfamily%3A%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20Arial%2C%20sans%2Dserif%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2Econtainer%20%7B%20margin%3A%2050px%20auto%2040px%20auto%3B%20width%3A%20600px%3B%20text%2Dalign%3A%20center%3B%20%7D%0A%0A%20%20%20%20%20%20a%20%7B%20color%3A%20%234183c4%3B%20text%2Ddecoration%3A%20none%3B%20%7D%0A%20%20%20%20%20%20a%3Ahover%20%7B%20text%2Ddecoration%3A%20underline%3B%20%7D%0A%0A%20%20%20%20%20%20h1%20%7B%20width%3A%20800px%3B%20position%3Arelative%3B%20left%3A%20%2D100px%3B%20letter%2Dspacing%3A%20%2D1px%3B%20line%2Dheight%3A%2060px%3B%20font%2Dsize%3A%2060px%3B%20font%2Dweight%3A%20100%3B%20margin%3A%200px%200%2050px%200%3B%20text%2Dshadow%3A%200%201px%200%20%23fff%3B%20%7D%0A%20%20%20%20%20%20p%20%7B%20color%3A%20rgba%280%2C%200%2C%200%2C%200%2E5%29%3B%20margin%3A%2020px%200%3B%20line%2Dheight%3A%201%2E6%3B%20%7D%0A%0A%20%20%20%20%20%20ul%20%7B%20list%2Dstyle%3A%20none%3B%20margin%3A%2025px%200%3B%20padding%3A%200%3B%20%7D%0A%20%20%20%20%20%20li%20%7B%20display%3A%20table%2Dcell%3B%20font%2Dweight%3A%20bold%3B%20width%3A%201%25%3B%20%7D%0A%0A%20%20%20%20%20%20%2Elogo%20%7B%20display%3A%20inline%2Dblock%3B%20margin%2Dtop%3A%2035px%3B%20%7D%0A%20%20%20%20%20%20%2Elogo%2Dimg%2D2x%20%7B%20display%3A%20none%3B%20%7D%0A%20%20%20%20%20%20%40media%0A%20%20%20%20%20%20only%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A%202%29%2C%0A%20%20%20%20%20%20only%20screen%20and%20%28%20%20%20min%2D%2Dmoz%2Ddevice%2Dpixel%2Dratio%3A%202%29%2C%0A%20%20%20%20%20%20only%20screen%20and%20%28%20%20%20%20%20%2Do%2Dmin%2Ddevice%2Dpixel%2Dratio%3A%202%2F1%29%2C%0A%20%20%20%20%20%20only%20screen%20and%20%28%20%20%20%20%20%20%20%20min%2Ddevice%2Dpixel%2Dratio%3A%202%29%2C%0A%20%20%20%20%20%20only%20screen%20and%20%28%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20min%2Dresolution%3A%20192dpi%29%2C%0A%20%20%20%20%20%20only%20screen%20and%20%28%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20min%2Dresolution%3A%202dppx%29%20%7B%0A%20%20%20%20%20%20%20%20%2Elogo%2Dimg%2D1x%20%7B%20display%3A%20none%3B%20%7D%0A%20%20%20%20%20%20%20%20%2Elogo%2Dimg%2D2x%20%7B%20display%3A%20inline%2Dblock%3B%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%23suggestions%20%7B%0A%20%20%20%20%20%20%20%20margin%2Dtop%3A%2035px%3B%0A%20%20%20%20%20%20%20%20color%3A%20%23ccc%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%23suggestions%20a%20%7B%0A%20%20%20%20%20%20%20%20color%3A%20%23666666%3B%0A%20%20%20%20%20%20%20%20font%2Dweight%3A%20200%3B%0A%20%20%20%20%20%20%20%20font%2Dsize%3A%2014px%3B%0A%20%20%20%20%20%20%20%20margin%3A%200%2010px%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%3C%2Fstyle%3E%0A%20%20%3C%2Fhead%3E%0A%20%20%3Cbody%3E%0A%0A%20%20%20%20%3Cdiv%20class%3D%22container%22%3E%0A%0A%20%20%20%20%20%20%3Ch1%3E404%3C%2Fh1%3E%0A%20%20%20%20%20%20%3Cp%3E%3Cstrong%3EFile%20not%20found%3C%2Fstrong%3E%3C%2Fp%3E%0A%0A%20%20%20%20%20%20%3Cp%3E%0A%20%20%20%20%20%20%20%20The%20site%20configured%20at%20this%20address%20does%20not%0A%20%20%20%20%20%20%20%20contain%20the%20requested%20file%2E%0A%20%20%20%20%20%20%3C%2Fp%3E%0A%0A%20%20%20%20%20%20%3Cp%3E%0A%20%20%20%20%20%20%20%20If%20this%20is%20your%20site%2C%20make%20sure%20that%20the%20filename%20case%20matches%20the%20URL%2E%3Cbr%3E%0A%20%20%20%20%20%20%20%20For%20root%20URLs%20%28like%20%3Ccode%3Ehttp%3A%2F%2Fexample%2Ecom%2F%3C%2Fcode%3E%29%20you%20must%20provide%20an%0A%20%20%20%20%20%20%20%20%3Ccode%3Eindex%2Ehtml%3C%2Fcode%3E%20file%2E%0A%20%20%20%20%20%20%3C%2Fp%3E%0A%0A%20%20%20%20%20%20%3Cp%3E%0A%20%20%20%20%20%20%20%20%3Ca%20href%3D%22https%3A%2F%2Fhelp%2Egithub%2Ecom%2Fpages%2F%22%3ERead%20the%20full%20documentation%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20for%20more%20information%20about%20using%20%3Cstrong%3EGitHub%20Pages%3C%2Fstrong%3E%2E%0A%20%20%20%20%20%20%3C%2Fp%3E%0A%0A%20%20%20%20%20%20%3Cdiv%20id%3D%22suggestions%22%3E%0A%20%20%20%20%20%20%20%20%3Ca%20href%3D%22https%3A%2F%2Fgithubstatus%2Ecom%22%3EGitHub%20Status%3C%2Fa%3E%20%26mdash%3B%0A%20%20%20%20%20%20%20%20%3Ca%20href%3D%22https%3A%2F%2Ftwitter%2Ecom%2Fgithubstatus%22%3E%40githubstatus%3C%2Fa%3E%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0A%0A%20%20%20%20%20%20%3Ca%20href%3D%22%2F%22%20class%3D%22logo%20logo%2Dimg%2D1x%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20width%3D%2232%22%20height%3D%2232%22%20title%3D%22%22%20alt%3D%22%22%20src%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2BSM9MCAAAA%2B5JREFUeNrEV11Ik1EY3s4%2BddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU%2Fq5iDAKs6syoS76IRWtyJ%2Bp7cdt7sf1PGOD%2Be0c3dygAx%2F67ZzzPM95%2F877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa%2FpmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim%2F1%2B%2F9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr%2BJxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA%2Bi3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35%2BLi4n4%2B%2FJ%2B%2FJQCxhmu5h3uJoXNHPbmWZAHMshWB8l5%2FipqammaAf0zPDDx1ONV3vurdidqwAQL%2BpEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE%2Fo4J0k3kww4xSlwIhcq3EFFOm7KN%2FhUGOQkt0CFa5WpNJlMvxBEz%2FIVQAxg%2FZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8%2F9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk%2FPz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz%2BGLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc%2BT1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa%2BcZz8Umqe3TCbSLvdfkR%2FkWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D%2F634VRt%2BFvLBgK%2Fv5LV9WS%2B10xMTEwtRw7XvqOL%2Be2Q8V3AYIOIAXQ26%2FheWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi%2B6F6cdW%2FDICkANRfx99fEYFQ7Nph5i%2FuQiA214gno7K%2BguhaiKg9gC62%2BM8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z%2FFPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII%3D%22%3E%0A%20%20%20%20%20%20%3C%2Fa%3E%0A%0A%20%20%20%20%20%20%3Ca%20href%3D%22%2F%22%20class%3D%22logo%20logo%2Dimg%2D2x%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20width%3D%2232%22%20height%3D%2232%22%20title%3D%22%22%20alt%3D%22%22%20src%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2BhfPRaQAAB6lJREFUeNrsW2mME2UYbodtt%2B2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S%2BQOiHAYUj2hMNKgYlEujpNttu9vttbvdw%2BchU1K6M535pt3ubHCSyezR%2Bb73eb73%2Bt7vrfXsufOW4bz6%2Bvom9%2Fb23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP%2FAfcput5%2FA88xwymcdBgLqenp6FuRyuWV4zu%2Fv759QyWBjxoz5t76%2B%2Fgun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6%2FgBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24%2BdUzQiAbS%2Fs7Ox8G2o%2F3mKCC%2BZw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f%2BMp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI%2BQXJsiyjzNEAJyJAzb%2FKQa41jJKL8pODMQiTEAymXw5n8%2FP0IjD3bh7Rgog59aanxiIRTVvV%2Foj0tnHca%2FWMrVwODwB3raTGxzkBg%2FgnZVapFV62Wy2n5AO70HM%2F5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X%2Fg60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk%2BjN8dl%2FvF7vWofDsa%2BMLN9oEUBMxOb3%2B1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ%2BixzPFxZyqRpXARG%2FYOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8%2FLmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe%2Fp1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p%2FxQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq%2BZ1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR%2FMJjLLMSQNm43xAiQKTaA%2B9%2FwewhDjL%2BJVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY%2FBJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63%2FyCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg%2BGZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh%2FaKTAY%2B5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B%2FPXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW%2FHuV%2Fj5d%2Fb%2B6jniKlllP8lkeONJDk%2Bdq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI%2BC45Htj1d6sd429TUNEcmUdc%2BPRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc%2Bn2%2BNTsZ7%2FH7%2FMr3g5XdSIHyJSH1PZ%2B7fToyl2%2BErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F%2BVexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR%2BO7qASSezXB%2Bh1SuUomgg9LL8BUoV4749EIolKh%2BEiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW%2BKDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62%2BWZIDFRUlNVOiwencnNU3aQEkL%2BcDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87%2Bjo2K2QAVphDrfyViK5VqtO34OkaxXCp%2B7drdDBCAdubm6eidX%2B2WwqT5komwh4YQLk%2BH4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9%2FKZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA%2FRkQ5kP8qV%2FJl1WywAp%2F6%2BdcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH%2BPtQT7%2FbrW%2BNXqJAHh0y9V8%2FU%2FA1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC%22%3E%0A%20%20%20%20%20%20%3C%2Fa%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A"></script>
<script src="data:application/javascript; charset=utf-8;base64,LyohCiAqIHJldmVhbC5qcwogKiBodHRwOi8vcmV2ZWFsanMuY29tCiAqIE1JVCBsaWNlbnNlZAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTkgSGFraW0gRWwgSGF0dGFiLCBodHRwOi8vaGFraW0uc2UKICovCihmdW5jdGlvbiggcm9vdCwgZmFjdG9yeSApIHsKCWlmKCB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgKSB7CgkJLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgoJCWRlZmluZSggZnVuY3Rpb24oKSB7CgkJCXJvb3QuUmV2ZWFsID0gZmFjdG9yeSgpOwoJCQlyZXR1cm4gcm9vdC5SZXZlYWw7CgkJfSApOwoJfSBlbHNlIGlmKCB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgKSB7CgkJLy8gTm9kZS4gRG9lcyBub3Qgd29yayB3aXRoIHN0cmljdCBDb21tb25KUy4KCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTsKCX0gZWxzZSB7CgkJLy8gQnJvd3NlciBnbG9iYWxzLgoJCXJvb3QuUmV2ZWFsID0gZmFjdG9yeSgpOwoJfQp9KCB0aGlzLCBmdW5jdGlvbigpIHsKCgkndXNlIHN0cmljdCc7CgoJdmFyIFJldmVhbDsKCgkvLyBUaGUgcmV2ZWFsLmpzIHZlcnNpb24KCXZhciBWRVJTSU9OID0gJzMuOC4wJzsKCgl2YXIgU0xJREVTX1NFTEVDVE9SID0gJy5zbGlkZXMgc2VjdGlvbicsCgkJSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgPSAnLnNsaWRlcz5zZWN0aW9uJywKCQlWRVJUSUNBTF9TTElERVNfU0VMRUNUT1IgPSAnLnNsaWRlcz5zZWN0aW9uLnByZXNlbnQ+c2VjdGlvbicsCgkJSE9NRV9TTElERV9TRUxFQ1RPUiA9ICcuc2xpZGVzPnNlY3Rpb246Zmlyc3Qtb2YtdHlwZScsCgkJVUEgPSBuYXZpZ2F0b3IudXNlckFnZW50LAoKCQkvLyBDb25maWd1cmF0aW9uIGRlZmF1bHRzLCBjYW4gYmUgb3ZlcnJpZGRlbiBhdCBpbml0aWFsaXphdGlvbiB0aW1lCgkJY29uZmlnID0gewoKCQkJLy8gVGhlICJub3JtYWwiIHNpemUgb2YgdGhlIHByZXNlbnRhdGlvbiwgYXNwZWN0IHJhdGlvIHdpbGwgYmUgcHJlc2VydmVkCgkJCS8vIHdoZW4gdGhlIHByZXNlbnRhdGlvbiBpcyBzY2FsZWQgdG8gZml0IGRpZmZlcmVudCByZXNvbHV0aW9ucwoJCQl3aWR0aDogOTYwLAoJCQloZWlnaHQ6IDcwMCwKCgkJCS8vIEZhY3RvciBvZiB0aGUgZGlzcGxheSBzaXplIHRoYXQgc2hvdWxkIHJlbWFpbiBlbXB0eSBhcm91bmQgdGhlIGNvbnRlbnQKCQkJbWFyZ2luOiAwLjA0LAoKCQkJLy8gQm91bmRzIGZvciBzbWFsbGVzdC9sYXJnZXN0IHBvc3NpYmxlIHNjYWxlIHRvIGFwcGx5IHRvIGNvbnRlbnQKCQkJbWluU2NhbGU6IDAuMiwKCQkJbWF4U2NhbGU6IDIuMCwKCgkJCS8vIERpc3BsYXkgcHJlc2VudGF0aW9uIGNvbnRyb2wgYXJyb3dzCgkJCWNvbnRyb2xzOiB0cnVlLAoKCQkJLy8gSGVscCB0aGUgdXNlciBsZWFybiB0aGUgY29udHJvbHMgYnkgcHJvdmlkaW5nIGhpbnRzLCBmb3IgZXhhbXBsZSBieQoJCQkvLyBib3VuY2luZyB0aGUgZG93biBhcnJvdyB3aGVuIHRoZXkgZmlyc3QgZW5jb3VudGVyIGEgdmVydGljYWwgc2xpZGUKCQkJY29udHJvbHNUdXRvcmlhbDogdHJ1ZSwKCgkJCS8vIERldGVybWluZXMgd2hlcmUgY29udHJvbHMgYXBwZWFyLCAiZWRnZXMiIG9yICJib3R0b20tcmlnaHQiCgkJCWNvbnRyb2xzTGF5b3V0OiAnYm90dG9tLXJpZ2h0JywKCgkJCS8vIFZpc2liaWxpdHkgcnVsZSBmb3IgYmFja3dhcmRzIG5hdmlnYXRpb24gYXJyb3dzOyAiZmFkZWQiLCAiaGlkZGVuIgoJCQkvLyBvciAidmlzaWJsZSIKCQkJY29udHJvbHNCYWNrQXJyb3dzOiAnZmFkZWQnLAoKCQkJLy8gRGlzcGxheSBhIHByZXNlbnRhdGlvbiBwcm9ncmVzcyBiYXIKCQkJcHJvZ3Jlc3M6IHRydWUsCgoJCQkvLyBEaXNwbGF5IHRoZSBwYWdlIG51bWJlciBvZiB0aGUgY3VycmVudCBzbGlkZQoJCQkvLyAtIHRydWU6ICAgIFNob3cgc2xpZGUgbnVtYmVyCgkJCS8vIC0gZmFsc2U6ICAgSGlkZSBzbGlkZSBudW1iZXIKCQkJLy8KCQkJLy8gQ2FuIG9wdGlvbmFsbHkgYmUgc2V0IGFzIGEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgZm9ybWF0dGluZzoKCQkJLy8gLSAiaC52IjoJICBIb3Jpem9udGFsIC4gdmVydGljYWwgc2xpZGUgbnVtYmVyIChkZWZhdWx0KQoJCQkvLyAtICJoL3YiOgkgIEhvcml6b250YWwgLyB2ZXJ0aWNhbCBzbGlkZSBudW1iZXIKCQkJLy8gLSAiYyI6CSAgRmxhdHRlbmVkIHNsaWRlIG51bWJlcgoJCQkvLyAtICJjL3QiOgkgIEZsYXR0ZW5lZCBzbGlkZSBudW1iZXIgLyB0b3RhbCBzbGlkZXMKCQkJLy8KCQkJLy8gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzbGlkZQoJCQkvLyBudW1iZXIgZm9yIHRoZSBjdXJyZW50IHNsaWRlLiBUaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5CgkJCS8vIHdpdGggb25lIHN0cmluZyBbc2xpZGVOdW1iZXJdIG9yIHRocmVlIHN0cmluZ3MgW24xLGRlbGltaXRlcixuMl0uCgkJCS8vIFNlZSAjZm9ybWF0U2xpZGVOdW1iZXIoKS4KCQkJc2xpZGVOdW1iZXI6IGZhbHNlLAoKCQkJLy8gQ2FuIGJlIHVzZWQgdG8gbGltaXQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZSBzbGlkZSBudW1iZXIgYXBwZWFycwoJCQkvLyAtICJhbGwiOiAgICAgIEFsd2F5cyBzaG93IHRoZSBzbGlkZSBudW1iZXIKCQkJLy8gLSAicHJpbnQiOiAgICBPbmx5IHdoZW4gcHJpbnRpbmcgdG8gUERGCgkJCS8vIC0gInNwZWFrZXIiOiAgT25seSBpbiB0aGUgc3BlYWtlciB2aWV3CgkJCXNob3dTbGlkZU51bWJlcjogJ2FsbCcsCgoJCQkvLyBVc2UgMSBiYXNlZCBpbmRleGluZyBmb3IgIyBsaW5rcyB0byBtYXRjaCBzbGlkZSBudW1iZXIgKGRlZmF1bHQgaXMgemVybwoJCQkvLyBiYXNlZCkKCQkJaGFzaE9uZUJhc2VkSW5kZXg6IGZhbHNlLAoKCQkJLy8gQWRkIHRoZSBjdXJyZW50IHNsaWRlIG51bWJlciB0byB0aGUgVVJMIGhhc2ggc28gdGhhdCByZWxvYWRpbmcgdGhlCgkJCS8vIHBhZ2UvY29weWluZyB0aGUgVVJMIHdpbGwgcmV0dXJuIHlvdSB0byB0aGUgc2FtZSBzbGlkZQoJCQloYXNoOiBmYWxzZSwKCgkJCS8vIFB1c2ggZWFjaCBzbGlkZSBjaGFuZ2UgdG8gdGhlIGJyb3dzZXIgaGlzdG9yeS4gIEltcGxpZXMgYGhhc2g6IHRydWVgCgkJCWhpc3Rvcnk6IGZhbHNlLAoKCQkJLy8gRW5hYmxlIGtleWJvYXJkIHNob3J0Y3V0cyBmb3IgbmF2aWdhdGlvbgoJCQlrZXlib2FyZDogdHJ1ZSwKCgkJCS8vIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgYmxvY2tzIGtleWJvYXJkIGV2ZW50cyB3aGVuIHJldHVuaW5nIGZhbHNlCgkJCWtleWJvYXJkQ29uZGl0aW9uOiBudWxsLAoKCQkJLy8gRW5hYmxlIHRoZSBzbGlkZSBvdmVydmlldyBtb2RlCgkJCW92ZXJ2aWV3OiB0cnVlLAoKCQkJLy8gRGlzYWJsZXMgdGhlIGRlZmF1bHQgcmV2ZWFsLmpzIHNsaWRlIGxheW91dCBzbyB0aGF0IHlvdSBjYW4gdXNlCgkJCS8vIGN1c3RvbSBDU1MgbGF5b3V0CgkJCWRpc2FibGVMYXlvdXQ6IGZhbHNlLAoKCQkJLy8gVmVydGljYWwgY2VudGVyaW5nIG9mIHNsaWRlcwoJCQljZW50ZXI6IHRydWUsCgoJCQkvLyBFbmFibGVzIHRvdWNoIG5hdmlnYXRpb24gb24gZGV2aWNlcyB3aXRoIHRvdWNoIGlucHV0CgkJCXRvdWNoOiB0cnVlLAoKCQkJLy8gTG9vcCB0aGUgcHJlc2VudGF0aW9uCgkJCWxvb3A6IGZhbHNlLAoKCQkJLy8gQ2hhbmdlIHRoZSBwcmVzZW50YXRpb24gZGlyZWN0aW9uIHRvIGJlIFJUTAoJCQlydGw6IGZhbHNlLAoKCQkJLy8gQ2hhbmdlcyB0aGUgYmVoYXZpb3Igb2Ygb3VyIG5hdmlnYXRpb24gZGlyZWN0aW9ucy4KCQkJLy8KCQkJLy8gImRlZmF1bHQiCgkJCS8vIExlZnQvcmlnaHQgYXJyb3cga2V5cyBzdGVwIGJldHdlZW4gaG9yaXpvbnRhbCBzbGlkZXMsIHVwL2Rvd24KCQkJLy8gYXJyb3cga2V5cyBzdGVwIGJldHdlZW4gdmVydGljYWwgc2xpZGVzLiBTcGFjZSBrZXkgc3RlcHMgdGhyb3VnaAoJCQkvLyBhbGwgc2xpZGVzIChib3RoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsKS4KCQkJLy8KCQkJLy8gImxpbmVhciIKCQkJLy8gUmVtb3ZlcyB0aGUgdXAvZG93biBhcnJvd3MuIExlZnQvcmlnaHQgYXJyb3dzIHN0ZXAgdGhyb3VnaCBhbGwKCQkJLy8gc2xpZGVzIChib3RoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsKS4KCQkJLy8KCQkJLy8gImdyaWQiCgkJCS8vIFdoZW4gdGhpcyBpcyBlbmFibGVkLCBzdGVwcGluZyBsZWZ0L3JpZ2h0IGZyb20gYSB2ZXJ0aWNhbCBzdGFjawoJCQkvLyB0byBhbiBhZGphY2VudCB2ZXJ0aWNhbCBzdGFjayB3aWxsIGxhbmQgeW91IGF0IHRoZSBzYW1lIHZlcnRpY2FsCgkJCS8vIGluZGV4LgoJCQkvLwoJCQkvLyBDb25zaWRlciBhIGRlY2sgd2l0aCBzaXggc2xpZGVzIG9yZGVyZWQgaW4gdHdvIHZlcnRpY2FsIHN0YWNrczoKCQkJLy8gMS4xICAgIDIuMQoJCQkvLyAxLjIgICAgMi4yCgkJCS8vIDEuMyAgICAyLjMKCQkJLy8KCQkJLy8gSWYgeW91J3JlIG9uIHNsaWRlIDEuMyBhbmQgbmF2aWdhdGUgcmlnaHQsIHlvdSB3aWxsIG5vcm1hbGx5IG1vdmUKCQkJLy8gZnJvbSAxLjMgLT4gMi4xLiBJZiAiZ3JpZCIgaXMgdXNlZCwgdGhlIHNhbWUgbmF2aWdhdGlvbiB0YWtlcyB5b3UKCQkJLy8gZnJvbSAxLjMgLT4gMi4zLgoJCQluYXZpZ2F0aW9uTW9kZTogJ2RlZmF1bHQnLAoKCQkJLy8gUmFuZG9taXplcyB0aGUgb3JkZXIgb2Ygc2xpZGVzIGVhY2ggdGltZSB0aGUgcHJlc2VudGF0aW9uIGxvYWRzCgkJCXNodWZmbGU6IGZhbHNlLAoKCQkJLy8gVHVybnMgZnJhZ21lbnRzIG9uIGFuZCBvZmYgZ2xvYmFsbHkKCQkJZnJhZ21lbnRzOiB0cnVlLAoKCQkJLy8gRmxhZ3Mgd2hldGhlciB0byBpbmNsdWRlIHRoZSBjdXJyZW50IGZyYWdtZW50IGluIHRoZSBVUkwsCgkJCS8vIHNvIHRoYXQgcmVsb2FkaW5nIGJyaW5ncyB5b3UgdG8gdGhlIHNhbWUgZnJhZ21lbnQgcG9zaXRpb24KCQkJZnJhZ21lbnRJblVSTDogZmFsc2UsCgoJCQkvLyBGbGFncyBpZiB0aGUgcHJlc2VudGF0aW9uIGlzIHJ1bm5pbmcgaW4gYW4gZW1iZWRkZWQgbW9kZSwKCQkJLy8gaS5lLiBjb250YWluZWQgd2l0aGluIGEgbGltaXRlZCBwb3J0aW9uIG9mIHRoZSBzY3JlZW4KCQkJZW1iZWRkZWQ6IGZhbHNlLAoKCQkJLy8gRmxhZ3MgaWYgd2Ugc2hvdWxkIHNob3cgYSBoZWxwIG92ZXJsYXkgd2hlbiB0aGUgcXVlc3Rpb24tbWFyawoJCQkvLyBrZXkgaXMgcHJlc3NlZAoJCQloZWxwOiB0cnVlLAoKCQkJLy8gRmxhZ3MgaWYgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHBhdXNlIHRoZSBwcmVzZW50YXRpb24gKGJsYWNrb3V0KQoJCQlwYXVzZTogdHJ1ZSwKCgkJCS8vIEZsYWdzIGlmIHNwZWFrZXIgbm90ZXMgc2hvdWxkIGJlIHZpc2libGUgdG8gYWxsIHZpZXdlcnMKCQkJc2hvd05vdGVzOiBmYWxzZSwKCgkJCS8vIEdsb2JhbCBvdmVycmlkZSBmb3IgYXV0b2xheWluZyBlbWJlZGRlZCBtZWRpYSAodmlkZW8vYXVkaW8vaWZyYW1lKQoJCQkvLyAtIG51bGw6ICAgTWVkaWEgd2lsbCBvbmx5IGF1dG9wbGF5IGlmIGRhdGEtYXV0b3BsYXkgaXMgcHJlc2VudAoJCQkvLyAtIHRydWU6ICAgQWxsIG1lZGlhIHdpbGwgYXV0b3BsYXksIHJlZ2FyZGxlc3Mgb2YgaW5kaXZpZHVhbCBzZXR0aW5nCgkJCS8vIC0gZmFsc2U6ICBObyBtZWRpYSB3aWxsIGF1dG9wbGF5LCByZWdhcmRsZXNzIG9mIGluZGl2aWR1YWwgc2V0dGluZwoJCQlhdXRvUGxheU1lZGlhOiBudWxsLAoKCQkJLy8gR2xvYmFsIG92ZXJyaWRlIGZvciBwcmVsb2FkaW5nIGxhenktbG9hZGVkIGlmcmFtZXMKCQkJLy8gLSBudWxsOiAgIElmcmFtZXMgd2l0aCBkYXRhLXNyYyBBTkQgZGF0YS1wcmVsb2FkIHdpbGwgYmUgbG9hZGVkIHdoZW4gd2l0aGluCgkJCS8vICAgICAgICAgICB0aGUgdmlld0Rpc3RhbmNlLCBpZnJhbWVzIHdpdGggb25seSBkYXRhLXNyYyB3aWxsIGJlIGxvYWRlZCB3aGVuIHZpc2libGUKCQkJLy8gLSB0cnVlOiAgIEFsbCBpZnJhbWVzIHdpdGggZGF0YS1zcmMgd2lsbCBiZSBsb2FkZWQgd2hlbiB3aXRoaW4gdGhlIHZpZXdEaXN0YW5jZQoJCQkvLyAtIGZhbHNlOiAgQWxsIGlmcmFtZXMgd2l0aCBkYXRhLXNyYyB3aWxsIGJlIGxvYWRlZCBvbmx5IHdoZW4gdmlzaWJsZQoJCQlwcmVsb2FkSWZyYW1lczogbnVsbCwKCgkJCS8vIENvbnRyb2xzIGF1dG9tYXRpYyBwcm9ncmVzc2lvbiB0byB0aGUgbmV4dCBzbGlkZQoJCQkvLyAtIDA6ICAgICAgQXV0by1zbGlkaW5nIG9ubHkgaGFwcGVucyBpZiB0aGUgZGF0YS1hdXRvc2xpZGUgSFRNTCBhdHRyaWJ1dGUKCQkJLy8gICAgICAgICAgIGlzIHByZXNlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGUgb3IgZnJhZ21lbnQKCQkJLy8gLSAxKzogICAgIEFsbCBzbGlkZXMgd2lsbCBwcm9ncmVzcyBhdXRvbWF0aWNhbGx5IGF0IHRoZSBnaXZlbiBpbnRlcnZhbAoJCQkvLyAtIGZhbHNlOiAgTm8gYXV0by1zbGlkaW5nLCBldmVuIGlmIGRhdGEtYXV0b3NsaWRlIGlzIHByZXNlbnQKCQkJYXV0b1NsaWRlOiAwLAoKCQkJLy8gU3RvcCBhdXRvLXNsaWRpbmcgYWZ0ZXIgdXNlciBpbnB1dAoJCQlhdXRvU2xpZGVTdG9wcGFibGU6IHRydWUsCgoJCQkvLyBVc2UgdGhpcyBtZXRob2QgZm9yIG5hdmlnYXRpb24gd2hlbiBhdXRvLXNsaWRpbmcgKGRlZmF1bHRzIHRvIG5hdmlnYXRlTmV4dCkKCQkJYXV0b1NsaWRlTWV0aG9kOiBudWxsLAoKCQkJLy8gU3BlY2lmeSB0aGUgYXZlcmFnZSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3UgdGhpbmsgeW91IHdpbGwgc3BlbmQKCQkJLy8gcHJlc2VudGluZyBlYWNoIHNsaWRlLiBUaGlzIGlzIHVzZWQgdG8gc2hvdyBhIHBhY2luZyB0aW1lciBpbiB0aGUKCQkJLy8gc3BlYWtlciB2aWV3CgkJCWRlZmF1bHRUaW1pbmc6IG51bGwsCgoJCQkvLyBFbmFibGUgc2xpZGUgbmF2aWdhdGlvbiB2aWEgbW91c2Ugd2hlZWwKCQkJbW91c2VXaGVlbDogZmFsc2UsCgoJCQkvLyBBcHBseSBhIDNEIHJvbGwgdG8gbGlua3Mgb24gaG92ZXIKCQkJcm9sbGluZ0xpbmtzOiBmYWxzZSwKCgkJCS8vIEhpZGVzIHRoZSBhZGRyZXNzIGJhciBvbiBtb2JpbGUgZGV2aWNlcwoJCQloaWRlQWRkcmVzc0JhcjogdHJ1ZSwKCgkJCS8vIE9wZW5zIGxpbmtzIGluIGFuIGlmcmFtZSBwcmV2aWV3IG92ZXJsYXkKCQkJLy8gQWRkIGBkYXRhLXByZXZpZXctbGlua2AgYW5kIGBkYXRhLXByZXZpZXctbGluaz0iZmFsc2UiYCB0byBjdXN0b21pc2UgZWFjaCBsaW5rCgkJCS8vIGluZGl2aWR1YWxseQoJCQlwcmV2aWV3TGlua3M6IGZhbHNlLAoKCQkJLy8gRXhwb3NlcyB0aGUgcmV2ZWFsLmpzIEFQSSB0aHJvdWdoIHdpbmRvdy5wb3N0TWVzc2FnZQoJCQlwb3N0TWVzc2FnZTogdHJ1ZSwKCgkJCS8vIERpc3BhdGNoZXMgYWxsIHJldmVhbC5qcyBldmVudHMgdG8gdGhlIHBhcmVudCB3aW5kb3cgdGhyb3VnaCBwb3N0TWVzc2FnZQoJCQlwb3N0TWVzc2FnZUV2ZW50czogZmFsc2UsCgoJCQkvLyBGb2N1c2VzIGJvZHkgd2hlbiBwYWdlIGNoYW5nZXMgdmlzaWJpbGl0eSB0byBlbnN1cmUga2V5Ym9hcmQgc2hvcnRjdXRzIHdvcmsKCQkJZm9jdXNCb2R5T25QYWdlVmlzaWJpbGl0eUNoYW5nZTogdHJ1ZSwKCgkJCS8vIFRyYW5zaXRpb24gc3R5bGUKCQkJdHJhbnNpdGlvbjogJ3NsaWRlJywgLy8gbm9uZS9mYWRlL3NsaWRlL2NvbnZleC9jb25jYXZlL3pvb20KCgkJCS8vIFRyYW5zaXRpb24gc3BlZWQKCQkJdHJhbnNpdGlvblNwZWVkOiAnZGVmYXVsdCcsIC8vIGRlZmF1bHQvZmFzdC9zbG93CgoJCQkvLyBUcmFuc2l0aW9uIHN0eWxlIGZvciBmdWxsIHBhZ2Ugc2xpZGUgYmFja2dyb3VuZHMKCQkJYmFja2dyb3VuZFRyYW5zaXRpb246ICdmYWRlJywgLy8gbm9uZS9mYWRlL3NsaWRlL2NvbnZleC9jb25jYXZlL3pvb20KCgkJCS8vIFBhcmFsbGF4IGJhY2tncm91bmQgaW1hZ2UKCQkJcGFyYWxsYXhCYWNrZ3JvdW5kSW1hZ2U6ICcnLCAvLyBDU1Mgc3ludGF4LCBlLmcuICJhLmpwZyIKCgkJCS8vIFBhcmFsbGF4IGJhY2tncm91bmQgc2l6ZQoJCQlwYXJhbGxheEJhY2tncm91bmRTaXplOiAnJywgLy8gQ1NTIHN5bnRheCwgZS5nLiAiMzAwMHB4IDIwMDBweCIKCgkJCS8vIFBhcmFsbGF4IGJhY2tncm91bmQgcmVwZWF0CgkJCXBhcmFsbGF4QmFja2dyb3VuZFJlcGVhdDogJycsIC8vIHJlcGVhdC9yZXBlYXQteC9yZXBlYXQteS9uby1yZXBlYXQvaW5pdGlhbC9pbmhlcml0CgoJCQkvLyBQYXJhbGxheCBiYWNrZ3JvdW5kIHBvc2l0aW9uCgkJCXBhcmFsbGF4QmFja2dyb3VuZFBvc2l0aW9uOiAnJywgLy8gQ1NTIHN5bnRheCwgZS5nLiAidG9wIGxlZnQiCgoJCQkvLyBBbW91bnQgb2YgcGl4ZWxzIHRvIG1vdmUgdGhlIHBhcmFsbGF4IGJhY2tncm91bmQgcGVyIHNsaWRlIHN0ZXAKCQkJcGFyYWxsYXhCYWNrZ3JvdW5kSG9yaXpvbnRhbDogbnVsbCwKCQkJcGFyYWxsYXhCYWNrZ3JvdW5kVmVydGljYWw6IG51bGwsCgoJCQkvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMgYSBzaW5nbGUgc2xpZGUgY2FuIGV4cGFuZCBvbnRvIHdoZW4gcHJpbnRpbmcKCQkJLy8gdG8gUERGLCB1bmxpbWl0ZWQgYnkgZGVmYXVsdAoJCQlwZGZNYXhQYWdlc1BlclNsaWRlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksCgoJCQkvLyBQcmludHMgZWFjaCBmcmFnbWVudCBvbiBhIHNlcGFyYXRlIHNsaWRlCgkJCXBkZlNlcGFyYXRlRnJhZ21lbnRzOiB0cnVlLAoKCQkJLy8gT2Zmc2V0IHVzZWQgdG8gcmVkdWNlIHRoZSBoZWlnaHQgb2YgY29udGVudCB3aXRoaW4gZXhwb3J0ZWQgUERGIHBhZ2VzLgoJCQkvLyBUaGlzIGV4aXN0cyB0byBhY2NvdW50IGZvciBlbnZpcm9ubWVudCBkaWZmZXJlbmNlcyBiYXNlZCBvbiBob3cgeW91CgkJCS8vIHByaW50IHRvIFBERi4gQ0xJIHByaW50aW5nIG9wdGlvbnMsIGxpa2UgcGhhbnRvbWpzIGFuZCB3a3BkZiwgY2FuIGVuZAoJCQkvLyBvbiBwcmVjaXNlbHkgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgZG9jdW1lbnQgd2hlcmVhcyBpbi1icm93c2VyCgkJCS8vIHByaW50aW5nIGhhcyB0byBlbmQgb25lIHBpeGVsIGJlZm9yZS4KCQkJcGRmUGFnZUhlaWdodE9mZnNldDogLTEsCgoJCQkvLyBOdW1iZXIgb2Ygc2xpZGVzIGF3YXkgZnJvbSB0aGUgY3VycmVudCB0aGF0IGFyZSB2aXNpYmxlCgkJCXZpZXdEaXN0YW5jZTogMywKCgkJCS8vIFRoZSBkaXNwbGF5IG1vZGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc2hvdyBzbGlkZXMKCQkJZGlzcGxheTogJ2Jsb2NrJywKCgkJCS8vIEhpZGUgY3Vyc29yIGlmIGluYWN0aXZlCgkJCWhpZGVJbmFjdGl2ZUN1cnNvcjogdHJ1ZSwKCgkJCS8vIFRpbWUgYmVmb3JlIHRoZSBjdXJzb3IgaXMgaGlkZGVuIChpbiBtcykKCQkJaGlkZUN1cnNvclRpbWU6IDUwMDAsCgoJCQkvLyBTY3JpcHQgZGVwZW5kZW5jaWVzIHRvIGxvYWQKCQkJZGVwZW5kZW5jaWVzOiBbXQoKCQl9LAoKCQkvLyBGbGFncyBpZiBSZXZlYWwuaW5pdGlhbGl6ZSgpIGhhcyBiZWVuIGNhbGxlZAoJCWluaXRpYWxpemVkID0gZmFsc2UsCgoJCS8vIEZsYWdzIGlmIHJldmVhbC5qcyBpcyBsb2FkZWQgKGhhcyBkaXNwYXRjaGVkIHRoZSAncmVhZHknIGV2ZW50KQoJCWxvYWRlZCA9IGZhbHNlLAoKCQkvLyBGbGFncyBpZiB0aGUgb3ZlcnZpZXcgbW9kZSBpcyBjdXJyZW50bHkgYWN0aXZlCgkJb3ZlcnZpZXcgPSBmYWxzZSwKCgkJLy8gSG9sZHMgdGhlIGRpbWVuc2lvbnMgb2Ygb3VyIG92ZXJ2aWV3IHNsaWRlcywgaW5jbHVkaW5nIG1hcmdpbnMKCQlvdmVydmlld1NsaWRlV2lkdGggPSBudWxsLAoJCW92ZXJ2aWV3U2xpZGVIZWlnaHQgPSBudWxsLAoKCQkvLyBUaGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgc2xpZGUKCQlpbmRleGgsCgkJaW5kZXh2LAoKCQkvLyBUaGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgc2xpZGUgSFRNTCBlbGVtZW50cwoJCXByZXZpb3VzU2xpZGUsCgkJY3VycmVudFNsaWRlLAoKCQlwcmV2aW91c0JhY2tncm91bmQsCgoJCS8vIFJlbWVtYmVyIHdoaWNoIGRpcmVjdGlvbnMgdGhhdCB0aGUgdXNlciBoYXMgbmF2aWdhdGVkIHRvd2FyZHMKCQloYXNOYXZpZ2F0ZWRSaWdodCA9IGZhbHNlLAoJCWhhc05hdmlnYXRlZERvd24gPSBmYWxzZSwKCgkJLy8gU2xpZGVzIG1heSBob2xkIGEgZGF0YS1zdGF0ZSBhdHRyaWJ1dGUgd2hpY2ggd2UgcGljayB1cCBhbmQgYXBwbHkKCQkvLyBhcyBhIGNsYXNzIHRvIHRoZSBib2R5LiBUaGlzIGxpc3QgY29udGFpbnMgdGhlIGNvbWJpbmVkIHN0YXRlIG9mCgkJLy8gYWxsIGN1cnJlbnQgc2xpZGVzLgoJCXN0YXRlID0gW10sCgoJCS8vIFRoZSBjdXJyZW50IHNjYWxlIG9mIHRoZSBwcmVzZW50YXRpb24gKHNlZSB3aWR0aC9oZWlnaHQgY29uZmlnKQoJCXNjYWxlID0gMSwKCgkJLy8gQ1NTIHRyYW5zZm9ybSB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIHRvIHRoZSBzbGlkZXMgY29udGFpbmVyLAoJCS8vIHNwbGl0IGludG8gdHdvIGdyb3VwcwoJCXNsaWRlc1RyYW5zZm9ybSA9IHsgbGF5b3V0OiAnJywgb3ZlcnZpZXc6ICcnIH0sCgoJCS8vIENhY2hlZCByZWZlcmVuY2VzIHRvIERPTSBlbGVtZW50cwoJCWRvbSA9IHt9LAoKCQkvLyBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCByZXZlYWwuanMgcGx1Z2lucwoJCXBsdWdpbnMgPSB7fSwKCgkJLy8gTGlzdCBvZiBhc3luY2hyb25vdXNseSBsb2FkZWQgcmV2ZWFsLmpzIGRlcGVuZGVuY2llcwoJCWFzeW5jRGVwZW5kZW5jaWVzID0gW10sCgoJCS8vIEZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlciwgc2VlICNjaGVja0NhcGFiaWxpdGllcygpCgkJZmVhdHVyZXMgPSB7fSwKCgkJLy8gQ2xpZW50IGlzIGEgbW9iaWxlIGRldmljZSwgc2VlICNjaGVja0NhcGFiaWxpdGllcygpCgkJaXNNb2JpbGVEZXZpY2UsCgoJCS8vIENsaWVudCBpcyBhIGRlc2t0b3AgQ2hyb21lLCBzZWUgI2NoZWNrQ2FwYWJpbGl0aWVzKCkKCQlpc0Nocm9tZSwKCgkJLy8gVGhyb3R0bGVzIG1vdXNlIHdoZWVsIG5hdmlnYXRpb24KCQlsYXN0TW91c2VXaGVlbFN0ZXAgPSAwLAoKCQkvLyBEZWxheXMgdXBkYXRlcyB0byB0aGUgVVJMIGR1ZSB0byBhIENocm9tZSB0aHVtYm5haWxlciBidWcKCQl3cml0ZVVSTFRpbWVvdXQgPSAwLAoKCQkvLyBJcyB0aGUgbW91c2UgcG9pbnRlciBjdXJyZW50bHkgaGlkZGVuIGZyb20gdmlldwoJCWN1cnNvckhpZGRlbiA9IGZhbHNlLAoKCQkvLyBUaW1lb3V0IHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIGN1cnNvciBpcyBpbmFjdGl2ZQoJCWN1cnNvckluYWN0aXZlVGltZW91dCA9IDAsCgoJCS8vIEZsYWdzIGlmIHRoZSBpbnRlcmFjdGlvbiBldmVudCBsaXN0ZW5lcnMgYXJlIGJvdW5kCgkJZXZlbnRzQXJlQm91bmQgPSBmYWxzZSwKCgkJLy8gVGhlIGN1cnJlbnQgYXV0by1zbGlkZSBkdXJhdGlvbgoJCWF1dG9TbGlkZSA9IDAsCgoJCS8vIEF1dG8gc2xpZGUgcHJvcGVydGllcwoJCWF1dG9TbGlkZVBsYXllciwKCQlhdXRvU2xpZGVUaW1lb3V0ID0gMCwKCQlhdXRvU2xpZGVTdGFydFRpbWUgPSAtMSwKCQlhdXRvU2xpZGVQYXVzZWQgPSBmYWxzZSwKCgkJLy8gSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBvbmdvaW5nIHRvdWNoIGlucHV0CgkJdG91Y2ggPSB7CgkJCXN0YXJ0WDogMCwKCQkJc3RhcnRZOiAwLAoJCQlzdGFydENvdW50OiAwLAoJCQljYXB0dXJlZDogZmFsc2UsCgkJCXRocmVzaG9sZDogNDAKCQl9LAoKCQkvLyBBIGtleTp2YWx1ZSBtYXAgb2Ygc2hvcnRjdXQga2V5Ym9hcmQga2V5cyBhbmQgZGVzY3JpcHRpb25zIG9mCgkJLy8gdGhlIGFjdGlvbnMgdGhleSB0cmlnZ2VyLCBnZW5lcmF0ZWQgaW4gI2NvbmZpZ3VyZSgpCgkJa2V5Ym9hcmRTaG9ydGN1dHMgPSB7fSwKCgkJLy8gSG9sZHMgY3VzdG9tIGtleSBjb2RlIG1hcHBpbmdzCgkJcmVnaXN0ZXJlZEtleUJpbmRpbmdzID0ge307CgoJLyoqCgkgKiBTdGFydHMgdXAgdGhlIHByZXNlbnRhdGlvbiBpZiB0aGUgY2xpZW50IGlzIGNhcGFibGUuCgkgKi8KCWZ1bmN0aW9uIGluaXRpYWxpemUoIG9wdGlvbnMgKSB7CgoJCS8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGluaXRpYWxpemUgb25jZQoJCWlmKCBpbml0aWFsaXplZCA9PT0gdHJ1ZSApIHJldHVybjsKCgkJaW5pdGlhbGl6ZWQgPSB0cnVlOwoKCQljaGVja0NhcGFiaWxpdGllcygpOwoKCQlpZiggIWZlYXR1cmVzLnRyYW5zZm9ybXMyZCAmJiAhZmVhdHVyZXMudHJhbnNmb3JtczNkICkgewoJCQlkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSggJ2NsYXNzJywgJ25vLXRyYW5zZm9ybXMnICk7CgoJCQkvLyBTaW5jZSBKUyB3b24ndCBiZSBydW5uaW5nIGFueSBmdXJ0aGVyLCB3ZSBsb2FkIGFsbCBsYXp5CgkJCS8vIGxvYWRpbmcgZWxlbWVudHMgdXBmcm9udAoJCQl2YXIgaW1hZ2VzID0gdG9BcnJheSggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICdpbWcnICkgKSwKCQkJCWlmcmFtZXMgPSB0b0FycmF5KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2lmcmFtZScgKSApOwoKCQkJdmFyIGxhenlMb2FkYWJsZSA9IGltYWdlcy5jb25jYXQoIGlmcmFtZXMgKTsKCgkJCWZvciggdmFyIGkgPSAwLCBsZW4gPSBsYXp5TG9hZGFibGUubGVuZ3RoOyBpIDwgbGVuOyBpKysgKSB7CgkJCQl2YXIgZWxlbWVudCA9IGxhenlMb2FkYWJsZVtpXTsKCQkJCWlmKCBlbGVtZW50LmdldEF0dHJpYnV0ZSggJ2RhdGEtc3JjJyApICkgewoJCQkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAnc3JjJywgZWxlbWVudC5nZXRBdHRyaWJ1dGUoICdkYXRhLXNyYycgKSApOwoJCQkJCWVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCAnZGF0YS1zcmMnICk7CgkJCQl9CgkJCX0KCgkJCS8vIElmIHRoZSBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBjb3JlIGZlYXR1cmVzIHdlIHdvbid0IGJlCgkJCS8vIHVzaW5nIEphdmFTY3JpcHQgdG8gY29udHJvbCB0aGUgcHJlc2VudGF0aW9uCgkJCXJldHVybjsKCQl9CgoJCS8vIENhY2hlIHJlZmVyZW5jZXMgdG8ga2V5IERPTSBlbGVtZW50cwoJCWRvbS53cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy5yZXZlYWwnICk7CgkJZG9tLnNsaWRlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICcucmV2ZWFsIC5zbGlkZXMnICk7CgoJCS8vIEZvcmNlIGEgbGF5b3V0IHdoZW4gdGhlIHdob2xlIHBhZ2UsIGluY2wgZm9udHMsIGhhcyBsb2FkZWQKCQl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCBsYXlvdXQsIGZhbHNlICk7CgoJCXZhciBxdWVyeSA9IFJldmVhbC5nZXRRdWVyeUhhc2goKTsKCgkJLy8gRG8gbm90IGFjY2VwdCBuZXcgZGVwZW5kZW5jaWVzIHZpYSBxdWVyeSBjb25maWcgdG8gYXZvaWQKCQkvLyB0aGUgcG90ZW50aWFsIG9mIG1hbGljaW91cyBzY3JpcHQgaW5qZWN0aW9uCgkJaWYoIHR5cGVvZiBxdWVyeVsnZGVwZW5kZW5jaWVzJ10gIT09ICd1bmRlZmluZWQnICkgZGVsZXRlIHF1ZXJ5WydkZXBlbmRlbmNpZXMnXTsKCgkJLy8gQ29weSBvcHRpb25zIG92ZXIgdG8gb3VyIGNvbmZpZyBvYmplY3QKCQlleHRlbmQoIGNvbmZpZywgb3B0aW9ucyApOwoJCWV4dGVuZCggY29uZmlnLCBxdWVyeSApOwoKCQkvLyBIaWRlIHRoZSBhZGRyZXNzIGJhciBpbiBtb2JpbGUgYnJvd3NlcnMKCQloaWRlQWRkcmVzc0JhcigpOwoKCQkvLyBMb2FkcyBkZXBlbmRlbmNpZXMgYW5kIGNvbnRpbnVlcyB0byAjc3RhcnQoKSBvbmNlIGRvbmUKCQlsb2FkKCk7CgoJfQoKCS8qKgoJICogSW5zcGVjdCB0aGUgY2xpZW50IHRvIHNlZSB3aGF0IGl0J3MgY2FwYWJsZSBvZiwgdGhpcwoJICogc2hvdWxkIG9ubHkgaGFwcGVucyBvbmNlIHBlciBydW50aW1lLgoJICovCglmdW5jdGlvbiBjaGVja0NhcGFiaWxpdGllcygpIHsKCgkJaXNNb2JpbGVEZXZpY2UgPSAvKGlwaG9uZXxpcG9kfGlwYWR8YW5kcm9pZCkvZ2kudGVzdCggVUEgKTsKCQlpc0Nocm9tZSA9IC9jaHJvbWUvaS50ZXN0KCBVQSApICYmICEvZWRnZS9pLnRlc3QoIFVBICk7CgoJCXZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7CgoJCWZlYXR1cmVzLnRyYW5zZm9ybXMzZCA9ICdXZWJraXRQZXJzcGVjdGl2ZScgaW4gdGVzdEVsZW1lbnQuc3R5bGUgfHwKCQkJCQkJCQknTW96UGVyc3BlY3RpdmUnIGluIHRlc3RFbGVtZW50LnN0eWxlIHx8CgkJCQkJCQkJJ21zUGVyc3BlY3RpdmUnIGluIHRlc3RFbGVtZW50LnN0eWxlIHx8CgkJCQkJCQkJJ09QZXJzcGVjdGl2ZScgaW4gdGVzdEVsZW1lbnQuc3R5bGUgfHwKCQkJCQkJCQkncGVyc3BlY3RpdmUnIGluIHRlc3RFbGVtZW50LnN0eWxlOwoKCQlmZWF0dXJlcy50cmFuc2Zvcm1zMmQgPSAnV2Via2l0VHJhbnNmb3JtJyBpbiB0ZXN0RWxlbWVudC5zdHlsZSB8fAoJCQkJCQkJCSdNb3pUcmFuc2Zvcm0nIGluIHRlc3RFbGVtZW50LnN0eWxlIHx8CgkJCQkJCQkJJ21zVHJhbnNmb3JtJyBpbiB0ZXN0RWxlbWVudC5zdHlsZSB8fAoJCQkJCQkJCSdPVHJhbnNmb3JtJyBpbiB0ZXN0RWxlbWVudC5zdHlsZSB8fAoJCQkJCQkJCSd0cmFuc2Zvcm0nIGluIHRlc3RFbGVtZW50LnN0eWxlOwoKCQlmZWF0dXJlcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVNZXRob2QgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZTsKCQlmZWF0dXJlcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB0eXBlb2YgZmVhdHVyZXMucmVxdWVzdEFuaW1hdGlvbkZyYW1lTWV0aG9kID09PSAnZnVuY3Rpb24nOwoKCQlmZWF0dXJlcy5jYW52YXMgPSAhIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdjYW52YXMnICkuZ2V0Q29udGV4dDsKCgkJLy8gVHJhbnNpdGlvbnMgaW4gdGhlIG92ZXJ2aWV3IGFyZSBkaXNhYmxlZCBpbiBkZXNrdG9wIGFuZAoJCS8vIFNhZmFyaSBkdWUgdG8gbGFnCgkJZmVhdHVyZXMub3ZlcnZpZXdUcmFuc2l0aW9ucyA9ICEvVmVyc2lvblwvW1xkXC5dKy4qU2FmYXJpLy50ZXN0KCBVQSApOwoKCQkvLyBGbGFncyBpZiB3ZSBzaG91bGQgdXNlIHpvb20gaW5zdGVhZCBvZiB0cmFuc2Zvcm0gdG8gc2NhbGUKCQkvLyB1cCBzbGlkZXMuIFpvb20gcHJvZHVjZXMgY3Jpc3BlciByZXN1bHRzIGJ1dCBoYXMgYSBsb3Qgb2YKCQkvLyB4YnJvd3NlciBxdWlya3Mgc28gd2Ugb25seSB1c2UgaXQgaW4gd2hpdGVsc2l0ZWQgYnJvd3NlcnMuCgkJZmVhdHVyZXMuem9vbSA9ICd6b29tJyBpbiB0ZXN0RWxlbWVudC5zdHlsZSAmJiAhaXNNb2JpbGVEZXZpY2UgJiYKCQkJCQkJKCBpc0Nocm9tZSB8fCAvVmVyc2lvblwvW1xkXC5dKy4qU2FmYXJpLy50ZXN0KCBVQSApICk7CgoJfQoKCS8qKgoJICogTG9hZHMgdGhlIGRlcGVuZGVuY2llcyBvZiByZXZlYWwuanMuIERlcGVuZGVuY2llcyBhcmUKCSAqIGRlZmluZWQgdmlhIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiAnZGVwZW5kZW5jaWVzJwoJICogYW5kIHdpbGwgYmUgbG9hZGVkIHByaW9yIHRvIHN0YXJ0aW5nL2JpbmRpbmcgcmV2ZWFsLmpzLgoJICogU29tZSBkZXBlbmRlbmNpZXMgbWF5IGhhdmUgYW4gJ2FzeW5jJyBmbGFnLCBpZiBzbyB0aGV5CgkgKiB3aWxsIGxvYWQgYWZ0ZXIgcmV2ZWFsLmpzIGhhcyBiZWVuIHN0YXJ0ZWQgdXAuCgkgKi8KCWZ1bmN0aW9uIGxvYWQoKSB7CgoJCXZhciBzY3JpcHRzID0gW10sCgkJCXNjcmlwdHNUb0xvYWQgPSAwOwoKCQljb25maWcuZGVwZW5kZW5jaWVzLmZvckVhY2goIGZ1bmN0aW9uKCBzICkgewoJCQkvLyBMb2FkIGlmIHRoZXJlJ3Mgbm8gY29uZGl0aW9uIG9yIHRoZSBjb25kaXRpb24gaXMgdHJ1dGh5CgkJCWlmKCAhcy5jb25kaXRpb24gfHwgcy5jb25kaXRpb24oKSApIHsKCQkJCWlmKCBzLmFzeW5jICkgewoJCQkJCWFzeW5jRGVwZW5kZW5jaWVzLnB1c2goIHMgKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCXNjcmlwdHMucHVzaCggcyApOwoJCQkJfQoJCQl9CgkJfSApOwoKCQlpZiggc2NyaXB0cy5sZW5ndGggKSB7CgkJCXNjcmlwdHNUb0xvYWQgPSBzY3JpcHRzLmxlbmd0aDsKCgkJCS8vIExvYWQgc3luY2hyb25vdXMgc2NyaXB0cwoJCQlzY3JpcHRzLmZvckVhY2goIGZ1bmN0aW9uKCBzICkgewoJCQkJbG9hZFNjcmlwdCggcy5zcmMsIGZ1bmN0aW9uKCkgewoKCQkJCQlpZiggdHlwZW9mIHMuY2FsbGJhY2sgPT09ICdmdW5jdGlvbicgKSBzLmNhbGxiYWNrKCk7CgoJCQkJCWlmKCAtLXNjcmlwdHNUb0xvYWQgPT09IDAgKSB7CgkJCQkJCWluaXRQbHVnaW5zKCk7CgkJCQkJfQoKCQkJCX0gKTsKCQkJfSApOwoJCX0KCQllbHNlIHsKCQkJaW5pdFBsdWdpbnMoKTsKCQl9CgoJfQoKCS8qKgoJICogSW5pdGlhbGl6ZXMgb3VyIHBsdWdpbnMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGJlIHJlYWR5CgkgKiBiZWZvcmUgcHJvY2VlZGluZy4KCSAqLwoJZnVuY3Rpb24gaW5pdFBsdWdpbnMoKSB7CgoJCXZhciBwbHVnaW5zVG9Jbml0aWFsaXplID0gT2JqZWN0LmtleXMoIHBsdWdpbnMgKS5sZW5ndGg7CgoJCS8vIElmIHRoZXJlIGFyZSBubyBwbHVnaW5zLCBza2lwIHRoaXMgc3RlcAoJCWlmKCBwbHVnaW5zVG9Jbml0aWFsaXplID09PSAwICkgewoJCQlsb2FkQXN5bmNEZXBlbmRlbmNpZXMoKTsKCQl9CgkJLy8gLi4uIG90aGVyd2lzZSBpbml0aWFsaXplIHBsdWdpbnMKCQllbHNlIHsKCgkJCXZhciBhZnRlclBsdWdJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkgewoJCQkJaWYoIC0tcGx1Z2luc1RvSW5pdGlhbGl6ZSA9PT0gMCApIHsKCQkJCQlsb2FkQXN5bmNEZXBlbmRlbmNpZXMoKTsKCQkJCX0KCQkJfTsKCgkJCWZvciggdmFyIGkgaW4gcGx1Z2lucyApIHsKCgkJCQl2YXIgcGx1Z2luID0gcGx1Z2luc1tpXTsKCgkJCQkvLyBJZiB0aGUgcGx1Z2luIGhhcyBhbiAnaW5pdCcgbWV0aG9kLCBpbnZva2UgaXQKCQkJCWlmKCB0eXBlb2YgcGx1Z2luLmluaXQgPT09ICdmdW5jdGlvbicgKSB7CgkJCQkJdmFyIGNhbGxiYWNrID0gcGx1Z2luLmluaXQoKTsKCgkJCQkJLy8gSWYgdGhlIHBsdWdpbiByZXR1cm5lZCBhIFByb21pc2UsIHdhaXQgZm9yIGl0CgkJCQkJaWYoIGNhbGxiYWNrICYmIHR5cGVvZiBjYWxsYmFjay50aGVuID09PSAnZnVuY3Rpb24nICkgewoJCQkJCQljYWxsYmFjay50aGVuKCBhZnRlclBsdWdJbml0aWFsaXplZCApOwoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJYWZ0ZXJQbHVnSW5pdGlhbGl6ZWQoKTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlhZnRlclBsdWdJbml0aWFsaXplZCgpOwoJCQkJfQoKCQkJfQoKCQl9CgoJfQoKCS8qKgoJICogTG9hZHMgYWxsIGFzeW5jIHJldmVhbC5qcyBkZXBlbmRlbmNpZXMuCgkgKi8KCWZ1bmN0aW9uIGxvYWRBc3luY0RlcGVuZGVuY2llcygpIHsKCgkJaWYoIGFzeW5jRGVwZW5kZW5jaWVzLmxlbmd0aCApIHsKCQkJYXN5bmNEZXBlbmRlbmNpZXMuZm9yRWFjaCggZnVuY3Rpb24oIHMgKSB7CgkJCQlsb2FkU2NyaXB0KCBzLnNyYywgcy5jYWxsYmFjayApOwoJCQl9ICk7CgkJfQoKCQlzdGFydCgpOwoKCX0KCgkvKioKCSAqIExvYWRzIGEgSmF2YVNjcmlwdCBmaWxlIGZyb20gdGhlIGdpdmVuIFVSTCBhbmQgZXhlY3V0ZXMgaXQuCgkgKgoJICogQHBhcmFtIHtzdHJpbmd9IHVybCBBZGRyZXNzIG9mIHRoZSAuanMgZmlsZSB0byBsb2FkCgkgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBNZXRob2QgdG8gaW52b2tlIHdoZW4gdGhlIHNjcmlwdAoJICogaGFzIGxvYWRlZCBhbmQgZXhlY3V0ZWQKCSAqLwoJZnVuY3Rpb24gbG9hZFNjcmlwdCggdXJsLCBjYWxsYmFjayApIHsKCgkJdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdzY3JpcHQnICk7CgkJc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKCQlzY3JpcHQuYXN5bmMgPSBmYWxzZTsKCQlzY3JpcHQuZGVmZXIgPSBmYWxzZTsKCQlzY3JpcHQuc3JjID0gdXJsOwoKCQlpZiggY2FsbGJhY2sgKSB7CgoJCQkvLyBTdWNjZXNzIGNhbGxiYWNrCgkJCXNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oIGV2ZW50ICkgewoJCQkJaWYoIGV2ZW50LnR5cGUgPT09ICJsb2FkIiB8fCAoL2xvYWRlZHxjb21wbGV0ZS8udGVzdCggc2NyaXB0LnJlYWR5U3RhdGUgKSApICkgewoKCQkJCQkvLyBLaWxsIGV2ZW50IGxpc3RlbmVycwoJCQkJCXNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gc2NyaXB0Lm9uZXJyb3IgPSBudWxsOwoKCQkJCQljYWxsYmFjaygpOwoKCQkJCX0KCQkJfTsKCgkJCS8vIEVycm9yIGNhbGxiYWNrCgkJCXNjcmlwdC5vbmVycm9yID0gZnVuY3Rpb24oIGVyciApIHsKCgkJCQkvLyBLaWxsIGV2ZW50IGxpc3RlbmVycwoJCQkJc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBzY3JpcHQub25lcnJvciA9IG51bGw7CgoJCQkJY2FsbGJhY2soIG5ldyBFcnJvciggJ0ZhaWxlZCBsb2FkaW5nIHNjcmlwdDogJyArIHNjcmlwdC5zcmMgKyAnXG4nICsgZXJyKSApOwoKCQkJfTsKCgkJfQoKCQkvLyBBcHBlbmQgdGhlIHNjcmlwdCBhdCB0aGUgZW5kIG9mIDxoZWFkPgoJCXZhciBoZWFkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJ2hlYWQnICk7CgkJaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5sYXN0Q2hpbGQgKTsKCgl9CgoJLyoqCgkgKiBTdGFydHMgdXAgcmV2ZWFsLmpzIGJ5IGJpbmRpbmcgaW5wdXQgZXZlbnRzIGFuZCBuYXZpZ2F0aW5nCgkgKiB0byB0aGUgY3VycmVudCBVUkwgZGVlcGxpbmsgaWYgdGhlcmUgaXMgb25lLgoJICovCglmdW5jdGlvbiBzdGFydCgpIHsKCgkJbG9hZGVkID0gdHJ1ZTsKCgkJLy8gTWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIERPTSBlbGVtZW50cyB3ZSBuZWVkCgkJc2V0dXBET00oKTsKCgkJLy8gTGlzdGVuIHRvIG1lc3NhZ2VzIHBvc3RlZCB0byB0aGlzIHdpbmRvdwoJCXNldHVwUG9zdE1lc3NhZ2UoKTsKCgkJLy8gUHJldmVudCB0aGUgc2xpZGVzIGZyb20gYmVpbmcgc2Nyb2xsZWQgb3V0IG9mIHZpZXcKCQlzZXR1cFNjcm9sbFByZXZlbnRpb24oKTsKCgkJLy8gUmVzZXRzIGFsbCB2ZXJ0aWNhbCBzbGlkZXMgc28gdGhhdCBvbmx5IHRoZSBmaXJzdCBpcyB2aXNpYmxlCgkJcmVzZXRWZXJ0aWNhbFNsaWRlcygpOwoKCQkvLyBVcGRhdGVzIHRoZSBwcmVzZW50YXRpb24gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB2YWx1ZXMKCQljb25maWd1cmUoKTsKCgkJLy8gUmVhZCB0aGUgaW5pdGlhbCBoYXNoCgkJcmVhZFVSTCgpOwoKCQkvLyBVcGRhdGUgYWxsIGJhY2tncm91bmRzCgkJdXBkYXRlQmFja2dyb3VuZCggdHJ1ZSApOwoKCQkvLyBOb3RpZnkgbGlzdGVuZXJzIHRoYXQgdGhlIHByZXNlbnRhdGlvbiBpcyByZWFkeSBidXQgdXNlIGEgMW1zCgkJLy8gdGltZW91dCB0byBlbnN1cmUgaXQncyBub3QgZmlyZWQgc3luY2hyb25vdXNseSBhZnRlciAjaW5pdGlhbGl6ZSgpCgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCS8vIEVuYWJsZSB0cmFuc2l0aW9ucyBub3cgdGhhdCB3ZSdyZSBsb2FkZWQKCQkJZG9tLnNsaWRlcy5jbGFzc0xpc3QucmVtb3ZlKCAnbm8tdHJhbnNpdGlvbicgKTsKCgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICdyZWFkeScgKTsKCgkJCWRpc3BhdGNoRXZlbnQoICdyZWFkeScsIHsKCQkJCSdpbmRleGgnOiBpbmRleGgsCgkJCQknaW5kZXh2JzogaW5kZXh2LAoJCQkJJ2N1cnJlbnRTbGlkZSc6IGN1cnJlbnRTbGlkZQoJCQl9ICk7CgkJfSwgMSApOwoKCQkvLyBTcGVjaWFsIHNldHVwIGFuZCBjb25maWcgaXMgcmVxdWlyZWQgd2hlbiBwcmludGluZyB0byBQREYKCQlpZiggaXNQcmludGluZ1BERigpICkgewoJCQlyZW1vdmVFdmVudExpc3RlbmVycygpOwoKCQkJLy8gVGhlIGRvY3VtZW50IG5lZWRzIHRvIGhhdmUgbG9hZGVkIGZvciB0aGUgUERGIGxheW91dAoJCQkvLyBtZWFzdXJlbWVudHMgdG8gYmUgYWNjdXJhdGUKCQkJaWYoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScgKSB7CgkJCQlzZXR1cFBERigpOwoJCQl9CgkJCWVsc2UgewoJCQkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkJywgc2V0dXBQREYgKTsKCQkJfQoJCX0KCgl9CgoJLyoqCgkgKiBGaW5kcyBhbmQgc3RvcmVzIHJlZmVyZW5jZXMgdG8gRE9NIGVsZW1lbnRzIHdoaWNoIGFyZQoJICogcmVxdWlyZWQgYnkgdGhlIHByZXNlbnRhdGlvbi4gSWYgYSByZXF1aXJlZCBlbGVtZW50IGlzCgkgKiBub3QgZm91bmQsIGl0IGlzIGNyZWF0ZWQuCgkgKi8KCWZ1bmN0aW9uIHNldHVwRE9NKCkgewoKCQkvLyBQcmV2ZW50IHRyYW5zaXRpb25zIHdoaWxlIHdlJ3JlIGxvYWRpbmcKCQlkb20uc2xpZGVzLmNsYXNzTGlzdC5hZGQoICduby10cmFuc2l0aW9uJyApOwoKCQlpZiggaXNNb2JpbGVEZXZpY2UgKSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICduby1ob3ZlcicgKTsKCQl9CgkJZWxzZSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoICduby1ob3ZlcicgKTsKCQl9CgoJCWlmKCAvaXBob25lL2dpLnRlc3QoIFVBICkgKSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICd1YS1pcGhvbmUnICk7CgkJfQoJCWVsc2UgewoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCAndWEtaXBob25lJyApOwoJCX0KCgkJLy8gQmFja2dyb3VuZCBlbGVtZW50CgkJZG9tLmJhY2tncm91bmQgPSBjcmVhdGVTaW5nbGV0b25Ob2RlKCBkb20ud3JhcHBlciwgJ2RpdicsICdiYWNrZ3JvdW5kcycsIG51bGwgKTsKCgkJLy8gUHJvZ3Jlc3MgYmFyCgkJZG9tLnByb2dyZXNzID0gY3JlYXRlU2luZ2xldG9uTm9kZSggZG9tLndyYXBwZXIsICdkaXYnLCAncHJvZ3Jlc3MnLCAnPHNwYW4+PC9zcGFuPicgKTsKCQlkb20ucHJvZ3Jlc3NiYXIgPSBkb20ucHJvZ3Jlc3MucXVlcnlTZWxlY3RvciggJ3NwYW4nICk7CgoJCS8vIEFycm93IGNvbnRyb2xzCgkJZG9tLmNvbnRyb2xzID0gY3JlYXRlU2luZ2xldG9uTm9kZSggZG9tLndyYXBwZXIsICdhc2lkZScsICdjb250cm9scycsCgkJCSc8YnV0dG9uIGNsYXNzPSJuYXZpZ2F0ZS1sZWZ0IiBhcmlhLWxhYmVsPSJwcmV2aW91cyBzbGlkZSI+PGRpdiBjbGFzcz0iY29udHJvbHMtYXJyb3ciPjwvZGl2PjwvYnV0dG9uPicgKwoJCQknPGJ1dHRvbiBjbGFzcz0ibmF2aWdhdGUtcmlnaHQiIGFyaWEtbGFiZWw9Im5leHQgc2xpZGUiPjxkaXYgY2xhc3M9ImNvbnRyb2xzLWFycm93Ij48L2Rpdj48L2J1dHRvbj4nICsKCQkJJzxidXR0b24gY2xhc3M9Im5hdmlnYXRlLXVwIiBhcmlhLWxhYmVsPSJhYm92ZSBzbGlkZSI+PGRpdiBjbGFzcz0iY29udHJvbHMtYXJyb3ciPjwvZGl2PjwvYnV0dG9uPicgKwoJCQknPGJ1dHRvbiBjbGFzcz0ibmF2aWdhdGUtZG93biIgYXJpYS1sYWJlbD0iYmVsb3cgc2xpZGUiPjxkaXYgY2xhc3M9ImNvbnRyb2xzLWFycm93Ij48L2Rpdj48L2J1dHRvbj4nICk7CgoJCS8vIFNsaWRlIG51bWJlcgoJCWRvbS5zbGlkZU51bWJlciA9IGNyZWF0ZVNpbmdsZXRvbk5vZGUoIGRvbS53cmFwcGVyLCAnZGl2JywgJ3NsaWRlLW51bWJlcicsICcnICk7CgoJCS8vIEVsZW1lbnQgY29udGFpbmluZyBub3RlcyB0aGF0IGFyZSB2aXNpYmxlIHRvIHRoZSBhdWRpZW5jZQoJCWRvbS5zcGVha2VyTm90ZXMgPSBjcmVhdGVTaW5nbGV0b25Ob2RlKCBkb20ud3JhcHBlciwgJ2RpdicsICdzcGVha2VyLW5vdGVzJywgbnVsbCApOwoJCWRvbS5zcGVha2VyTm90ZXMuc2V0QXR0cmlidXRlKCAnZGF0YS1wcmV2ZW50LXN3aXBlJywgJycgKTsKCQlkb20uc3BlYWtlck5vdGVzLnNldEF0dHJpYnV0ZSggJ3RhYmluZGV4JywgJzAnICk7CgoJCS8vIE92ZXJsYXkgZ3JhcGhpYyB3aGljaCBpcyBkaXNwbGF5ZWQgZHVyaW5nIHRoZSBwYXVzZWQgbW9kZQoJCWRvbS5wYXVzZU92ZXJsYXkgPSBjcmVhdGVTaW5nbGV0b25Ob2RlKCBkb20ud3JhcHBlciwgJ2RpdicsICdwYXVzZS1vdmVybGF5JywgY29uZmlnLmNvbnRyb2xzID8gJzxidXR0b24gY2xhc3M9InJlc3VtZS1idXR0b24iPlJlc3VtZSBwcmVzZW50YXRpb248L2J1dHRvbj4nIDogbnVsbCApOwoKCQlkb20ud3JhcHBlci5zZXRBdHRyaWJ1dGUoICdyb2xlJywgJ2FwcGxpY2F0aW9uJyApOwoKCQkvLyBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIGNvbnRyb2xzIHRocm91Z2hvdXQgdGhlIHBhZ2UKCQlkb20uY29udHJvbHNMZWZ0ID0gdG9BcnJheSggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy5uYXZpZ2F0ZS1sZWZ0JyApICk7CgkJZG9tLmNvbnRyb2xzUmlnaHQgPSB0b0FycmF5KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnLm5hdmlnYXRlLXJpZ2h0JyApICk7CgkJZG9tLmNvbnRyb2xzVXAgPSB0b0FycmF5KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnLm5hdmlnYXRlLXVwJyApICk7CgkJZG9tLmNvbnRyb2xzRG93biA9IHRvQXJyYXkoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcubmF2aWdhdGUtZG93bicgKSApOwoJCWRvbS5jb250cm9sc1ByZXYgPSB0b0FycmF5KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnLm5hdmlnYXRlLXByZXYnICkgKTsKCQlkb20uY29udHJvbHNOZXh0ID0gdG9BcnJheSggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy5uYXZpZ2F0ZS1uZXh0JyApICk7CgoJCS8vIFRoZSByaWdodCBhbmQgZG93biBhcnJvd3MgaW4gdGhlIHN0YW5kYXJkIHJldmVhbC5qcyBjb250cm9scwoJCWRvbS5jb250cm9sc1JpZ2h0QXJyb3cgPSBkb20uY29udHJvbHMucXVlcnlTZWxlY3RvciggJy5uYXZpZ2F0ZS1yaWdodCcgKTsKCQlkb20uY29udHJvbHNEb3duQXJyb3cgPSBkb20uY29udHJvbHMucXVlcnlTZWxlY3RvciggJy5uYXZpZ2F0ZS1kb3duJyApOwoKCQlkb20uc3RhdHVzRGl2ID0gY3JlYXRlU3RhdHVzRGl2KCk7Cgl9CgoJLyoqCgkgKiBDcmVhdGVzIGEgaGlkZGVuIGRpdiB3aXRoIHJvbGUgYXJpYS1saXZlIHRvIGFubm91bmNlIHRoZQoJICogY3VycmVudCBzbGlkZSBjb250ZW50LiBIaWRlIHRoZSBkaXYgb2ZmLXNjcmVlbiB0byBtYWtlIGl0CgkgKiBhdmFpbGFibGUgb25seSB0byBBc3Npc3RpdmUgVGVjaG5vbG9naWVzLgoJICoKCSAqIEByZXR1cm4ge0hUTUxFbGVtZW50fQoJICovCglmdW5jdGlvbiBjcmVhdGVTdGF0dXNEaXYoKSB7CgoJCXZhciBzdGF0dXNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2FyaWEtc3RhdHVzLWRpdicgKTsKCQlpZiggIXN0YXR1c0RpdiApIHsKCQkJc3RhdHVzRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2RpdicgKTsKCQkJc3RhdHVzRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKCQkJc3RhdHVzRGl2LnN0eWxlLmhlaWdodCA9ICcxcHgnOwoJCQlzdGF0dXNEaXYuc3R5bGUud2lkdGggPSAnMXB4JzsKCQkJc3RhdHVzRGl2LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7CgkJCXN0YXR1c0Rpdi5zdHlsZS5jbGlwID0gJ3JlY3QoIDFweCwgMXB4LCAxcHgsIDFweCApJzsKCQkJc3RhdHVzRGl2LnNldEF0dHJpYnV0ZSggJ2lkJywgJ2FyaWEtc3RhdHVzLWRpdicgKTsKCQkJc3RhdHVzRGl2LnNldEF0dHJpYnV0ZSggJ2FyaWEtbGl2ZScsICdwb2xpdGUnICk7CgkJCXN0YXR1c0Rpdi5zZXRBdHRyaWJ1dGUoICdhcmlhLWF0b21pYycsJ3RydWUnICk7CgkJCWRvbS53cmFwcGVyLmFwcGVuZENoaWxkKCBzdGF0dXNEaXYgKTsKCQl9CgkJcmV0dXJuIHN0YXR1c0RpdjsKCgl9CgoJLyoqCgkgKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gSFRNTCBlbGVtZW50IGludG8gYSBzdHJpbmcgb2YgdGV4dAoJICogdGhhdCBjYW4gYmUgYW5ub3VuY2VkIHRvIGEgc2NyZWVuIHJlYWRlci4gSGlkZGVuCgkgKiBlbGVtZW50cyBhcmUgZXhjbHVkZWQuCgkgKi8KCWZ1bmN0aW9uIGdldFN0YXR1c1RleHQoIG5vZGUgKSB7CgoJCXZhciB0ZXh0ID0gJyc7CgoJCS8vIFRleHQgbm9kZQoJCWlmKCBub2RlLm5vZGVUeXBlID09PSAzICkgewoJCQl0ZXh0ICs9IG5vZGUudGV4dENvbnRlbnQ7CgkJfQoJCS8vIEVsZW1lbnQgbm9kZQoJCWVsc2UgaWYoIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CgoJCQl2YXIgaXNBcmlhSGlkZGVuID0gbm9kZS5nZXRBdHRyaWJ1dGUoICdhcmlhLWhpZGRlbicgKTsKCQkJdmFyIGlzRGlzcGxheUhpZGRlbiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBub2RlIClbJ2Rpc3BsYXknXSA9PT0gJ25vbmUnOwoJCQlpZiggaXNBcmlhSGlkZGVuICE9PSAndHJ1ZScgJiYgIWlzRGlzcGxheUhpZGRlbiApIHsKCgkJCQl0b0FycmF5KCBub2RlLmNoaWxkTm9kZXMgKS5mb3JFYWNoKCBmdW5jdGlvbiggY2hpbGQgKSB7CgkJCQkJdGV4dCArPSBnZXRTdGF0dXNUZXh0KCBjaGlsZCApOwoJCQkJfSApOwoKCQkJfQoKCQl9CgoJCXJldHVybiB0ZXh0OwoKCX0KCgkvKioKCSAqIENvbmZpZ3VyZXMgdGhlIHByZXNlbnRhdGlvbiBmb3IgcHJpbnRpbmcgdG8gYSBzdGF0aWMKCSAqIFBERi4KCSAqLwoJZnVuY3Rpb24gc2V0dXBQREYoKSB7CgoJCXZhciBzbGlkZVNpemUgPSBnZXRDb21wdXRlZFNsaWRlU2l6ZSggd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCApOwoKCQkvLyBEaW1lbnNpb25zIG9mIHRoZSBQREYgcGFnZXMKCQl2YXIgcGFnZVdpZHRoID0gTWF0aC5mbG9vciggc2xpZGVTaXplLndpZHRoICogKCAxICsgY29uZmlnLm1hcmdpbiApICksCgkJCXBhZ2VIZWlnaHQgPSBNYXRoLmZsb29yKCBzbGlkZVNpemUuaGVpZ2h0ICogKCAxICsgY29uZmlnLm1hcmdpbiApICk7CgoJCS8vIERpbWVuc2lvbnMgb2Ygc2xpZGVzIHdpdGhpbiB0aGUgcGFnZXMKCQl2YXIgc2xpZGVXaWR0aCA9IHNsaWRlU2l6ZS53aWR0aCwKCQkJc2xpZGVIZWlnaHQgPSBzbGlkZVNpemUuaGVpZ2h0OwoKCQkvLyBMZXQgdGhlIGJyb3dzZXIga25vdyB3aGF0IHBhZ2Ugc2l6ZSB3ZSB3YW50IHRvIHByaW50CgkJaW5qZWN0U3R5bGVTaGVldCggJ0BwYWdle3NpemU6JysgcGFnZVdpZHRoICsncHggJysgcGFnZUhlaWdodCArJ3B4OyBtYXJnaW46IDBweDt9JyApOwoKCQkvLyBMaW1pdCB0aGUgc2l6ZSBvZiBjZXJ0YWluIGVsZW1lbnRzIHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBzbGlkZQoJCWluamVjdFN0eWxlU2hlZXQoICcucmV2ZWFsIHNlY3Rpb24+aW1nLCAucmV2ZWFsIHNlY3Rpb24+dmlkZW8sIC5yZXZlYWwgc2VjdGlvbj5pZnJhbWV7bWF4LXdpZHRoOiAnKyBzbGlkZVdpZHRoICsncHg7IG1heC1oZWlnaHQ6Jysgc2xpZGVIZWlnaHQgKydweH0nICk7CgoJCWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCggJ3ByaW50LXBkZicgKTsKCQlkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gcGFnZVdpZHRoICsgJ3B4JzsKCQlkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9IHBhZ2VIZWlnaHQgKyAncHgnOwoKCQkvLyBNYWtlIHN1cmUgc3RyZXRjaCBlbGVtZW50cyBmaXQgb24gc2xpZGUKCQlsYXlvdXRTbGlkZUNvbnRlbnRzKCBzbGlkZVdpZHRoLCBzbGlkZUhlaWdodCApOwoKCQkvLyBBZGQgZWFjaCBzbGlkZSdzIGluZGV4IGFzIGF0dHJpYnV0ZXMgb24gaXRzZWxmLCB3ZSBuZWVkIHRoZXNlCgkJLy8gaW5kaWNlcyB0byBnZW5lcmF0ZSBzbGlkZSBudW1iZXJzIGJlbG93CgkJdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBoc2xpZGUsIGggKSB7CgkJCWhzbGlkZS5zZXRBdHRyaWJ1dGUoICdkYXRhLWluZGV4LWgnLCBoICk7CgoJCQlpZiggaHNsaWRlLmNsYXNzTGlzdC5jb250YWlucyggJ3N0YWNrJyApICkgewoJCQkJdG9BcnJheSggaHNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICdzZWN0aW9uJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIHZzbGlkZSwgdiApIHsKCQkJCQl2c2xpZGUuc2V0QXR0cmlidXRlKCAnZGF0YS1pbmRleC1oJywgaCApOwoJCQkJCXZzbGlkZS5zZXRBdHRyaWJ1dGUoICdkYXRhLWluZGV4LXYnLCB2ICk7CgkJCQl9ICk7CgkJCX0KCQl9ICk7CgoJCS8vIFNsaWRlIGFuZCBzbGlkZSBiYWNrZ3JvdW5kIGxheW91dAoJCXRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIFNMSURFU19TRUxFQ1RPUiApICkuZm9yRWFjaCggZnVuY3Rpb24oIHNsaWRlICkgewoKCQkJLy8gVmVydGljYWwgc3RhY2tzIGFyZSBub3QgY2VudHJlZCBzaW5jZSB0aGVpciBzZWN0aW9uCgkJCS8vIGNoaWxkcmVuIHdpbGwgYmUKCQkJaWYoIHNsaWRlLmNsYXNzTGlzdC5jb250YWlucyggJ3N0YWNrJyApID09PSBmYWxzZSApIHsKCQkJCS8vIENlbnRlciB0aGUgc2xpZGUgaW5zaWRlIG9mIHRoZSBwYWdlLCBnaXZpbmcgdGhlIHNsaWRlIHNvbWUgbWFyZ2luCgkJCQl2YXIgbGVmdCA9ICggcGFnZVdpZHRoIC0gc2xpZGVXaWR0aCApIC8gMiwKCQkJCQl0b3AgPSAoIHBhZ2VIZWlnaHQgLSBzbGlkZUhlaWdodCApIC8gMjsKCgkJCQl2YXIgY29udGVudEhlaWdodCA9IHNsaWRlLnNjcm9sbEhlaWdodDsKCQkJCXZhciBudW1iZXJPZlBhZ2VzID0gTWF0aC5tYXgoIE1hdGguY2VpbCggY29udGVudEhlaWdodCAvIHBhZ2VIZWlnaHQgKSwgMSApOwoKCQkJCS8vIEFkaGVyZSB0byBjb25maWd1cmVkIHBhZ2VzIHBlciBzbGlkZSBsaW1pdAoJCQkJbnVtYmVyT2ZQYWdlcyA9IE1hdGgubWluKCBudW1iZXJPZlBhZ2VzLCBjb25maWcucGRmTWF4UGFnZXNQZXJTbGlkZSApOwoKCQkJCS8vIENlbnRlciBzbGlkZXMgdmVydGljYWxseQoJCQkJaWYoIG51bWJlck9mUGFnZXMgPT09IDEgJiYgY29uZmlnLmNlbnRlciB8fCBzbGlkZS5jbGFzc0xpc3QuY29udGFpbnMoICdjZW50ZXInICkgKSB7CgkJCQkJdG9wID0gTWF0aC5tYXgoICggcGFnZUhlaWdodCAtIGNvbnRlbnRIZWlnaHQgKSAvIDIsIDAgKTsKCQkJCX0KCgkJCQkvLyBXcmFwIHRoZSBzbGlkZSBpbiBhIHBhZ2UgZWxlbWVudCBhbmQgaGlkZSBpdHMgb3ZlcmZsb3cKCQkJCS8vIHNvIHRoYXQgbm8gcGFnZSBldmVyIGZsb3dzIG9udG8gYW5vdGhlcgoJCQkJdmFyIHBhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnZGl2JyApOwoJCQkJcGFnZS5jbGFzc05hbWUgPSAncGRmLXBhZ2UnOwoJCQkJcGFnZS5zdHlsZS5oZWlnaHQgPSAoICggcGFnZUhlaWdodCArIGNvbmZpZy5wZGZQYWdlSGVpZ2h0T2Zmc2V0ICkgKiBudW1iZXJPZlBhZ2VzICkgKyAncHgnOwoJCQkJc2xpZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIHBhZ2UsIHNsaWRlICk7CgkJCQlwYWdlLmFwcGVuZENoaWxkKCBzbGlkZSApOwoKCQkJCS8vIFBvc2l0aW9uIHRoZSBzbGlkZSBpbnNpZGUgb2YgdGhlIHBhZ2UKCQkJCXNsaWRlLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKCQkJCXNsaWRlLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CgkJCQlzbGlkZS5zdHlsZS53aWR0aCA9IHNsaWRlV2lkdGggKyAncHgnOwoKCQkJCWlmKCBzbGlkZS5zbGlkZUJhY2tncm91bmRFbGVtZW50ICkgewoJCQkJCXBhZ2UuaW5zZXJ0QmVmb3JlKCBzbGlkZS5zbGlkZUJhY2tncm91bmRFbGVtZW50LCBzbGlkZSApOwoJCQkJfQoKCQkJCS8vIEluamVjdCBub3RlcyBpZiBgc2hvd05vdGVzYCBpcyBlbmFibGVkCgkJCQlpZiggY29uZmlnLnNob3dOb3RlcyApIHsKCgkJCQkJLy8gQXJlIHRoZXJlIG5vdGVzIGZvciB0aGlzIHNsaWRlPwoJCQkJCXZhciBub3RlcyA9IGdldFNsaWRlTm90ZXMoIHNsaWRlICk7CgkJCQkJaWYoIG5vdGVzICkgewoKCQkJCQkJdmFyIG5vdGVzU3BhY2luZyA9IDg7CgkJCQkJCXZhciBub3Rlc0xheW91dCA9IHR5cGVvZiBjb25maWcuc2hvd05vdGVzID09PSAnc3RyaW5nJyA/IGNvbmZpZy5zaG93Tm90ZXMgOiAnaW5saW5lJzsKCQkJCQkJdmFyIG5vdGVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7CgkJCQkJCW5vdGVzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCAnc3BlYWtlci1ub3RlcycgKTsKCQkJCQkJbm90ZXNFbGVtZW50LmNsYXNzTGlzdC5hZGQoICdzcGVha2VyLW5vdGVzLXBkZicgKTsKCQkJCQkJbm90ZXNFbGVtZW50LnNldEF0dHJpYnV0ZSggJ2RhdGEtbGF5b3V0Jywgbm90ZXNMYXlvdXQgKTsKCQkJCQkJbm90ZXNFbGVtZW50LmlubmVySFRNTCA9IG5vdGVzOwoKCQkJCQkJaWYoIG5vdGVzTGF5b3V0ID09PSAnc2VwYXJhdGUtcGFnZScgKSB7CgkJCQkJCQlwYWdlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBub3Rlc0VsZW1lbnQsIHBhZ2UubmV4dFNpYmxpbmcgKTsKCQkJCQkJfQoJCQkJCQllbHNlIHsKCQkJCQkJCW5vdGVzRWxlbWVudC5zdHlsZS5sZWZ0ID0gbm90ZXNTcGFjaW5nICsgJ3B4JzsKCQkJCQkJCW5vdGVzRWxlbWVudC5zdHlsZS5ib3R0b20gPSBub3Rlc1NwYWNpbmcgKyAncHgnOwoJCQkJCQkJbm90ZXNFbGVtZW50LnN0eWxlLndpZHRoID0gKCBwYWdlV2lkdGggLSBub3Rlc1NwYWNpbmcqMiApICsgJ3B4JzsKCQkJCQkJCXBhZ2UuYXBwZW5kQ2hpbGQoIG5vdGVzRWxlbWVudCApOwoJCQkJCQl9CgoJCQkJCX0KCgkJCQl9CgoJCQkJLy8gSW5qZWN0IHNsaWRlIG51bWJlcnMgaWYgYHNsaWRlTnVtYmVyc2AgYXJlIGVuYWJsZWQKCQkJCWlmKCBjb25maWcuc2xpZGVOdW1iZXIgJiYgL2FsbHxwcmludC9pLnRlc3QoIGNvbmZpZy5zaG93U2xpZGVOdW1iZXIgKSApIHsKCQkJCQl2YXIgc2xpZGVOdW1iZXJIID0gcGFyc2VJbnQoIHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtaW5kZXgtaCcgKSwgMTAgKSArIDEsCgkJCQkJCXNsaWRlTnVtYmVyViA9IHBhcnNlSW50KCBzbGlkZS5nZXRBdHRyaWJ1dGUoICdkYXRhLWluZGV4LXYnICksIDEwICkgKyAxOwoKCQkJCQl2YXIgbnVtYmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7CgkJCQkJbnVtYmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCAnc2xpZGUtbnVtYmVyJyApOwoJCQkJCW51bWJlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCggJ3NsaWRlLW51bWJlci1wZGYnICk7CgkJCQkJbnVtYmVyRWxlbWVudC5pbm5lckhUTUwgPSBmb3JtYXRTbGlkZU51bWJlciggc2xpZGVOdW1iZXJILCAnLicsIHNsaWRlTnVtYmVyViApOwoJCQkJCXBhZ2UuYXBwZW5kQ2hpbGQoIG51bWJlckVsZW1lbnQgKTsKCQkJCX0KCgkJCQkvLyBDb3B5IHBhZ2UgYW5kIHNob3cgZnJhZ21lbnRzIG9uZSBhZnRlciBhbm90aGVyCgkJCQlpZiggY29uZmlnLnBkZlNlcGFyYXRlRnJhZ21lbnRzICkgewoKCQkJCQkvLyBFYWNoIGZyYWdtZW50ICdncm91cCcgaXMgYW4gYXJyYXkgY29udGFpbmluZyBvbmUgb3IgbW9yZQoJCQkJCS8vIGZyYWdtZW50cy4gTXVsdGlwbGUgZnJhZ21lbnRzIHRoYXQgYXBwZWFyIGF0IHRoZSBzYW1lIHRpbWUKCQkJCQkvLyBhcmUgcGFydCBvZiB0aGUgc2FtZSBncm91cC4KCQkJCQl2YXIgZnJhZ21lbnRHcm91cHMgPSBzb3J0RnJhZ21lbnRzKCBwYWdlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICksIHRydWUgKTsKCgkJCQkJdmFyIHByZXZpb3VzRnJhZ21lbnRTdGVwOwoJCQkJCXZhciBwcmV2aW91c1BhZ2U7CgoJCQkJCWZyYWdtZW50R3JvdXBzLmZvckVhY2goIGZ1bmN0aW9uKCBmcmFnbWVudHMgKSB7CgoJCQkJCQkvLyBSZW1vdmUgJ2N1cnJlbnQtZnJhZ21lbnQnIGZyb20gdGhlIHByZXZpb3VzIGdyb3VwCgkJCQkJCWlmKCBwcmV2aW91c0ZyYWdtZW50U3RlcCApIHsKCQkJCQkJCXByZXZpb3VzRnJhZ21lbnRTdGVwLmZvckVhY2goIGZ1bmN0aW9uKCBmcmFnbWVudCApIHsKCQkJCQkJCQlmcmFnbWVudC5jbGFzc0xpc3QucmVtb3ZlKCAnY3VycmVudC1mcmFnbWVudCcgKTsKCQkJCQkJCX0gKTsKCQkJCQkJfQoKCQkJCQkJLy8gU2hvdyB0aGUgZnJhZ21lbnRzIGZvciB0aGUgY3VycmVudCBpbmRleAoJCQkJCQlmcmFnbWVudHMuZm9yRWFjaCggZnVuY3Rpb24oIGZyYWdtZW50ICkgewoJCQkJCQkJZnJhZ21lbnQuY2xhc3NMaXN0LmFkZCggJ3Zpc2libGUnLCAnY3VycmVudC1mcmFnbWVudCcgKTsKCQkJCQkJfSApOwoKCQkJCQkJLy8gQ3JlYXRlIGEgc2VwYXJhdGUgcGFnZSBmb3IgdGhlIGN1cnJlbnQgZnJhZ21lbnQgc3RhdGUKCQkJCQkJdmFyIGNsb25lZFBhZ2UgPSBwYWdlLmNsb25lTm9kZSggdHJ1ZSApOwoJCQkJCQlwYWdlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBjbG9uZWRQYWdlLCAoIHByZXZpb3VzUGFnZSB8fCBwYWdlICkubmV4dFNpYmxpbmcgKTsKCgkJCQkJCXByZXZpb3VzRnJhZ21lbnRTdGVwID0gZnJhZ21lbnRzOwoJCQkJCQlwcmV2aW91c1BhZ2UgPSBjbG9uZWRQYWdlOwoKCQkJCQl9ICk7CgoJCQkJCS8vIFJlc2V0IHRoZSBmaXJzdC9vcmlnaW5hbCBwYWdlIHNvIHRoYXQgYWxsIGZyYWdtZW50cyBhcmUgaGlkZGVuCgkJCQkJZnJhZ21lbnRHcm91cHMuZm9yRWFjaCggZnVuY3Rpb24oIGZyYWdtZW50cyApIHsKCQkJCQkJZnJhZ21lbnRzLmZvckVhY2goIGZ1bmN0aW9uKCBmcmFnbWVudCApIHsKCQkJCQkJCWZyYWdtZW50LmNsYXNzTGlzdC5yZW1vdmUoICd2aXNpYmxlJywgJ2N1cnJlbnQtZnJhZ21lbnQnICk7CgkJCQkJCX0gKTsKCQkJCQl9ICk7CgoJCQkJfQoJCQkJLy8gU2hvdyBhbGwgZnJhZ21lbnRzCgkJCQllbHNlIHsKCQkJCQl0b0FycmF5KCBwYWdlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQ6bm90KC5mYWRlLW91dCknICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggZnJhZ21lbnQgKSB7CgkJCQkJCWZyYWdtZW50LmNsYXNzTGlzdC5hZGQoICd2aXNpYmxlJyApOwoJCQkJCX0gKTsKCQkJCX0KCgkJCX0KCgkJfSApOwoKCQkvLyBOb3RpZnkgc3Vic2NyaWJlcnMgdGhhdCB0aGUgUERGIGxheW91dCBpcyBnb29kIHRvIGdvCgkJZGlzcGF0Y2hFdmVudCggJ3BkZi1yZWFkeScgKTsKCgl9CgoJLyoqCgkgKiBUaGlzIGlzIGFuIHVuZm9ydHVuYXRlIG5lY2Vzc2l0eS4gU29tZSBhY3Rpb25zIOKAkyBzdWNoIGFzCgkgKiBhbiBpbnB1dCBmaWVsZCBiZWluZyBmb2N1c2VkIGluIGFuIGlmcmFtZSBvciB1c2luZyB0aGUKCSAqIGtleWJvYXJkIHRvIGV4cGFuZCB0ZXh0IHNlbGVjdGlvbiBiZXlvbmQgdGhlIGJvdW5kcyBvZgoJICogYSBzbGlkZSDigJMgY2FuIHRyaWdnZXIgb3VyIGNvbnRlbnQgdG8gYmUgcHVzaGVkIG91dCBvZiB2aWV3LgoJICogVGhpcyBzY3JvbGxpbmcgY2FuIG5vdCBiZSBwcmV2ZW50ZWQgYnkgaGlkaW5nIG92ZXJmbG93IGluCgkgKiBDU1MgKHdlIGFscmVhZHkgZG8pIHNvIHdlIGhhdmUgdG8gcmVzb3J0IHRvIHJlcGVhdGVkbHkKCSAqIGNoZWNraW5nIGlmIHRoZSBzbGlkZXMgaGF2ZSBiZWVuIG9mZnNldCA6KAoJICovCglmdW5jdGlvbiBzZXR1cFNjcm9sbFByZXZlbnRpb24oKSB7CgoJCXNldEludGVydmFsKCBmdW5jdGlvbigpIHsKCQkJaWYoIGRvbS53cmFwcGVyLnNjcm9sbFRvcCAhPT0gMCB8fCBkb20ud3JhcHBlci5zY3JvbGxMZWZ0ICE9PSAwICkgewoJCQkJZG9tLndyYXBwZXIuc2Nyb2xsVG9wID0gMDsKCQkJCWRvbS53cmFwcGVyLnNjcm9sbExlZnQgPSAwOwoJCQl9CgkJfSwgMTAwMCApOwoKCX0KCgkvKioKCSAqIENyZWF0ZXMgYW4gSFRNTCBlbGVtZW50IGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGl0LgoJICogSWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMgdGhlIGV4aXN0aW5nIGluc3RhbmNlIHdpbGwKCSAqIGJlIHJldHVybmVkLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lcgoJICogQHBhcmFtIHtzdHJpbmd9IHRhZ25hbWUKCSAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc25hbWUKCSAqIEBwYXJhbSB7c3RyaW5nfSBpbm5lckhUTUwKCSAqCgkgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0KCSAqLwoJZnVuY3Rpb24gY3JlYXRlU2luZ2xldG9uTm9kZSggY29udGFpbmVyLCB0YWduYW1lLCBjbGFzc25hbWUsIGlubmVySFRNTCApIHsKCgkJLy8gRmluZCBhbGwgbm9kZXMgbWF0Y2hpbmcgdGhlIGRlc2NyaXB0aW9uCgkJdmFyIG5vZGVzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoICcuJyArIGNsYXNzbmFtZSApOwoKCQkvLyBDaGVjayBhbGwgbWF0Y2hlcyB0byBmaW5kIG9uZSB3aGljaCBpcyBhIGRpcmVjdCBjaGlsZCBvZgoJCS8vIHRoZSBzcGVjaWZpZWQgY29udGFpbmVyCgkJZm9yKCB2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKyApIHsKCQkJdmFyIHRlc3ROb2RlID0gbm9kZXNbaV07CgkJCWlmKCB0ZXN0Tm9kZS5wYXJlbnROb2RlID09PSBjb250YWluZXIgKSB7CgkJCQlyZXR1cm4gdGVzdE5vZGU7CgkJCX0KCQl9CgoJCS8vIElmIG5vIG5vZGUgd2FzIGZvdW5kLCBjcmVhdGUgaXQgbm93CgkJdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCB0YWduYW1lICk7CgkJbm9kZS5jbGFzc05hbWUgPSBjbGFzc25hbWU7CgkJaWYoIHR5cGVvZiBpbm5lckhUTUwgPT09ICdzdHJpbmcnICkgewoJCQlub2RlLmlubmVySFRNTCA9IGlubmVySFRNTDsKCQl9CgkJY29udGFpbmVyLmFwcGVuZENoaWxkKCBub2RlICk7CgoJCXJldHVybiBub2RlOwoKCX0KCgkvKioKCSAqIENyZWF0ZXMgdGhlIHNsaWRlIGJhY2tncm91bmQgZWxlbWVudHMgYW5kIGFwcGVuZHMgdGhlbQoJICogdG8gdGhlIGJhY2tncm91bmQgY29udGFpbmVyLiBPbmUgZWxlbWVudCBpcyBjcmVhdGVkIHBlcgoJICogc2xpZGUgbm8gbWF0dGVyIGlmIHRoZSBnaXZlbiBzbGlkZSBoYXMgdmlzaWJsZSBiYWNrZ3JvdW5kLgoJICovCglmdW5jdGlvbiBjcmVhdGVCYWNrZ3JvdW5kcygpIHsKCgkJdmFyIHByaW50TW9kZSA9IGlzUHJpbnRpbmdQREYoKTsKCgkJLy8gQ2xlYXIgcHJpb3IgYmFja2dyb3VuZHMKCQlkb20uYmFja2dyb3VuZC5pbm5lckhUTUwgPSAnJzsKCQlkb20uYmFja2dyb3VuZC5jbGFzc0xpc3QuYWRkKCAnbm8tdHJhbnNpdGlvbicgKTsKCgkJLy8gSXRlcmF0ZSBvdmVyIGFsbCBob3Jpem9udGFsIHNsaWRlcwoJCXRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggc2xpZGVoICkgewoKCQkJdmFyIGJhY2tncm91bmRTdGFjayA9IGNyZWF0ZUJhY2tncm91bmQoIHNsaWRlaCwgZG9tLmJhY2tncm91bmQgKTsKCgkJCS8vIEl0ZXJhdGUgb3ZlciBhbGwgdmVydGljYWwgc2xpZGVzCgkJCXRvQXJyYXkoIHNsaWRlaC5xdWVyeVNlbGVjdG9yQWxsKCAnc2VjdGlvbicgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBzbGlkZXYgKSB7CgoJCQkJY3JlYXRlQmFja2dyb3VuZCggc2xpZGV2LCBiYWNrZ3JvdW5kU3RhY2sgKTsKCgkJCQliYWNrZ3JvdW5kU3RhY2suY2xhc3NMaXN0LmFkZCggJ3N0YWNrJyApOwoKCQkJfSApOwoKCQl9ICk7CgoJCS8vIEFkZCBwYXJhbGxheCBiYWNrZ3JvdW5kIGlmIHNwZWNpZmllZAoJCWlmKCBjb25maWcucGFyYWxsYXhCYWNrZ3JvdW5kSW1hZ2UgKSB7CgoJCQlkb20uYmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAndXJsKCInICsgY29uZmlnLnBhcmFsbGF4QmFja2dyb3VuZEltYWdlICsgJyIpJzsKCQkJZG9tLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBjb25maWcucGFyYWxsYXhCYWNrZ3JvdW5kU2l6ZTsKCQkJZG9tLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZFJlcGVhdCA9IGNvbmZpZy5wYXJhbGxheEJhY2tncm91bmRSZXBlYXQ7CgkJCWRvbS5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9IGNvbmZpZy5wYXJhbGxheEJhY2tncm91bmRQb3NpdGlvbjsKCgkJCS8vIE1ha2Ugc3VyZSB0aGUgYmVsb3cgcHJvcGVydGllcyBhcmUgc2V0IG9uIHRoZSBlbGVtZW50IC0gdGhlc2UgcHJvcGVydGllcyBhcmUKCQkJLy8gbmVlZGVkIGZvciBwcm9wZXIgdHJhbnNpdGlvbnMgdG8gYmUgc2V0IG9uIHRoZSBlbGVtZW50IHZpYSBDU1MuIFRvIHJlbW92ZQoJCQkvLyBhbm5veWluZyBiYWNrZ3JvdW5kIHNsaWRlLWluIGVmZmVjdCB3aGVuIHRoZSBwcmVzZW50YXRpb24gc3RhcnRzLCBhcHBseQoJCQkvLyB0aGVzZSBwcm9wZXJ0aWVzIGFmdGVyIHNob3J0IHRpbWUgZGVsYXkKCQkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QuYWRkKCAnaGFzLXBhcmFsbGF4LWJhY2tncm91bmQnICk7CgkJCX0sIDEgKTsKCgkJfQoJCWVsc2UgewoKCQkJZG9tLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJyc7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoICdoYXMtcGFyYWxsYXgtYmFja2dyb3VuZCcgKTsKCgkJfQoKCX0KCgkvKioKCSAqIENyZWF0ZXMgYSBiYWNrZ3JvdW5kIGZvciB0aGUgZ2l2ZW4gc2xpZGUuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gc2xpZGUKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lciBUaGUgZWxlbWVudCB0aGF0IHRoZSBiYWNrZ3JvdW5kCgkgKiBzaG91bGQgYmUgYXBwZW5kZWQgdG8KCSAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSBOZXcgYmFja2dyb3VuZCBkaXYKCSAqLwoJZnVuY3Rpb24gY3JlYXRlQmFja2dyb3VuZCggc2xpZGUsIGNvbnRhaW5lciApIHsKCgoJCS8vIE1haW4gc2xpZGUgYmFja2dyb3VuZCBlbGVtZW50CgkJdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnZGl2JyApOwoJCWVsZW1lbnQuY2xhc3NOYW1lID0gJ3NsaWRlLWJhY2tncm91bmQgJyArIHNsaWRlLmNsYXNzTmFtZS5yZXBsYWNlKCAvcHJlc2VudHxwYXN0fGZ1dHVyZS8sICcnICk7CgoJCS8vIElubmVyIGJhY2tncm91bmQgZWxlbWVudCB0aGF0IHdyYXBzIGltYWdlcy92aWRlb3MvaWZyYW1lcwoJCXZhciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7CgkJY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gJ3NsaWRlLWJhY2tncm91bmQtY29udGVudCc7CgoJCWVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRlbnRFbGVtZW50ICk7CgkJY29udGFpbmVyLmFwcGVuZENoaWxkKCBlbGVtZW50ICk7CgoJCXNsaWRlLnNsaWRlQmFja2dyb3VuZEVsZW1lbnQgPSBlbGVtZW50OwoJCXNsaWRlLnNsaWRlQmFja2dyb3VuZENvbnRlbnRFbGVtZW50ID0gY29udGVudEVsZW1lbnQ7CgoJCS8vIFN5bmNzIHRoZSBiYWNrZ3JvdW5kIHRvIHJlZmxlY3QgYWxsIGN1cnJlbnQgYmFja2dyb3VuZCBzZXR0aW5ncwoJCXN5bmNCYWNrZ3JvdW5kKCBzbGlkZSApOwoKCQlyZXR1cm4gZWxlbWVudDsKCgl9CgoJLyoqCgkgKiBSZW5kZXJzIGFsbCBvZiB0aGUgdmlzdWFsIHByb3BlcnRpZXMgb2YgYSBzbGlkZSBiYWNrZ3JvdW5kCgkgKiBiYXNlZCBvbiB0aGUgdmFyaW91cyBiYWNrZ3JvdW5kIGF0dHJpYnV0ZXMuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gc2xpZGUKCSAqLwoJZnVuY3Rpb24gc3luY0JhY2tncm91bmQoIHNsaWRlICkgewoKCQl2YXIgZWxlbWVudCA9IHNsaWRlLnNsaWRlQmFja2dyb3VuZEVsZW1lbnQsCgkJCWNvbnRlbnRFbGVtZW50ID0gc2xpZGUuc2xpZGVCYWNrZ3JvdW5kQ29udGVudEVsZW1lbnQ7CgoJCS8vIFJlc2V0IHRoZSBwcmlvciBiYWNrZ3JvdW5kIHN0YXRlIGluIGNhc2UgdGhpcyBpcyBub3QgdGhlCgkJLy8gaW5pdGlhbCBzeW5jCgkJc2xpZGUuY2xhc3NMaXN0LnJlbW92ZSggJ2hhcy1kYXJrLWJhY2tncm91bmQnICk7CgkJc2xpZGUuY2xhc3NMaXN0LnJlbW92ZSggJ2hhcy1saWdodC1iYWNrZ3JvdW5kJyApOwoKCQllbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSggJ2RhdGEtbG9hZGVkJyApOwoJCWVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLWhhc2gnICk7CgkJZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtc2l6ZScgKTsKCQllbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC10cmFuc2l0aW9uJyApOwoJCWVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7CgoJCWNvbnRlbnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRTaXplID0gJyc7CgkJY29udGVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZFJlcGVhdCA9ICcnOwoJCWNvbnRlbnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9ICcnOwoJCWNvbnRlbnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICcnOwoJCWNvbnRlbnRFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnJzsKCQljb250ZW50RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCgkJdmFyIGRhdGEgPSB7CgkJCWJhY2tncm91bmQ6IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZCcgKSwKCQkJYmFja2dyb3VuZFNpemU6IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC1zaXplJyApLAoJCQliYWNrZ3JvdW5kSW1hZ2U6IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC1pbWFnZScgKSwKCQkJYmFja2dyb3VuZFZpZGVvOiBzbGlkZS5nZXRBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtdmlkZW8nICksCgkJCWJhY2tncm91bmRJZnJhbWU6IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC1pZnJhbWUnICksCgkJCWJhY2tncm91bmRDb2xvcjogc2xpZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLWNvbG9yJyApLAoJCQliYWNrZ3JvdW5kUmVwZWF0OiBzbGlkZS5nZXRBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtcmVwZWF0JyApLAoJCQliYWNrZ3JvdW5kUG9zaXRpb246IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC1wb3NpdGlvbicgKSwKCQkJYmFja2dyb3VuZFRyYW5zaXRpb246IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC10cmFuc2l0aW9uJyApLAoJCQliYWNrZ3JvdW5kT3BhY2l0eTogc2xpZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLW9wYWNpdHknICkKCQl9OwoKCQlpZiggZGF0YS5iYWNrZ3JvdW5kICkgewoJCQkvLyBBdXRvLXdyYXAgaW1hZ2UgdXJscyBpbiB1cmwoLi4uKQoJCQlpZiggL14oaHR0cHxmaWxlfFwvXC8pL2dpLnRlc3QoIGRhdGEuYmFja2dyb3VuZCApIHx8IC9cLihzdmd8cG5nfGpwZ3xqcGVnfGdpZnxibXApKFs/I1xzXXwkKS9naS50ZXN0KCBkYXRhLmJhY2tncm91bmQgKSApIHsKCQkJCXNsaWRlLnNldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC1pbWFnZScsIGRhdGEuYmFja2dyb3VuZCApOwoJCQl9CgkJCWVsc2UgewoJCQkJZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gZGF0YS5iYWNrZ3JvdW5kOwoJCQl9CgkJfQoKCQkvLyBDcmVhdGUgYSBoYXNoIGZvciB0aGlzIGNvbWJpbmF0aW9uIG9mIGJhY2tncm91bmQgc2V0dGluZ3MuCgkJLy8gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGVuIHR3byBzbGlkZSBiYWNrZ3JvdW5kcyBhcmUKCQkvLyB0aGUgc2FtZS4KCQlpZiggZGF0YS5iYWNrZ3JvdW5kIHx8IGRhdGEuYmFja2dyb3VuZENvbG9yIHx8IGRhdGEuYmFja2dyb3VuZEltYWdlIHx8IGRhdGEuYmFja2dyb3VuZFZpZGVvIHx8IGRhdGEuYmFja2dyb3VuZElmcmFtZSApIHsKCQkJZWxlbWVudC5zZXRBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtaGFzaCcsIGRhdGEuYmFja2dyb3VuZCArCgkJCQkJCQkJCQkJCQkJCWRhdGEuYmFja2dyb3VuZFNpemUgKwoJCQkJCQkJCQkJCQkJCQlkYXRhLmJhY2tncm91bmRJbWFnZSArCgkJCQkJCQkJCQkJCQkJCWRhdGEuYmFja2dyb3VuZFZpZGVvICsKCQkJCQkJCQkJCQkJCQkJZGF0YS5iYWNrZ3JvdW5kSWZyYW1lICsKCQkJCQkJCQkJCQkJCQkJZGF0YS5iYWNrZ3JvdW5kQ29sb3IgKwoJCQkJCQkJCQkJCQkJCQlkYXRhLmJhY2tncm91bmRSZXBlYXQgKwoJCQkJCQkJCQkJCQkJCQlkYXRhLmJhY2tncm91bmRQb3NpdGlvbiArCgkJCQkJCQkJCQkJCQkJCWRhdGEuYmFja2dyb3VuZFRyYW5zaXRpb24gKwoJCQkJCQkJCQkJCQkJCQlkYXRhLmJhY2tncm91bmRPcGFjaXR5ICk7CgkJfQoKCQkvLyBBZGRpdGlvbmFsIGFuZCBvcHRpb25hbCBiYWNrZ3JvdW5kIHByb3BlcnRpZXMKCQlpZiggZGF0YS5iYWNrZ3JvdW5kU2l6ZSApIGVsZW1lbnQuc2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLXNpemUnLCBkYXRhLmJhY2tncm91bmRTaXplICk7CgkJaWYoIGRhdGEuYmFja2dyb3VuZENvbG9yICkgZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjsKCQlpZiggZGF0YS5iYWNrZ3JvdW5kVHJhbnNpdGlvbiApIGVsZW1lbnQuc2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLXRyYW5zaXRpb24nLCBkYXRhLmJhY2tncm91bmRUcmFuc2l0aW9uICk7CgoJCWlmKCBzbGlkZS5oYXNBdHRyaWJ1dGUoICdkYXRhLXByZWxvYWQnICkgKSBlbGVtZW50LnNldEF0dHJpYnV0ZSggJ2RhdGEtcHJlbG9hZCcsICcnICk7CgoJCS8vIEJhY2tncm91bmQgaW1hZ2Ugb3B0aW9ucyBhcmUgc2V0IG9uIHRoZSBjb250ZW50IHdyYXBwZXIKCQlpZiggZGF0YS5iYWNrZ3JvdW5kU2l6ZSApIGNvbnRlbnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRTaXplID0gZGF0YS5iYWNrZ3JvdW5kU2l6ZTsKCQlpZiggZGF0YS5iYWNrZ3JvdW5kUmVwZWF0ICkgY29udGVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZFJlcGVhdCA9IGRhdGEuYmFja2dyb3VuZFJlcGVhdDsKCQlpZiggZGF0YS5iYWNrZ3JvdW5kUG9zaXRpb24gKSBjb250ZW50RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBkYXRhLmJhY2tncm91bmRQb3NpdGlvbjsKCQlpZiggZGF0YS5iYWNrZ3JvdW5kT3BhY2l0eSApIGNvbnRlbnRFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBkYXRhLmJhY2tncm91bmRPcGFjaXR5OwoKCQkvLyBJZiB0aGlzIHNsaWRlIGhhcyBhIGJhY2tncm91bmQgY29sb3IsIHdlIGFkZCBhIGNsYXNzIHRoYXQKCQkvLyBzaWduYWxzIGlmIGl0IGlzIGxpZ2h0IG9yIGRhcmsuIElmIHRoZSBzbGlkZSBoYXMgbm8gYmFja2dyb3VuZAoJCS8vIGNvbG9yLCBubyBjbGFzcyB3aWxsIGJlIGFkZGVkCgkJdmFyIGNvbnRyYXN0Q29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjsKCgkJLy8gSWYgbm8gYmcgY29sb3Igd2FzIGZvdW5kLCBjaGVjayB0aGUgY29tcHV0ZWQgYmFja2dyb3VuZAoJCWlmKCAhY29udHJhc3RDb2xvciApIHsKCQkJdmFyIGNvbXB1dGVkQmFja2dyb3VuZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGVsZW1lbnQgKTsKCQkJaWYoIGNvbXB1dGVkQmFja2dyb3VuZFN0eWxlICYmIGNvbXB1dGVkQmFja2dyb3VuZFN0eWxlLmJhY2tncm91bmRDb2xvciApIHsKCQkJCWNvbnRyYXN0Q29sb3IgPSBjb21wdXRlZEJhY2tncm91bmRTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7CgkJCX0KCQl9CgoJCWlmKCBjb250cmFzdENvbG9yICkgewoJCQl2YXIgcmdiID0gY29sb3JUb1JnYiggY29udHJhc3RDb2xvciApOwoKCQkJLy8gSWdub3JlIGZ1bGx5IHRyYW5zcGFyZW50IGJhY2tncm91bmRzLiBTb21lIGJyb3dzZXJzIHJldHVybgoJCQkvLyByZ2JhKDAsMCwwLDApIHdoZW4gcmVhZGluZyB0aGUgY29tcHV0ZWQgYmFja2dyb3VuZCBjb2xvciBvZgoJCQkvLyBhbiBlbGVtZW50IHdpdGggbm8gYmFja2dyb3VuZAoJCQlpZiggcmdiICYmIHJnYi5hICE9PSAwICkgewoJCQkJaWYoIGNvbG9yQnJpZ2h0bmVzcyggY29udHJhc3RDb2xvciApIDwgMTI4ICkgewoJCQkJCXNsaWRlLmNsYXNzTGlzdC5hZGQoICdoYXMtZGFyay1iYWNrZ3JvdW5kJyApOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJc2xpZGUuY2xhc3NMaXN0LmFkZCggJ2hhcy1saWdodC1iYWNrZ3JvdW5kJyApOwoJCQkJfQoJCQl9CgkJfQoKCX0KCgkvKioKCSAqIFJlZ2lzdGVycyBhIGxpc3RlbmVyIHRvIHBvc3RNZXNzYWdlIGV2ZW50cywgdGhpcyBtYWtlcyBpdAoJICogcG9zc2libGUgdG8gY2FsbCBhbGwgcmV2ZWFsLmpzIEFQSSBtZXRob2RzIGZyb20gYW5vdGhlcgoJICogd2luZG93LiBGb3IgZXhhbXBsZToKCSAqCgkgKiByZXZlYWxXaW5kb3cucG9zdE1lc3NhZ2UoIEpTT04uc3RyaW5naWZ5KHsKCSAqICAgbWV0aG9kOiAnc2xpZGUnLAoJICogICBhcmdzOiBbIDIgXQoJICogfSksICcqJyApOwoJICovCglmdW5jdGlvbiBzZXR1cFBvc3RNZXNzYWdlKCkgewoKCQlpZiggY29uZmlnLnBvc3RNZXNzYWdlICkgewoJCQl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ21lc3NhZ2UnLCBmdW5jdGlvbiAoIGV2ZW50ICkgewoJCQkJdmFyIGRhdGEgPSBldmVudC5kYXRhOwoKCQkJCS8vIE1ha2Ugc3VyZSB3ZSdyZSBkZWFsaW5nIHdpdGggSlNPTgoJCQkJaWYoIHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyAmJiBkYXRhLmNoYXJBdCggMCApID09PSAneycgJiYgZGF0YS5jaGFyQXQoIGRhdGEubGVuZ3RoIC0gMSApID09PSAnfScgKSB7CgkJCQkJZGF0YSA9IEpTT04ucGFyc2UoIGRhdGEgKTsKCgkJCQkJLy8gQ2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBtZXRob2QgY2FuIGJlIGZvdW5kCgkJCQkJaWYoIGRhdGEubWV0aG9kICYmIHR5cGVvZiBSZXZlYWxbZGF0YS5tZXRob2RdID09PSAnZnVuY3Rpb24nICkgewoJCQkJCQl2YXIgcmVzdWx0ID0gUmV2ZWFsW2RhdGEubWV0aG9kXS5hcHBseSggUmV2ZWFsLCBkYXRhLmFyZ3MgKTsKCgkJCQkJCS8vIERpc3BhdGNoIGEgcG9zdE1lc3NhZ2UgZXZlbnQgd2l0aCB0aGUgcmV0dXJuZWQgdmFsdWUgZnJvbQoJCQkJCQkvLyBvdXIgbWV0aG9kIGludm9jYXRpb24gZm9yIGdldHRlciBmdW5jdGlvbnMKCQkJCQkJZGlzcGF0Y2hQb3N0TWVzc2FnZSggJ2NhbGxiYWNrJywgeyBtZXRob2Q6IGRhdGEubWV0aG9kLCByZXN1bHQ6IHJlc3VsdCB9ICk7CgkJCQkJfQoJCQkJfQoJCQl9LCBmYWxzZSApOwoJCX0KCgl9CgoJLyoqCgkgKiBBcHBsaWVzIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZyb20gdGhlIGNvbmZpZwoJICogb2JqZWN0LiBNYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zCgkgKi8KCWZ1bmN0aW9uIGNvbmZpZ3VyZSggb3B0aW9ucyApIHsKCgkJdmFyIG9sZFRyYW5zaXRpb24gPSBjb25maWcudHJhbnNpdGlvbjsKCgkJLy8gTmV3IGNvbmZpZyBvcHRpb25zIG1heSBiZSBwYXNzZWQgd2hlbiB0aGlzIG1ldGhvZAoJCS8vIGlzIGludm9rZWQgdGhyb3VnaCB0aGUgQVBJIGFmdGVyIGluaXRpYWxpemF0aW9uCgkJaWYoIHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyApIGV4dGVuZCggY29uZmlnLCBvcHRpb25zICk7CgoJCS8vIEFib3J0IGlmIHJldmVhbC5qcyBoYXNuJ3QgZmluaXNoZWQgbG9hZGluZywgY29uZmlnCgkJLy8gY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQgYXV0b21hdGljYWxseSBvbmNlIGxvYWRpbmcKCQkvLyBmaW5pc2hlcwoJCWlmKCBsb2FkZWQgPT09IGZhbHNlICkgcmV0dXJuOwoKCQl2YXIgbnVtYmVyT2ZTbGlkZXMgPSBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBTTElERVNfU0VMRUNUT1IgKS5sZW5ndGg7CgoJCS8vIFJlbW92ZSB0aGUgcHJldmlvdXNseSBjb25maWd1cmVkIHRyYW5zaXRpb24gY2xhc3MKCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCBvbGRUcmFuc2l0aW9uICk7CgoJCS8vIEZvcmNlIGxpbmVhciB0cmFuc2l0aW9uIGJhc2VkIG9uIGJyb3dzZXIgY2FwYWJpbGl0aWVzCgkJaWYoIGZlYXR1cmVzLnRyYW5zZm9ybXMzZCA9PT0gZmFsc2UgKSBjb25maWcudHJhbnNpdGlvbiA9ICdsaW5lYXInOwoKCQlkb20ud3JhcHBlci5jbGFzc0xpc3QuYWRkKCBjb25maWcudHJhbnNpdGlvbiApOwoKCQlkb20ud3JhcHBlci5zZXRBdHRyaWJ1dGUoICdkYXRhLXRyYW5zaXRpb24tc3BlZWQnLCBjb25maWcudHJhbnNpdGlvblNwZWVkICk7CgkJZG9tLndyYXBwZXIuc2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLXRyYW5zaXRpb24nLCBjb25maWcuYmFja2dyb3VuZFRyYW5zaXRpb24gKTsKCgkJZG9tLmNvbnRyb2xzLnN0eWxlLmRpc3BsYXkgPSBjb25maWcuY29udHJvbHMgPyAnYmxvY2snIDogJ25vbmUnOwoJCWRvbS5wcm9ncmVzcy5zdHlsZS5kaXNwbGF5ID0gY29uZmlnLnByb2dyZXNzID8gJ2Jsb2NrJyA6ICdub25lJzsKCgkJZG9tLmNvbnRyb2xzLnNldEF0dHJpYnV0ZSggJ2RhdGEtY29udHJvbHMtbGF5b3V0JywgY29uZmlnLmNvbnRyb2xzTGF5b3V0ICk7CgkJZG9tLmNvbnRyb2xzLnNldEF0dHJpYnV0ZSggJ2RhdGEtY29udHJvbHMtYmFjay1hcnJvd3MnLCBjb25maWcuY29udHJvbHNCYWNrQXJyb3dzICk7CgoJCWlmKCBjb25maWcuc2h1ZmZsZSApIHsKCQkJc2h1ZmZsZSgpOwoJCX0KCgkJaWYoIGNvbmZpZy5ydGwgKSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICdydGwnICk7CgkJfQoJCWVsc2UgewoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCAncnRsJyApOwoJCX0KCgkJaWYoIGNvbmZpZy5jZW50ZXIgKSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICdjZW50ZXInICk7CgkJfQoJCWVsc2UgewoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCAnY2VudGVyJyApOwoJCX0KCgkJLy8gRXhpdCB0aGUgcGF1c2VkIG1vZGUgaWYgaXQgd2FzIGNvbmZpZ3VyZWQgb2ZmCgkJaWYoIGNvbmZpZy5wYXVzZSA9PT0gZmFsc2UgKSB7CgkJCXJlc3VtZSgpOwoJCX0KCgkJaWYoIGNvbmZpZy5zaG93Tm90ZXMgKSB7CgkJCWRvbS5zcGVha2VyTm90ZXMuc2V0QXR0cmlidXRlKCAnZGF0YS1sYXlvdXQnLCB0eXBlb2YgY29uZmlnLnNob3dOb3RlcyA9PT0gJ3N0cmluZycgPyBjb25maWcuc2hvd05vdGVzIDogJ2lubGluZScgKTsKCQl9CgoJCWlmKCBjb25maWcubW91c2VXaGVlbCApIHsKCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ0RPTU1vdXNlU2Nyb2xsJywgb25Eb2N1bWVudE1vdXNlU2Nyb2xsLCBmYWxzZSApOyAvLyBGRgoJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAnbW91c2V3aGVlbCcsIG9uRG9jdW1lbnRNb3VzZVNjcm9sbCwgZmFsc2UgKTsKCQl9CgkJZWxzZSB7CgkJCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdET01Nb3VzZVNjcm9sbCcsIG9uRG9jdW1lbnRNb3VzZVNjcm9sbCwgZmFsc2UgKTsgLy8gRkYKCQkJZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ21vdXNld2hlZWwnLCBvbkRvY3VtZW50TW91c2VTY3JvbGwsIGZhbHNlICk7CgkJfQoKCQkvLyBSb2xsaW5nIDNEIGxpbmtzCgkJaWYoIGNvbmZpZy5yb2xsaW5nTGlua3MgKSB7CgkJCWVuYWJsZVJvbGxpbmdMaW5rcygpOwoJCX0KCQllbHNlIHsKCQkJZGlzYWJsZVJvbGxpbmdMaW5rcygpOwoJCX0KCgkJLy8gQXV0by1oaWRlIHRoZSBtb3VzZSBwb2ludGVyIHdoZW4gaXRzIGluYWN0aXZlCgkJaWYoIGNvbmZpZy5oaWRlSW5hY3RpdmVDdXJzb3IgKSB7CgkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZW1vdmUnLCBvbkRvY3VtZW50Q3Vyc29yQWN0aXZlLCBmYWxzZSApOwoJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAnbW91c2Vkb3duJywgb25Eb2N1bWVudEN1cnNvckFjdGl2ZSwgZmFsc2UgKTsKCQl9CgkJZWxzZSB7CgkJCXNob3dDdXJzb3IoKTsKCgkJCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdtb3VzZW1vdmUnLCBvbkRvY3VtZW50Q3Vyc29yQWN0aXZlLCBmYWxzZSApOwoJCQlkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAnbW91c2Vkb3duJywgb25Eb2N1bWVudEN1cnNvckFjdGl2ZSwgZmFsc2UgKTsKCQl9CgoJCS8vIElmcmFtZSBsaW5rIHByZXZpZXdzCgkJaWYoIGNvbmZpZy5wcmV2aWV3TGlua3MgKSB7CgkJCWVuYWJsZVByZXZpZXdMaW5rcygpOwoJCQlkaXNhYmxlUHJldmlld0xpbmtzKCAnW2RhdGEtcHJldmlldy1saW5rPWZhbHNlXScgKTsKCQl9CgkJZWxzZSB7CgkJCWRpc2FibGVQcmV2aWV3TGlua3MoKTsKCQkJZW5hYmxlUHJldmlld0xpbmtzKCAnW2RhdGEtcHJldmlldy1saW5rXTpub3QoW2RhdGEtcHJldmlldy1saW5rPWZhbHNlXSknICk7CgkJfQoKCQkvLyBSZW1vdmUgZXhpc3RpbmcgYXV0by1zbGlkZSBjb250cm9scwoJCWlmKCBhdXRvU2xpZGVQbGF5ZXIgKSB7CgkJCWF1dG9TbGlkZVBsYXllci5kZXN0cm95KCk7CgkJCWF1dG9TbGlkZVBsYXllciA9IG51bGw7CgkJfQoKCQkvLyBHZW5lcmF0ZSBhdXRvLXNsaWRlIGNvbnRyb2xzIGlmIG5lZWRlZAoJCWlmKCBudW1iZXJPZlNsaWRlcyA+IDEgJiYgY29uZmlnLmF1dG9TbGlkZSAmJiBjb25maWcuYXV0b1NsaWRlU3RvcHBhYmxlICYmIGZlYXR1cmVzLmNhbnZhcyAmJiBmZWF0dXJlcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7CgkJCWF1dG9TbGlkZVBsYXllciA9IG5ldyBQbGF5YmFjayggZG9tLndyYXBwZXIsIGZ1bmN0aW9uKCkgewoJCQkJcmV0dXJuIE1hdGgubWluKCBNYXRoLm1heCggKCBEYXRlLm5vdygpIC0gYXV0b1NsaWRlU3RhcnRUaW1lICkgLyBhdXRvU2xpZGUsIDAgKSwgMSApOwoJCQl9ICk7CgoJCQlhdXRvU2xpZGVQbGF5ZXIub24oICdjbGljaycsIG9uQXV0b1NsaWRlUGxheWVyQ2xpY2sgKTsKCQkJYXV0b1NsaWRlUGF1c2VkID0gZmFsc2U7CgkJfQoKCQkvLyBXaGVuIGZyYWdtZW50cyBhcmUgdHVybmVkIG9mZiB0aGV5IHNob3VsZCBiZSB2aXNpYmxlCgkJaWYoIGNvbmZpZy5mcmFnbWVudHMgPT09IGZhbHNlICkgewoJCQl0b0FycmF5KCBkb20uc2xpZGVzLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbWVudCApIHsKCQkJCWVsZW1lbnQuY2xhc3NMaXN0LmFkZCggJ3Zpc2libGUnICk7CgkJCQllbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoICdjdXJyZW50LWZyYWdtZW50JyApOwoJCQl9ICk7CgkJfQoKCQkvLyBTbGlkZSBudW1iZXJzCgkJdmFyIHNsaWRlTnVtYmVyRGlzcGxheSA9ICdub25lJzsKCQlpZiggY29uZmlnLnNsaWRlTnVtYmVyICYmICFpc1ByaW50aW5nUERGKCkgKSB7CgkJCWlmKCBjb25maWcuc2hvd1NsaWRlTnVtYmVyID09PSAnYWxsJyApIHsKCQkJCXNsaWRlTnVtYmVyRGlzcGxheSA9ICdibG9jayc7CgkJCX0KCQkJZWxzZSBpZiggY29uZmlnLnNob3dTbGlkZU51bWJlciA9PT0gJ3NwZWFrZXInICYmIGlzU3BlYWtlck5vdGVzKCkgKSB7CgkJCQlzbGlkZU51bWJlckRpc3BsYXkgPSAnYmxvY2snOwoJCQl9CgkJfQoKCQlkb20uc2xpZGVOdW1iZXIuc3R5bGUuZGlzcGxheSA9IHNsaWRlTnVtYmVyRGlzcGxheTsKCgkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIG1vZGUgdG8gdGhlIERPTSBzbyB3ZSBjYW4gYWRqdXN0IHN0eWxpbmcKCQlpZiggY29uZmlnLm5hdmlnYXRpb25Nb2RlICE9PSAnZGVmYXVsdCcgKSB7CgkJCWRvbS53cmFwcGVyLnNldEF0dHJpYnV0ZSggJ2RhdGEtbmF2aWdhdGlvbi1tb2RlJywgY29uZmlnLm5hdmlnYXRpb25Nb2RlICk7CgkJfQoJCWVsc2UgewoJCQlkb20ud3JhcHBlci5yZW1vdmVBdHRyaWJ1dGUoICdkYXRhLW5hdmlnYXRpb24tbW9kZScgKTsKCQl9CgoJCS8vIERlZmluZSBvdXIgY29udGV4dHVhbCBsaXN0IG9mIGtleWJvYXJkIHNob3J0Y3V0cwoJCWlmKCBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdsaW5lYXInICkgewoJCQlrZXlib2FyZFNob3J0Y3V0c1snJiM4NTk0OyAgLCAgJiM4NTk1OyAgLCAgU1BBQ0UgICwgIE4gICwgIEwgICwgIEonXSA9ICdOZXh0IHNsaWRlJzsKCQkJa2V5Ym9hcmRTaG9ydGN1dHNbJyYjODU5MjsgICwgICYjODU5MzsgICwgIFAgICwgIEggICwgIEsnXSAgICAgICAgICAgPSAnUHJldmlvdXMgc2xpZGUnOwoJCX0KCQllbHNlIHsKCQkJa2V5Ym9hcmRTaG9ydGN1dHNbJ04gICwgIFNQQUNFJ10gICA9ICdOZXh0IHNsaWRlJzsKCQkJa2V5Ym9hcmRTaG9ydGN1dHNbJ1AnXSAgICAgICAgICAgICA9ICdQcmV2aW91cyBzbGlkZSc7CgkJCWtleWJvYXJkU2hvcnRjdXRzWycmIzg1OTI7ICAsICBIJ10gPSAnTmF2aWdhdGUgbGVmdCc7CgkJCWtleWJvYXJkU2hvcnRjdXRzWycmIzg1OTQ7ICAsICBMJ10gPSAnTmF2aWdhdGUgcmlnaHQnOwoJCQlrZXlib2FyZFNob3J0Y3V0c1snJiM4NTkzOyAgLCAgSyddID0gJ05hdmlnYXRlIHVwJzsKCQkJa2V5Ym9hcmRTaG9ydGN1dHNbJyYjODU5NTsgICwgIEonXSA9ICdOYXZpZ2F0ZSBkb3duJzsKCQl9CgoJCWtleWJvYXJkU2hvcnRjdXRzWydIb21lICAsICBTaGlmdCAmIzg1OTI7J10gICAgICAgID0gJ0ZpcnN0IHNsaWRlJzsKCQlrZXlib2FyZFNob3J0Y3V0c1snRW5kICAsICBTaGlmdCAmIzg1OTQ7J10gICAgICAgICA9ICdMYXN0IHNsaWRlJzsKCQlrZXlib2FyZFNob3J0Y3V0c1snQiAgLCAgLiddICAgICAgICAgICAgICAgICAgICAgICA9ICdQYXVzZSc7CgkJa2V5Ym9hcmRTaG9ydGN1dHNbJ0YnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnRnVsbHNjcmVlbic7CgkJa2V5Ym9hcmRTaG9ydGN1dHNbJ0VTQywgTyddICAgICAgICAgICAgICAgICAgICAgICAgPSAnU2xpZGUgb3ZlcnZpZXcnOwoKCQlzeW5jKCk7CgoJfQoKCS8qKgoJICogQmluZHMgYWxsIGV2ZW50IGxpc3RlbmVycy4KCSAqLwoJZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcnMoKSB7CgoJCWV2ZW50c0FyZUJvdW5kID0gdHJ1ZTsKCgkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICdoYXNoY2hhbmdlJywgb25XaW5kb3dIYXNoQ2hhbmdlLCBmYWxzZSApOwoJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAncmVzaXplJywgb25XaW5kb3dSZXNpemUsIGZhbHNlICk7CgoJCWlmKCBjb25maWcudG91Y2ggKSB7CgkJCWlmKCAnb25wb2ludGVyZG93bicgaW4gd2luZG93ICkgewoJCQkJLy8gVXNlIFczQyBwb2ludGVyIGV2ZW50cwoJCQkJZG9tLndyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lciggJ3BvaW50ZXJkb3duJywgb25Qb2ludGVyRG93biwgZmFsc2UgKTsKCQkJCWRvbS53cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoICdwb2ludGVybW92ZScsIG9uUG9pbnRlck1vdmUsIGZhbHNlICk7CgkJCQlkb20ud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCAncG9pbnRlcnVwJywgb25Qb2ludGVyVXAsIGZhbHNlICk7CgkJCX0KCQkJZWxzZSBpZiggd2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkICkgewoJCQkJLy8gSUUgMTAgdXNlcyBwcmVmaXhlZCB2ZXJzaW9uIG9mIHBvaW50ZXIgZXZlbnRzCgkJCQlkb20ud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCAnTVNQb2ludGVyRG93bicsIG9uUG9pbnRlckRvd24sIGZhbHNlICk7CgkJCQlkb20ud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCAnTVNQb2ludGVyTW92ZScsIG9uUG9pbnRlck1vdmUsIGZhbHNlICk7CgkJCQlkb20ud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCAnTVNQb2ludGVyVXAnLCBvblBvaW50ZXJVcCwgZmFsc2UgKTsKCQkJfQoJCQllbHNlIHsKCQkJCS8vIEZhbGwgYmFjayB0byB0b3VjaCBldmVudHMKCQkJCWRvbS53cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoICd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSApOwoJCQkJZG9tLndyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lciggJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBmYWxzZSApOwoJCQkJZG9tLndyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lciggJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCwgZmFsc2UgKTsKCQkJfQoJCX0KCgkJaWYoIGNvbmZpZy5rZXlib2FyZCApIHsKCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ2tleWRvd24nLCBvbkRvY3VtZW50S2V5RG93biwgZmFsc2UgKTsKCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ2tleXByZXNzJywgb25Eb2N1bWVudEtleVByZXNzLCBmYWxzZSApOwoJCX0KCgkJaWYoIGNvbmZpZy5wcm9ncmVzcyAmJiBkb20ucHJvZ3Jlc3MgKSB7CgkJCWRvbS5wcm9ncmVzcy5hZGRFdmVudExpc3RlbmVyKCAnY2xpY2snLCBvblByb2dyZXNzQ2xpY2tlZCwgZmFsc2UgKTsKCQl9CgoJCWRvbS5wYXVzZU92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgcmVzdW1lLCBmYWxzZSApOwoKCQlpZiggY29uZmlnLmZvY3VzQm9keU9uUGFnZVZpc2liaWxpdHlDaGFuZ2UgKSB7CgkJCXZhciB2aXNpYmlsaXR5Q2hhbmdlOwoKCQkJaWYoICdoaWRkZW4nIGluIGRvY3VtZW50ICkgewoJCQkJdmlzaWJpbGl0eUNoYW5nZSA9ICd2aXNpYmlsaXR5Y2hhbmdlJzsKCQkJfQoJCQllbHNlIGlmKCAnbXNIaWRkZW4nIGluIGRvY3VtZW50ICkgewoJCQkJdmlzaWJpbGl0eUNoYW5nZSA9ICdtc3Zpc2liaWxpdHljaGFuZ2UnOwoJCQl9CgkJCWVsc2UgaWYoICd3ZWJraXRIaWRkZW4nIGluIGRvY3VtZW50ICkgewoJCQkJdmlzaWJpbGl0eUNoYW5nZSA9ICd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJzsKCQkJfQoKCQkJaWYoIHZpc2liaWxpdHlDaGFuZ2UgKSB7CgkJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCB2aXNpYmlsaXR5Q2hhbmdlLCBvblBhZ2VWaXNpYmlsaXR5Q2hhbmdlLCBmYWxzZSApOwoJCQl9CgkJfQoKCQkvLyBMaXN0ZW4gdG8gYm90aCB0b3VjaCBhbmQgY2xpY2sgZXZlbnRzLCBpbiBjYXNlIHRoZSBkZXZpY2UKCQkvLyBzdXBwb3J0cyBib3RoCgkJdmFyIHBvaW50ZXJFdmVudHMgPSBbICd0b3VjaHN0YXJ0JywgJ2NsaWNrJyBdOwoKCQkvLyBPbmx5IHN1cHBvcnQgdG91Y2ggZm9yIEFuZHJvaWQsIGZpeGVzIGRvdWJsZSBuYXZpZ2F0aW9ucyBpbgoJCS8vIHN0b2NrIGJyb3dzZXIKCQlpZiggVUEubWF0Y2goIC9hbmRyb2lkL2dpICkgKSB7CgkJCXBvaW50ZXJFdmVudHMgPSBbICd0b3VjaHN0YXJ0JyBdOwoJCX0KCgkJcG9pbnRlckV2ZW50cy5mb3JFYWNoKCBmdW5jdGlvbiggZXZlbnROYW1lICkgewoJCQlkb20uY29udHJvbHNMZWZ0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuYWRkRXZlbnRMaXN0ZW5lciggZXZlbnROYW1lLCBvbk5hdmlnYXRlTGVmdENsaWNrZWQsIGZhbHNlICk7IH0gKTsKCQkJZG9tLmNvbnRyb2xzUmlnaHQuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5hZGRFdmVudExpc3RlbmVyKCBldmVudE5hbWUsIG9uTmF2aWdhdGVSaWdodENsaWNrZWQsIGZhbHNlICk7IH0gKTsKCQkJZG9tLmNvbnRyb2xzVXAuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5hZGRFdmVudExpc3RlbmVyKCBldmVudE5hbWUsIG9uTmF2aWdhdGVVcENsaWNrZWQsIGZhbHNlICk7IH0gKTsKCQkJZG9tLmNvbnRyb2xzRG93bi5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLmFkZEV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgb25OYXZpZ2F0ZURvd25DbGlja2VkLCBmYWxzZSApOyB9ICk7CgkJCWRvbS5jb250cm9sc1ByZXYuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5hZGRFdmVudExpc3RlbmVyKCBldmVudE5hbWUsIG9uTmF2aWdhdGVQcmV2Q2xpY2tlZCwgZmFsc2UgKTsgfSApOwoJCQlkb20uY29udHJvbHNOZXh0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuYWRkRXZlbnRMaXN0ZW5lciggZXZlbnROYW1lLCBvbk5hdmlnYXRlTmV4dENsaWNrZWQsIGZhbHNlICk7IH0gKTsKCQl9ICk7CgoJfQoKCS8qKgoJICogVW5iaW5kcyBhbGwgZXZlbnQgbGlzdGVuZXJzLgoJICovCglmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycygpIHsKCgkJZXZlbnRzQXJlQm91bmQgPSBmYWxzZTsKCgkJZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2tleWRvd24nLCBvbkRvY3VtZW50S2V5RG93biwgZmFsc2UgKTsKCQlkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAna2V5cHJlc3MnLCBvbkRvY3VtZW50S2V5UHJlc3MsIGZhbHNlICk7CgkJd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdoYXNoY2hhbmdlJywgb25XaW5kb3dIYXNoQ2hhbmdlLCBmYWxzZSApOwoJCXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCAncmVzaXplJywgb25XaW5kb3dSZXNpemUsIGZhbHNlICk7CgoJCWRvbS53cmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdwb2ludGVyZG93bicsIG9uUG9pbnRlckRvd24sIGZhbHNlICk7CgkJZG9tLndyYXBwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ3BvaW50ZXJtb3ZlJywgb25Qb2ludGVyTW92ZSwgZmFsc2UgKTsKCQlkb20ud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCAncG9pbnRlcnVwJywgb25Qb2ludGVyVXAsIGZhbHNlICk7CgoJCWRvbS53cmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdNU1BvaW50ZXJEb3duJywgb25Qb2ludGVyRG93biwgZmFsc2UgKTsKCQlkb20ud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCAnTVNQb2ludGVyTW92ZScsIG9uUG9pbnRlck1vdmUsIGZhbHNlICk7CgkJZG9tLndyYXBwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ01TUG9pbnRlclVwJywgb25Qb2ludGVyVXAsIGZhbHNlICk7CgoJCWRvbS53cmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoICd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSApOwoJCWRvbS53cmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoICd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UgKTsKCQlkb20ud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCAndG91Y2hlbmQnLCBvblRvdWNoRW5kLCBmYWxzZSApOwoKCQlkb20ucGF1c2VPdmVybGF5LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdjbGljaycsIHJlc3VtZSwgZmFsc2UgKTsKCgkJaWYgKCBjb25maWcucHJvZ3Jlc3MgJiYgZG9tLnByb2dyZXNzICkgewoJCQlkb20ucHJvZ3Jlc3MucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgb25Qcm9ncmVzc0NsaWNrZWQsIGZhbHNlICk7CgkJfQoKCQlbICd0b3VjaHN0YXJ0JywgJ2NsaWNrJyBdLmZvckVhY2goIGZ1bmN0aW9uKCBldmVudE5hbWUgKSB7CgkJCWRvbS5jb250cm9sc0xlZnQuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCBldmVudE5hbWUsIG9uTmF2aWdhdGVMZWZ0Q2xpY2tlZCwgZmFsc2UgKTsgfSApOwoJCQlkb20uY29udHJvbHNSaWdodC5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgb25OYXZpZ2F0ZVJpZ2h0Q2xpY2tlZCwgZmFsc2UgKTsgfSApOwoJCQlkb20uY29udHJvbHNVcC5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgb25OYXZpZ2F0ZVVwQ2xpY2tlZCwgZmFsc2UgKTsgfSApOwoJCQlkb20uY29udHJvbHNEb3duLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lciggZXZlbnROYW1lLCBvbk5hdmlnYXRlRG93bkNsaWNrZWQsIGZhbHNlICk7IH0gKTsKCQkJZG9tLmNvbnRyb2xzUHJldi5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgb25OYXZpZ2F0ZVByZXZDbGlja2VkLCBmYWxzZSApOyB9ICk7CgkJCWRvbS5jb250cm9sc05leHQuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCBldmVudE5hbWUsIG9uTmF2aWdhdGVOZXh0Q2xpY2tlZCwgZmFsc2UgKTsgfSApOwoJCX0gKTsKCgl9CgoJLyoqCgkgKiBSZWdpc3RlcnMgYSBuZXcgcGx1Z2luIHdpdGggdGhpcyByZXZlYWwuanMgaW5zdGFuY2UuCgkgKgoJICogcmV2ZWFsLmpzIHdhaXRzIGZvciBhbGwgcmVnaXNlcmVkIHBsdWdpbnMgdG8gaW5pdGlhbGl6ZQoJICogYmVmb3JlIGNvbnNpZGVyaW5nIGl0c2VsZiByZWFkeSwgYXMgbG9uZyBhcyB0aGUgcGx1Z2luCgkgKiBpcyByZWdpc3RlcmVkIGJlZm9yZSBjYWxsaW5nIGBSZXZlYWwuaW5pdGlhbGl6ZSgpYC4KCSAqLwoJZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW4oIGlkLCBwbHVnaW4gKSB7CgoJCWlmKCBwbHVnaW5zW2lkXSA9PT0gdW5kZWZpbmVkICkgewoJCQlwbHVnaW5zW2lkXSA9IHBsdWdpbjsKCgkJCS8vIElmIGEgcGx1Z2luIGlzIHJlZ2lzdGVyZWQgYWZ0ZXIgcmV2ZWFsLmpzIGlzIGxvYWRlZCwKCQkJLy8gaW5pdGlhbGl6ZSBpdCByaWdodCBhd2F5CgkJCWlmKCBsb2FkZWQgJiYgdHlwZW9mIHBsdWdpbi5pbml0ID09PSAnZnVuY3Rpb24nICkgewoJCQkJcGx1Z2luLmluaXQoKTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJY29uc29sZS53YXJuKCAncmV2ZWFsLmpzOiAiJysgaWQgKyciIHBsdWdpbiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQnICk7CgkJfQoKCX0KCgkvKioKCSAqIENoZWNrcyBpZiBhIHNwZWNpZmljIHBsdWdpbiBoYXMgYmVlbiByZWdpc3RlcmVkLgoJICoKCSAqIEBwYXJhbSB7U3RyaW5nfSBpZCBVbmlxdWUgcGx1Z2luIGlkZW50aWZpZXIKCSAqLwoJZnVuY3Rpb24gaGFzUGx1Z2luKCBpZCApIHsKCgkJcmV0dXJuICEhcGx1Z2luc1tpZF07CgoJfQoKCS8qKgoJICogUmV0dXJucyB0aGUgc3BlY2lmaWMgcGx1Z2luIGluc3RhbmNlLCBpZiBhIHBsdWdpbgoJICogd2l0aCB0aGUgZ2l2ZW4gSUQgaGFzIGJlZW4gcmVnaXN0ZXJlZC4KCSAqCgkgKiBAcGFyYW0ge1N0cmluZ30gaWQgVW5pcXVlIHBsdWdpbiBpZGVudGlmaWVyCgkgKi8KCWZ1bmN0aW9uIGdldFBsdWdpbiggaWQgKSB7CgoJCXJldHVybiBwbHVnaW5zW2lkXTsKCgl9CgoJLyoqCgkgKiBBZGQgYSBjdXN0b20ga2V5IGJpbmRpbmcgd2l0aCBvcHRpb25hbCBkZXNjcmlwdGlvbiB0bwoJICogYmUgYWRkZWQgdG8gdGhlIGhlbHAgc2NyZWVuLgoJICovCglmdW5jdGlvbiBhZGRLZXlCaW5kaW5nKCBiaW5kaW5nLCBjYWxsYmFjayApIHsKCgkJaWYoIHR5cGVvZiBiaW5kaW5nID09PSAnb2JqZWN0JyAmJiBiaW5kaW5nLmtleUNvZGUgKSB7CgkJCXJlZ2lzdGVyZWRLZXlCaW5kaW5nc1tiaW5kaW5nLmtleUNvZGVdID0gewoJCQkJY2FsbGJhY2s6IGNhbGxiYWNrLAoJCQkJa2V5OiBiaW5kaW5nLmtleSwKCQkJCWRlc2NyaXB0aW9uOiBiaW5kaW5nLmRlc2NyaXB0aW9uCgkJCX07CgkJfQoJCWVsc2UgewoJCQlyZWdpc3RlcmVkS2V5QmluZGluZ3NbYmluZGluZ10gPSB7CgkJCQljYWxsYmFjazogY2FsbGJhY2ssCgkJCQlrZXk6IG51bGwsCgkJCQlkZXNjcmlwdGlvbjogbnVsbAoJCQl9OwoJCX0KCgl9CgoJLyoqCgkgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgY3VzdG9tIGtleSBiaW5kaW5nLgoJICovCglmdW5jdGlvbiByZW1vdmVLZXlCaW5kaW5nKCBrZXlDb2RlICkgewoKCQlkZWxldGUgcmVnaXN0ZXJlZEtleUJpbmRpbmdzW2tleUNvZGVdOwoKCX0KCgkvKioKCSAqIEV4dGVuZCBvYmplY3QgYSB3aXRoIHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLgoJICogSWYgdGhlcmUncyBhIGNvbmZsaWN0LCBvYmplY3QgYiB0YWtlcyBwcmVjZWRlbmNlLgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBhCgkgKiBAcGFyYW0ge29iamVjdH0gYgoJICovCglmdW5jdGlvbiBleHRlbmQoIGEsIGIgKSB7CgoJCWZvciggdmFyIGkgaW4gYiApIHsKCQkJYVsgaSBdID0gYlsgaSBdOwoJCX0KCgkJcmV0dXJuIGE7CgoJfQoKCS8qKgoJICogQ29udmVydHMgdGhlIHRhcmdldCBvYmplY3QgdG8gYW4gYXJyYXkuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IG8KCSAqIEByZXR1cm4ge29iamVjdFtdfQoJICovCglmdW5jdGlvbiB0b0FycmF5KCBvICkgewoKCQlyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIG8gKTsKCgl9CgoJLyoqCgkgKiBVdGlsaXR5IGZvciBkZXNlcmlhbGl6aW5nIGEgdmFsdWUuCgkgKgoJICogQHBhcmFtIHsqfSB2YWx1ZQoJICogQHJldHVybiB7Kn0KCSAqLwoJZnVuY3Rpb24gZGVzZXJpYWxpemUoIHZhbHVlICkgewoKCQlpZiggdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyApIHsKCQkJaWYoIHZhbHVlID09PSAnbnVsbCcgKSByZXR1cm4gbnVsbDsKCQkJZWxzZSBpZiggdmFsdWUgPT09ICd0cnVlJyApIHJldHVybiB0cnVlOwoJCQllbHNlIGlmKCB2YWx1ZSA9PT0gJ2ZhbHNlJyApIHJldHVybiBmYWxzZTsKCQkJZWxzZSBpZiggdmFsdWUubWF0Y2goIC9eLT9bXGRcLl0rJC8gKSApIHJldHVybiBwYXJzZUZsb2F0KCB2YWx1ZSApOwoJCX0KCgkJcmV0dXJuIHZhbHVlOwoKCX0KCgkvKioKCSAqIE1lYXN1cmVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgYmV0d2VlbiBwb2ludCBhCgkgKiBhbmQgcG9pbnQgYi4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gYSBwb2ludCB3aXRoIHgveSBwcm9wZXJ0aWVzCgkgKiBAcGFyYW0ge29iamVjdH0gYiBwb2ludCB3aXRoIHgveSBwcm9wZXJ0aWVzCgkgKgoJICogQHJldHVybiB7bnVtYmVyfQoJICovCglmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW4oIGEsIGIgKSB7CgoJCXZhciBkeCA9IGEueCAtIGIueCwKCQkJZHkgPSBhLnkgLSBiLnk7CgoJCXJldHVybiBNYXRoLnNxcnQoIGR4KmR4ICsgZHkqZHkgKTsKCgl9CgoJLyoqCgkgKiBBcHBsaWVzIGEgQ1NTIHRyYW5zZm9ybSB0byB0aGUgdGFyZ2V0IGVsZW1lbnQuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudAoJICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zZm9ybQoJICovCglmdW5jdGlvbiB0cmFuc2Zvcm1FbGVtZW50KCBlbGVtZW50LCB0cmFuc2Zvcm0gKSB7CgoJCWVsZW1lbnQuc3R5bGUuV2Via2l0VHJhbnNmb3JtID0gdHJhbnNmb3JtOwoJCWVsZW1lbnQuc3R5bGUuTW96VHJhbnNmb3JtID0gdHJhbnNmb3JtOwoJCWVsZW1lbnQuc3R5bGUubXNUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CgkJZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CgoJfQoKCS8qKgoJICogQXBwbGllcyBDU1MgdHJhbnNmb3JtcyB0byB0aGUgc2xpZGVzIGNvbnRhaW5lci4gVGhlIGNvbnRhaW5lcgoJICogaXMgdHJhbnNmb3JtZWQgZnJvbSB0d28gc2VwYXJhdGUgc291cmNlczogbGF5b3V0IGFuZCB0aGUgb3ZlcnZpZXcKCSAqIG1vZGUuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IHRyYW5zZm9ybXMKCSAqLwoJZnVuY3Rpb24gdHJhbnNmb3JtU2xpZGVzKCB0cmFuc2Zvcm1zICkgewoKCQkvLyBQaWNrIHVwIG5ldyB0cmFuc2Zvcm1zIGZyb20gYXJndW1lbnRzCgkJaWYoIHR5cGVvZiB0cmFuc2Zvcm1zLmxheW91dCA9PT0gJ3N0cmluZycgKSBzbGlkZXNUcmFuc2Zvcm0ubGF5b3V0ID0gdHJhbnNmb3Jtcy5sYXlvdXQ7CgkJaWYoIHR5cGVvZiB0cmFuc2Zvcm1zLm92ZXJ2aWV3ID09PSAnc3RyaW5nJyApIHNsaWRlc1RyYW5zZm9ybS5vdmVydmlldyA9IHRyYW5zZm9ybXMub3ZlcnZpZXc7CgoJCS8vIEFwcGx5IHRoZSB0cmFuc2Zvcm1zIHRvIHRoZSBzbGlkZXMgY29udGFpbmVyCgkJaWYoIHNsaWRlc1RyYW5zZm9ybS5sYXlvdXQgKSB7CgkJCXRyYW5zZm9ybUVsZW1lbnQoIGRvbS5zbGlkZXMsIHNsaWRlc1RyYW5zZm9ybS5sYXlvdXQgKyAnICcgKyBzbGlkZXNUcmFuc2Zvcm0ub3ZlcnZpZXcgKTsKCQl9CgkJZWxzZSB7CgkJCXRyYW5zZm9ybUVsZW1lbnQoIGRvbS5zbGlkZXMsIHNsaWRlc1RyYW5zZm9ybS5vdmVydmlldyApOwoJCX0KCgl9CgoJLyoqCgkgKiBJbmplY3RzIHRoZSBnaXZlbiBDU1Mgc3R5bGVzIGludG8gdGhlIERPTS4KCSAqCgkgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKCSAqLwoJZnVuY3Rpb24gaW5qZWN0U3R5bGVTaGVldCggdmFsdWUgKSB7CgoJCXZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnc3R5bGUnICk7CgkJdGFnLnR5cGUgPSAndGV4dC9jc3MnOwoJCWlmKCB0YWcuc3R5bGVTaGVldCApIHsKCQkJdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHZhbHVlOwoJCX0KCQllbHNlIHsKCQkJdGFnLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSggdmFsdWUgKSApOwoJCX0KCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2hlYWQnIClbMF0uYXBwZW5kQ2hpbGQoIHRhZyApOwoKCX0KCgkvKioKCSAqIEZpbmQgdGhlIGNsb3Nlc3QgcGFyZW50IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4KCSAqIHNlbGVjdG9yLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHRhcmdldCBUaGUgY2hpbGQgZWxlbWVudAoJICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9yIFRoZSBDU1Mgc2VsZWN0b3IgdG8gbWF0Y2gKCSAqIHRoZSBwYXJlbnRzIGFnYWluc3QKCSAqCgkgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gVGhlIG1hdGNoZWQgcGFyZW50IG9yIG51bGwKCSAqIGlmIG5vIG1hdGNoaW5nIHBhcmVudCB3YXMgZm91bmQKCSAqLwoJZnVuY3Rpb24gY2xvc2VzdFBhcmVudCggdGFyZ2V0LCBzZWxlY3RvciApIHsKCgkJdmFyIHBhcmVudCA9IHRhcmdldC5wYXJlbnROb2RlOwoKCQl3aGlsZSggcGFyZW50ICkgewoKCQkJLy8gVGhlcmUncyBzb21lIG92ZXJoZWFkIGRvaW5nIHRoaXMgZWFjaCB0aW1lLCB3ZSBkb24ndAoJCQkvLyB3YW50IHRvIHJld3JpdGUgdGhlIGVsZW1lbnQgcHJvdG90eXBlIGJ1dCBzaG91bGQgc3RpbGwKCQkJLy8gYmUgZW5vdWdoIHRvIGZlYXR1cmUgZGV0ZWN0IG9uY2UgYXQgc3RhcnR1cC4uLgoJCQl2YXIgbWF0Y2hlc01ldGhvZCA9IHBhcmVudC5tYXRjaGVzIHx8IHBhcmVudC5tYXRjaGVzU2VsZWN0b3IgfHwgcGFyZW50Lm1zTWF0Y2hlc1NlbGVjdG9yOwoKCQkJLy8gSWYgd2UgZmluZCBhIG1hdGNoLCB3ZSdyZSBhbGwgc2V0CgkJCWlmKCBtYXRjaGVzTWV0aG9kICYmIG1hdGNoZXNNZXRob2QuY2FsbCggcGFyZW50LCBzZWxlY3RvciApICkgewoJCQkJcmV0dXJuIHBhcmVudDsKCQkJfQoKCQkJLy8gS2VlcCBzZWFyY2hpbmcKCQkJcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7CgoJCX0KCgkJcmV0dXJuIG51bGw7CgoJfQoKCS8qKgoJICogQ29udmVydHMgdmFyaW91cyBjb2xvciBpbnB1dCBmb3JtYXRzIHRvIGFuIHtyOjAsZzowLGI6MH0gb2JqZWN0LgoJICoKCSAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgY29sb3IKCSAqIEBleGFtcGxlCgkgKiBjb2xvclRvUmdiKCcjMDAwJyk7CgkgKiBAZXhhbXBsZQoJICogY29sb3JUb1JnYignIzAwMDAwMCcpOwoJICogQGV4YW1wbGUKCSAqIGNvbG9yVG9SZ2IoJ3JnYigwLDAsMCknKTsKCSAqIEBleGFtcGxlCgkgKiBjb2xvclRvUmdiKCdyZ2JhKDAsMCwwKScpOwoJICoKCSAqIEByZXR1cm4ge3tyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBbYV06IG51bWJlcn18bnVsbH0KCSAqLwoJZnVuY3Rpb24gY29sb3JUb1JnYiggY29sb3IgKSB7CgoJCXZhciBoZXgzID0gY29sb3IubWF0Y2goIC9eIyhbMC05YS1mXXszfSkkL2kgKTsKCQlpZiggaGV4MyAmJiBoZXgzWzFdICkgewoJCQloZXgzID0gaGV4M1sxXTsKCQkJcmV0dXJuIHsKCQkJCXI6IHBhcnNlSW50KCBoZXgzLmNoYXJBdCggMCApLCAxNiApICogMHgxMSwKCQkJCWc6IHBhcnNlSW50KCBoZXgzLmNoYXJBdCggMSApLCAxNiApICogMHgxMSwKCQkJCWI6IHBhcnNlSW50KCBoZXgzLmNoYXJBdCggMiApLCAxNiApICogMHgxMQoJCQl9OwoJCX0KCgkJdmFyIGhleDYgPSBjb2xvci5tYXRjaCggL14jKFswLTlhLWZdezZ9KSQvaSApOwoJCWlmKCBoZXg2ICYmIGhleDZbMV0gKSB7CgkJCWhleDYgPSBoZXg2WzFdOwoJCQlyZXR1cm4gewoJCQkJcjogcGFyc2VJbnQoIGhleDYuc3Vic3RyKCAwLCAyICksIDE2ICksCgkJCQlnOiBwYXJzZUludCggaGV4Ni5zdWJzdHIoIDIsIDIgKSwgMTYgKSwKCQkJCWI6IHBhcnNlSW50KCBoZXg2LnN1YnN0ciggNCwgMiApLCAxNiApCgkJCX07CgkJfQoKCQl2YXIgcmdiID0gY29sb3IubWF0Y2goIC9ecmdiXHMqXChccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKlwpJC9pICk7CgkJaWYoIHJnYiApIHsKCQkJcmV0dXJuIHsKCQkJCXI6IHBhcnNlSW50KCByZ2JbMV0sIDEwICksCgkJCQlnOiBwYXJzZUludCggcmdiWzJdLCAxMCApLAoJCQkJYjogcGFyc2VJbnQoIHJnYlszXSwgMTAgKQoJCQl9OwoJCX0KCgkJdmFyIHJnYmEgPSBjb2xvci5tYXRjaCggL15yZ2JhXHMqXChccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKlwsXHMqKFtcZF0rfFtcZF0qLltcZF0rKVxzKlwpJC9pICk7CgkJaWYoIHJnYmEgKSB7CgkJCXJldHVybiB7CgkJCQlyOiBwYXJzZUludCggcmdiYVsxXSwgMTAgKSwKCQkJCWc6IHBhcnNlSW50KCByZ2JhWzJdLCAxMCApLAoJCQkJYjogcGFyc2VJbnQoIHJnYmFbM10sIDEwICksCgkJCQlhOiBwYXJzZUZsb2F0KCByZ2JhWzRdICkKCQkJfTsKCQl9CgoJCXJldHVybiBudWxsOwoKCX0KCgkvKioKCSAqIENhbGN1bGF0ZXMgYnJpZ2h0bmVzcyBvbiBhIHNjYWxlIG9mIDAtMjU1LgoJICoKCSAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciBTZWUgY29sb3JUb1JnYiBmb3Igc3VwcG9ydGVkIGZvcm1hdHMuCgkgKiBAc2VlIHtAbGluayBjb2xvclRvUmdifQoJICovCglmdW5jdGlvbiBjb2xvckJyaWdodG5lc3MoIGNvbG9yICkgewoKCQlpZiggdHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJyApIGNvbG9yID0gY29sb3JUb1JnYiggY29sb3IgKTsKCgkJaWYoIGNvbG9yICkgewoJCQlyZXR1cm4gKCBjb2xvci5yICogMjk5ICsgY29sb3IuZyAqIDU4NyArIGNvbG9yLmIgKiAxMTQgKSAvIDEwMDA7CgkJfQoKCQlyZXR1cm4gbnVsbDsKCgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSByZW1haW5pbmcgaGVpZ2h0IHdpdGhpbiB0aGUgcGFyZW50IG9mIHRoZQoJICogdGFyZ2V0IGVsZW1lbnQuCgkgKgoJICogcmVtYWluaW5nIGhlaWdodCA9IFsgY29uZmlndXJlZCBwYXJlbnQgaGVpZ2h0IF0gLSBbIGN1cnJlbnQgcGFyZW50IGhlaWdodCBdCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudAoJICogQHBhcmFtIHtudW1iZXJ9IFtoZWlnaHRdCgkgKi8KCWZ1bmN0aW9uIGdldFJlbWFpbmluZ0hlaWdodCggZWxlbWVudCwgaGVpZ2h0ICkgewoKCQloZWlnaHQgPSBoZWlnaHQgfHwgMDsKCgkJaWYoIGVsZW1lbnQgKSB7CgkJCXZhciBuZXdIZWlnaHQsIG9sZEhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0OwoKCQkJLy8gQ2hhbmdlIHRoZSAuc3RyZXRjaCBlbGVtZW50IGhlaWdodCB0byAwIGluIG9yZGVyIGZpbmQgdGhlIGhlaWdodCBvZiBhbGwKCQkJLy8gdGhlIG90aGVyIGVsZW1lbnRzCgkJCWVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJzBweCc7CgoJCQkvLyBJbiBPdmVydmlldyBtb2RlLCB0aGUgcGFyZW50ICguc2xpZGUpIGhlaWdodCBpcyBzZXQgb2YgNzAwcHguCgkJCS8vIFJlc3RvcmUgaXQgdGVtcG9yYXJpbHkgdG8gaXRzIG5hdHVyYWwgaGVpZ2h0LgoJCQllbGVtZW50LnBhcmVudE5vZGUuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nOwoKCQkJbmV3SGVpZ2h0ID0gaGVpZ2h0IC0gZWxlbWVudC5wYXJlbnROb2RlLm9mZnNldEhlaWdodDsKCgkJCS8vIFJlc3RvcmUgdGhlIG9sZCBoZWlnaHQsIGp1c3QgaW4gY2FzZQoJCQllbGVtZW50LnN0eWxlLmhlaWdodCA9IG9sZEhlaWdodCArICdweCc7CgoJCQkvLyBDbGVhciB0aGUgcGFyZW50ICguc2xpZGUpIGhlaWdodC4gLnJlbW92ZVByb3BlcnR5IHdvcmtzIGluIElFOSsKCQkJZWxlbWVudC5wYXJlbnROb2RlLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdoZWlnaHQnKTsKCgkJCXJldHVybiBuZXdIZWlnaHQ7CgkJfQoKCQlyZXR1cm4gaGVpZ2h0OwoKCX0KCgkvKioKCSAqIENoZWNrcyBpZiB0aGlzIGluc3RhbmNlIGlzIGJlaW5nIHVzZWQgdG8gcHJpbnQgYSBQREYuCgkgKi8KCWZ1bmN0aW9uIGlzUHJpbnRpbmdQREYoKSB7CgoJCXJldHVybiAoIC9wcmludC1wZGYvZ2kgKS50ZXN0KCB3aW5kb3cubG9jYXRpb24uc2VhcmNoICk7CgoJfQoKCS8qKgoJICogSGlkZXMgdGhlIGFkZHJlc3MgYmFyIGlmIHdlJ3JlIG9uIGEgbW9iaWxlIGRldmljZS4KCSAqLwoJZnVuY3Rpb24gaGlkZUFkZHJlc3NCYXIoKSB7CgoJCWlmKCBjb25maWcuaGlkZUFkZHJlc3NCYXIgJiYgaXNNb2JpbGVEZXZpY2UgKSB7CgkJCS8vIEV2ZW50cyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBhZGRyZXNzIGJhciB0byBoaWRlCgkJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAnbG9hZCcsIHJlbW92ZUFkZHJlc3NCYXIsIGZhbHNlICk7CgkJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAnb3JpZW50YXRpb25jaGFuZ2UnLCByZW1vdmVBZGRyZXNzQmFyLCBmYWxzZSApOwoJCX0KCgl9CgoJLyoqCgkgKiBDYXVzZXMgdGhlIGFkZHJlc3MgYmFyIHRvIGhpZGUgb24gbW9iaWxlIGRldmljZXMsCgkgKiBtb3JlIHZlcnRpY2FsIHNwYWNlIGZ0dy4KCSAqLwoJZnVuY3Rpb24gcmVtb3ZlQWRkcmVzc0JhcigpIHsKCgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCXdpbmRvdy5zY3JvbGxUbyggMCwgMSApOwoJCX0sIDEwICk7CgoJfQoKCS8qKgoJICogRGlzcGF0Y2hlcyBhbiBldmVudCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgZnJvbSB0aGUKCSAqIHJldmVhbCBET00gZWxlbWVudC4KCSAqLwoJZnVuY3Rpb24gZGlzcGF0Y2hFdmVudCggdHlwZSwgYXJncyApIHsKCgkJdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoICdIVE1MRXZlbnRzJywgMSwgMiApOwoJCWV2ZW50LmluaXRFdmVudCggdHlwZSwgdHJ1ZSwgdHJ1ZSApOwoJCWV4dGVuZCggZXZlbnQsIGFyZ3MgKTsKCQlkb20ud3JhcHBlci5kaXNwYXRjaEV2ZW50KCBldmVudCApOwoKCQkvLyBJZiB3ZSdyZSBpbiBhbiBpZnJhbWUsIHBvc3QgZWFjaCByZXZlYWwuanMgZXZlbnQgdG8gdGhlCgkJLy8gcGFyZW50IHdpbmRvdy4gVXNlZCBieSB0aGUgbm90ZXMgcGx1Z2luCgkJZGlzcGF0Y2hQb3N0TWVzc2FnZSggdHlwZSApOwoKCX0KCgkvKioKCSAqIERpc3BhdGNoZWQgYSBwb3N0TWVzc2FnZSBvZiB0aGUgZ2l2ZW4gdHlwZSBmcm9tIG91ciB3aW5kb3cuCgkgKi8KCWZ1bmN0aW9uIGRpc3BhdGNoUG9zdE1lc3NhZ2UoIHR5cGUsIGRhdGEgKSB7CgoJCWlmKCBjb25maWcucG9zdE1lc3NhZ2VFdmVudHMgJiYgd2luZG93LnBhcmVudCAhPT0gd2luZG93LnNlbGYgKSB7CgkJCXZhciBtZXNzYWdlID0gewoJCQkJbmFtZXNwYWNlOiAncmV2ZWFsJywKCQkJCWV2ZW50TmFtZTogdHlwZSwKCQkJCXN0YXRlOiBnZXRTdGF0ZSgpCgkJCX07CgoJCQlleHRlbmQoIG1lc3NhZ2UsIGRhdGEgKTsKCgkJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoIEpTT04uc3RyaW5naWZ5KCBtZXNzYWdlICksICcqJyApOwoJCX0KCgl9CgoJLyoqCgkgKiBXcmFwIGFsbCBsaW5rcyBpbiAzRCBnb29kbmVzcy4KCSAqLwoJZnVuY3Rpb24gZW5hYmxlUm9sbGluZ0xpbmtzKCkgewoKCQlpZiggZmVhdHVyZXMudHJhbnNmb3JtczNkICYmICEoICdtc1BlcnNwZWN0aXZlJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlICkgKSB7CgkJCXZhciBhbmNob3JzID0gZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggU0xJREVTX1NFTEVDVE9SICsgJyBhJyApOwoKCQkJZm9yKCB2YXIgaSA9IDAsIGxlbiA9IGFuY2hvcnMubGVuZ3RoOyBpIDwgbGVuOyBpKysgKSB7CgkJCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsKCgkJCQlpZiggYW5jaG9yLnRleHRDb250ZW50ICYmICFhbmNob3IucXVlcnlTZWxlY3RvciggJyonICkgJiYgKCAhYW5jaG9yLmNsYXNzTmFtZSB8fCAhYW5jaG9yLmNsYXNzTGlzdC5jb250YWlucyggYW5jaG9yLCAncm9sbCcgKSApICkgewoJCQkJCXZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwoJCQkJCXNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgYW5jaG9yLnRleHQpOwoJCQkJCXNwYW4uaW5uZXJIVE1MID0gYW5jaG9yLmlubmVySFRNTDsKCgkJCQkJYW5jaG9yLmNsYXNzTGlzdC5hZGQoICdyb2xsJyApOwoJCQkJCWFuY2hvci5pbm5lckhUTUwgPSAnJzsKCQkJCQlhbmNob3IuYXBwZW5kQ2hpbGQoc3Bhbik7CgkJCQl9CgkJCX0KCQl9CgoJfQoKCS8qKgoJICogVW53cmFwIGFsbCAzRCBsaW5rcy4KCSAqLwoJZnVuY3Rpb24gZGlzYWJsZVJvbGxpbmdMaW5rcygpIHsKCgkJdmFyIGFuY2hvcnMgPSBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBTTElERVNfU0VMRUNUT1IgKyAnIGEucm9sbCcgKTsKCgkJZm9yKCB2YXIgaSA9IDAsIGxlbiA9IGFuY2hvcnMubGVuZ3RoOyBpIDwgbGVuOyBpKysgKSB7CgkJCXZhciBhbmNob3IgPSBhbmNob3JzW2ldOwoJCQl2YXIgc3BhbiA9IGFuY2hvci5xdWVyeVNlbGVjdG9yKCAnc3BhbicgKTsKCgkJCWlmKCBzcGFuICkgewoJCQkJYW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoICdyb2xsJyApOwoJCQkJYW5jaG9yLmlubmVySFRNTCA9IHNwYW4uaW5uZXJIVE1MOwoJCQl9CgkJfQoKCX0KCgkvKioKCSAqIEJpbmQgcHJldmlldyBmcmFtZSBsaW5rcy4KCSAqCgkgKiBAcGFyYW0ge3N0cmluZ30gW3NlbGVjdG9yPWFdIC0gc2VsZWN0b3IgZm9yIGFuY2hvcnMKCSAqLwoJZnVuY3Rpb24gZW5hYmxlUHJldmlld0xpbmtzKCBzZWxlY3RvciApIHsKCgkJdmFyIGFuY2hvcnMgPSB0b0FycmF5KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCBzZWxlY3RvciA/IHNlbGVjdG9yIDogJ2EnICkgKTsKCgkJYW5jaG9ycy5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbWVudCApIHsKCQkJaWYoIC9eKGh0dHB8d3d3KS9naS50ZXN0KCBlbGVtZW50LmdldEF0dHJpYnV0ZSggJ2hyZWYnICkgKSApIHsKCQkJCWVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgb25QcmV2aWV3TGlua0NsaWNrZWQsIGZhbHNlICk7CgkJCX0KCQl9ICk7CgoJfQoKCS8qKgoJICogVW5iaW5kIHByZXZpZXcgZnJhbWUgbGlua3MuCgkgKi8KCWZ1bmN0aW9uIGRpc2FibGVQcmV2aWV3TGlua3MoIHNlbGVjdG9yICkgewoKCQl2YXIgYW5jaG9ycyA9IHRvQXJyYXkoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIHNlbGVjdG9yID8gc2VsZWN0b3IgOiAnYScgKSApOwoKCQlhbmNob3JzLmZvckVhY2goIGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJCQlpZiggL14oaHR0cHx3d3cpL2dpLnRlc3QoIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCAnaHJlZicgKSApICkgewoJCQkJZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAnY2xpY2snLCBvblByZXZpZXdMaW5rQ2xpY2tlZCwgZmFsc2UgKTsKCQkJfQoJCX0gKTsKCgl9CgoJLyoqCgkgKiBPcGVucyBhIHByZXZpZXcgd2luZG93IGZvciB0aGUgdGFyZ2V0IFVSTC4KCSAqCgkgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gdXJsIGZvciBwcmV2aWV3IGlmcmFtZSBzcmMKCSAqLwoJZnVuY3Rpb24gc2hvd1ByZXZpZXcoIHVybCApIHsKCgkJY2xvc2VPdmVybGF5KCk7CgoJCWRvbS5vdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2RpdicgKTsKCQlkb20ub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCAnb3ZlcmxheScgKTsKCQlkb20ub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCAnb3ZlcmxheS1wcmV2aWV3JyApOwoJCWRvbS53cmFwcGVyLmFwcGVuZENoaWxkKCBkb20ub3ZlcmxheSApOwoKCQlkb20ub3ZlcmxheS5pbm5lckhUTUwgPSBbCgkJCSc8aGVhZGVyPicsCgkJCQknPGEgY2xhc3M9ImNsb3NlIiBocmVmPSIjIj48c3BhbiBjbGFzcz0iaWNvbiI+PC9zcGFuPjwvYT4nLAoJCQkJJzxhIGNsYXNzPSJleHRlcm5hbCIgaHJlZj0iJysgdXJsICsnIiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gY2xhc3M9Imljb24iPjwvc3Bhbj48L2E+JywKCQkJJzwvaGVhZGVyPicsCgkJCSc8ZGl2IGNsYXNzPSJzcGlubmVyIj48L2Rpdj4nLAoJCQknPGRpdiBjbGFzcz0idmlld3BvcnQiPicsCgkJCQknPGlmcmFtZSBzcmM9IicrIHVybCArJyI+PC9pZnJhbWU+JywKCQkJCSc8c21hbGwgY2xhc3M9InZpZXdwb3J0LWlubmVyIj4nLAoJCQkJCSc8c3BhbiBjbGFzcz0ieC1mcmFtZS1lcnJvciI+VW5hYmxlIHRvIGxvYWQgaWZyYW1lLiBUaGlzIGlzIGxpa2VseSBkdWUgdG8gdGhlIHNpdGVcJ3MgcG9saWN5ICh4LWZyYW1lLW9wdGlvbnMpLjwvc3Bhbj4nLAoJCQkJJzwvc21hbGw+JywKCQkJJzwvZGl2PicKCQldLmpvaW4oJycpOwoKCQlkb20ub3ZlcmxheS5xdWVyeVNlbGVjdG9yKCAnaWZyYW1lJyApLmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkJywgZnVuY3Rpb24oIGV2ZW50ICkgewoJCQlkb20ub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCAnbG9hZGVkJyApOwoJCX0sIGZhbHNlICk7CgoJCWRvbS5vdmVybGF5LnF1ZXJ5U2VsZWN0b3IoICcuY2xvc2UnICkuYWRkRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgZnVuY3Rpb24oIGV2ZW50ICkgewoJCQljbG9zZU92ZXJsYXkoKTsKCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQl9LCBmYWxzZSApOwoKCQlkb20ub3ZlcmxheS5xdWVyeVNlbGVjdG9yKCAnLmV4dGVybmFsJyApLmFkZEV2ZW50TGlzdGVuZXIoICdjbGljaycsIGZ1bmN0aW9uKCBldmVudCApIHsKCQkJY2xvc2VPdmVybGF5KCk7CgkJfSwgZmFsc2UgKTsKCgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCWRvbS5vdmVybGF5LmNsYXNzTGlzdC5hZGQoICd2aXNpYmxlJyApOwoJCX0sIDEgKTsKCgl9CgoJLyoqCgkgKiBPcGVuIG9yIGNsb3NlIGhlbHAgb3ZlcmxheSB3aW5kb3cuCgkgKgoJICogQHBhcmFtIHtCb29sZWFufSBbb3ZlcnJpZGVdIEZsYWcgd2hpY2ggb3ZlcnJpZGVzIHRoZQoJICogdG9nZ2xlIGxvZ2ljIGFuZCBmb3JjaWJseSBzZXRzIHRoZSBkZXNpcmVkIHN0YXRlLiBUcnVlIG1lYW5zCgkgKiBoZWxwIGlzIG9wZW4sIGZhbHNlIG1lYW5zIGl0J3MgY2xvc2VkLgoJICovCglmdW5jdGlvbiB0b2dnbGVIZWxwKCBvdmVycmlkZSApewoKCQlpZiggdHlwZW9mIG92ZXJyaWRlID09PSAnYm9vbGVhbicgKSB7CgkJCW92ZXJyaWRlID8gc2hvd0hlbHAoKSA6IGNsb3NlT3ZlcmxheSgpOwoJCX0KCQllbHNlIHsKCQkJaWYoIGRvbS5vdmVybGF5ICkgewoJCQkJY2xvc2VPdmVybGF5KCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlzaG93SGVscCgpOwoJCQl9CgkJfQoJfQoKCS8qKgoJICogT3BlbnMgYW4gb3ZlcmxheSB3aW5kb3cgd2l0aCBoZWxwIG1hdGVyaWFsLgoJICovCglmdW5jdGlvbiBzaG93SGVscCgpIHsKCgkJaWYoIGNvbmZpZy5oZWxwICkgewoKCQkJY2xvc2VPdmVybGF5KCk7CgoJCQlkb20ub3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7CgkJCWRvbS5vdmVybGF5LmNsYXNzTGlzdC5hZGQoICdvdmVybGF5JyApOwoJCQlkb20ub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCAnb3ZlcmxheS1oZWxwJyApOwoJCQlkb20ud3JhcHBlci5hcHBlbmRDaGlsZCggZG9tLm92ZXJsYXkgKTsKCgkJCXZhciBodG1sID0gJzxwIGNsYXNzPSJ0aXRsZSI+S2V5Ym9hcmQgU2hvcnRjdXRzPC9wPjxici8+JzsKCgkJCWh0bWwgKz0gJzx0YWJsZT48dGg+S0VZPC90aD48dGg+QUNUSU9OPC90aD4nOwoJCQlmb3IoIHZhciBrZXkgaW4ga2V5Ym9hcmRTaG9ydGN1dHMgKSB7CgkJCQlodG1sICs9ICc8dHI+PHRkPicgKyBrZXkgKyAnPC90ZD48dGQ+JyArIGtleWJvYXJkU2hvcnRjdXRzWyBrZXkgXSArICc8L3RkPjwvdHI+JzsKCQkJfQoKCQkJLy8gQWRkIGN1c3RvbSBrZXkgYmluZGluZ3MgdGhhdCBoYXZlIGFzc29jaWF0ZWQgZGVzY3JpcHRpb25zCgkJCWZvciggdmFyIGJpbmRpbmcgaW4gcmVnaXN0ZXJlZEtleUJpbmRpbmdzICkgewoJCQkJaWYoIHJlZ2lzdGVyZWRLZXlCaW5kaW5nc1tiaW5kaW5nXS5rZXkgJiYgcmVnaXN0ZXJlZEtleUJpbmRpbmdzW2JpbmRpbmddLmRlc2NyaXB0aW9uICkgewoJCQkJCWh0bWwgKz0gJzx0cj48dGQ+JyArIHJlZ2lzdGVyZWRLZXlCaW5kaW5nc1tiaW5kaW5nXS5rZXkgKyAnPC90ZD48dGQ+JyArIHJlZ2lzdGVyZWRLZXlCaW5kaW5nc1tiaW5kaW5nXS5kZXNjcmlwdGlvbiArICc8L3RkPjwvdHI+JzsKCQkJCX0KCQkJfQoKCQkJaHRtbCArPSAnPC90YWJsZT4nOwoKCQkJZG9tLm92ZXJsYXkuaW5uZXJIVE1MID0gWwoJCQkJJzxoZWFkZXI+JywKCQkJCQknPGEgY2xhc3M9ImNsb3NlIiBocmVmPSIjIj48c3BhbiBjbGFzcz0iaWNvbiI+PC9zcGFuPjwvYT4nLAoJCQkJJzwvaGVhZGVyPicsCgkJCQknPGRpdiBjbGFzcz0idmlld3BvcnQiPicsCgkJCQkJJzxkaXYgY2xhc3M9InZpZXdwb3J0LWlubmVyIj4nKyBodG1sICsnPC9kaXY+JywKCQkJCSc8L2Rpdj4nCgkJCV0uam9pbignJyk7CgoJCQlkb20ub3ZlcmxheS5xdWVyeVNlbGVjdG9yKCAnLmNsb3NlJyApLmFkZEV2ZW50TGlzdGVuZXIoICdjbGljaycsIGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCWNsb3NlT3ZlcmxheSgpOwoJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQkJfSwgZmFsc2UgKTsKCgkJCXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewoJCQkJZG9tLm92ZXJsYXkuY2xhc3NMaXN0LmFkZCggJ3Zpc2libGUnICk7CgkJCX0sIDEgKTsKCgkJfQoKCX0KCgkvKioKCSAqIENsb3NlcyBhbnkgY3VycmVudGx5IG9wZW4gb3ZlcmxheS4KCSAqLwoJZnVuY3Rpb24gY2xvc2VPdmVybGF5KCkgewoKCQlpZiggZG9tLm92ZXJsYXkgKSB7CgkJCWRvbS5vdmVybGF5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGRvbS5vdmVybGF5ICk7CgkJCWRvbS5vdmVybGF5ID0gbnVsbDsKCQl9CgoJfQoKCS8qKgoJICogQXBwbGllcyBKYXZhU2NyaXB0LWNvbnRyb2xsZWQgbGF5b3V0IHJ1bGVzIHRvIHRoZQoJICogcHJlc2VudGF0aW9uLgoJICovCglmdW5jdGlvbiBsYXlvdXQoKSB7CgoJCWlmKCBkb20ud3JhcHBlciAmJiAhaXNQcmludGluZ1BERigpICkgewoKCQkJaWYoICFjb25maWcuZGlzYWJsZUxheW91dCApIHsKCgkJCQkvLyBPbiBzb21lIG1vYmlsZSBkZXZpY2VzICcxMDB2aCcgaXMgdGFsbGVyIHRoYW4gdGhlIHZpc2libGUKCQkJCS8vIHZpZXdwb3J0IHdoaWNoIGxlYWRzIHRvIHBhcnQgb2YgdGhlIHByZXNlbnRhdGlvbiBiZWluZwoJCQkJLy8gY3V0IG9mZi4gVG8gd29yayBhcm91bmQgdGhpcyB3ZSBkZWZpbmUgb3VyIG93biAnLS12aCcgY3VzdG9tCgkJCQkvLyBwcm9wZXJ0eSB3aGVyZSAxMDB4IGFkZHMgdXAgdG8gdGhlIGNvcnJlY3QgaGVpZ2h0LgoJCQkJLy8KCQkJCS8vIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vdGhlLXRyaWNrLXRvLXZpZXdwb3J0LXVuaXRzLW9uLW1vYmlsZS8KCQkJCWlmKCBpc01vYmlsZURldmljZSApIHsKCQkJCQlkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoICctLXZoJywgKCB3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjAxICkgKyAncHgnICk7CgkJCQl9CgoJCQkJdmFyIHNpemUgPSBnZXRDb21wdXRlZFNsaWRlU2l6ZSgpOwoKCQkJCXZhciBvbGRTY2FsZSA9IHNjYWxlOwoKCQkJCS8vIExheW91dCB0aGUgY29udGVudHMgb2YgdGhlIHNsaWRlcwoJCQkJbGF5b3V0U2xpZGVDb250ZW50cyggY29uZmlnLndpZHRoLCBjb25maWcuaGVpZ2h0ICk7CgoJCQkJZG9tLnNsaWRlcy5zdHlsZS53aWR0aCA9IHNpemUud2lkdGggKyAncHgnOwoJCQkJZG9tLnNsaWRlcy5zdHlsZS5oZWlnaHQgPSBzaXplLmhlaWdodCArICdweCc7CgoJCQkJLy8gRGV0ZXJtaW5lIHNjYWxlIG9mIGNvbnRlbnQgdG8gZml0IHdpdGhpbiBhdmFpbGFibGUgc3BhY2UKCQkJCXNjYWxlID0gTWF0aC5taW4oIHNpemUucHJlc2VudGF0aW9uV2lkdGggLyBzaXplLndpZHRoLCBzaXplLnByZXNlbnRhdGlvbkhlaWdodCAvIHNpemUuaGVpZ2h0ICk7CgoJCQkJLy8gUmVzcGVjdCBtYXgvbWluIHNjYWxlIHNldHRpbmdzCgkJCQlzY2FsZSA9IE1hdGgubWF4KCBzY2FsZSwgY29uZmlnLm1pblNjYWxlICk7CgkJCQlzY2FsZSA9IE1hdGgubWluKCBzY2FsZSwgY29uZmlnLm1heFNjYWxlICk7CgoJCQkJLy8gRG9uJ3QgYXBwbHkgYW55IHNjYWxpbmcgc3R5bGVzIGlmIHNjYWxlIGlzIDEKCQkJCWlmKCBzY2FsZSA9PT0gMSApIHsKCQkJCQlkb20uc2xpZGVzLnN0eWxlLnpvb20gPSAnJzsKCQkJCQlkb20uc2xpZGVzLnN0eWxlLmxlZnQgPSAnJzsKCQkJCQlkb20uc2xpZGVzLnN0eWxlLnRvcCA9ICcnOwoJCQkJCWRvbS5zbGlkZXMuc3R5bGUuYm90dG9tID0gJyc7CgkJCQkJZG9tLnNsaWRlcy5zdHlsZS5yaWdodCA9ICcnOwoJCQkJCXRyYW5zZm9ybVNsaWRlcyggeyBsYXlvdXQ6ICcnIH0gKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCS8vIFpvb20gU2NhbGluZwoJCQkJCS8vIENvbnRlbnQgcmVtYWlucyBjcmlzcCBubyBtYXR0ZXIgaG93IG11Y2ggd2Ugc2NhbGUuIFNpZGUKCQkJCQkvLyBlZmZlY3RzIGFyZSBtaW5vciBkaWZmZXJlbmNlcyBpbiB0ZXh0IGxheW91dCBhbmQgaWZyYW1lCgkJCQkJLy8gdmlld3BvcnRzIGNoYW5naW5nIHNpemUuIEEgMjAweDIwMCBpZnJhbWUgdmlld3BvcnQgaW4gYQoJCQkJCS8vIDJ4IHpvb21lZCBwcmVzZW50YXRpb24gZW5kcyB1cCBoYXZpbmcgYSA0MDB4NDAwIHZpZXdwb3J0LgoJCQkJCWlmKCBzY2FsZSA+IDEgJiYgZmVhdHVyZXMuem9vbSAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA8IDIgKSB7CgkJCQkJCWRvbS5zbGlkZXMuc3R5bGUuem9vbSA9IHNjYWxlOwoJCQkJCQlkb20uc2xpZGVzLnN0eWxlLmxlZnQgPSAnJzsKCQkJCQkJZG9tLnNsaWRlcy5zdHlsZS50b3AgPSAnJzsKCQkJCQkJZG9tLnNsaWRlcy5zdHlsZS5ib3R0b20gPSAnJzsKCQkJCQkJZG9tLnNsaWRlcy5zdHlsZS5yaWdodCA9ICcnOwoJCQkJCQl0cmFuc2Zvcm1TbGlkZXMoIHsgbGF5b3V0OiAnJyB9ICk7CgkJCQkJfQoJCQkJCS8vIFRyYW5zZm9ybSBTY2FsaW5nCgkJCQkJLy8gQ29udGVudCBsYXlvdXQgcmVtYWlucyB0aGUgZXhhY3Qgc2FtZSB3aGVuIHNjYWxlZCB1cC4KCQkJCQkvLyBTaWRlIGVmZmVjdCBpcyBjb250ZW50IGJlY29taW5nIGJsdXJyZWQsIGVzcGVjaWFsbHkgd2l0aAoJCQkJCS8vIGhpZ2ggc2NhbGUgdmFsdWVzIG9uIGxkcGkgc2NyZWVucy4KCQkJCQllbHNlIHsKCQkJCQkJZG9tLnNsaWRlcy5zdHlsZS56b29tID0gJyc7CgkJCQkJCWRvbS5zbGlkZXMuc3R5bGUubGVmdCA9ICc1MCUnOwoJCQkJCQlkb20uc2xpZGVzLnN0eWxlLnRvcCA9ICc1MCUnOwoJCQkJCQlkb20uc2xpZGVzLnN0eWxlLmJvdHRvbSA9ICdhdXRvJzsKCQkJCQkJZG9tLnNsaWRlcy5zdHlsZS5yaWdodCA9ICdhdXRvJzsKCQkJCQkJdHJhbnNmb3JtU2xpZGVzKCB7IGxheW91dDogJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgnKyBzY2FsZSArJyknIH0gKTsKCQkJCQl9CgkJCQl9CgoJCQkJLy8gU2VsZWN0IGFsbCBzbGlkZXMsIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsCgkJCQl2YXIgc2xpZGVzID0gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggU0xJREVTX1NFTEVDVE9SICkgKTsKCgkJCQlmb3IoIHZhciBpID0gMCwgbGVuID0gc2xpZGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrICkgewoJCQkJCXZhciBzbGlkZSA9IHNsaWRlc1sgaSBdOwoKCQkJCQkvLyBEb24ndCBib3RoZXIgdXBkYXRpbmcgaW52aXNpYmxlIHNsaWRlcwoJCQkJCWlmKCBzbGlkZS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgKSB7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCgkJCQkJaWYoIGNvbmZpZy5jZW50ZXIgfHwgc2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCAnY2VudGVyJyApICkgewoJCQkJCQkvLyBWZXJ0aWNhbCBzdGFja3MgYXJlIG5vdCBjZW50cmVkIHNpbmNlIHRoZWlyIHNlY3Rpb24KCQkJCQkJLy8gY2hpbGRyZW4gd2lsbCBiZQoJCQkJCQlpZiggc2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCAnc3RhY2snICkgKSB7CgkJCQkJCQlzbGlkZS5zdHlsZS50b3AgPSAwOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJc2xpZGUuc3R5bGUudG9wID0gTWF0aC5tYXgoICggc2l6ZS5oZWlnaHQgLSBzbGlkZS5zY3JvbGxIZWlnaHQgKSAvIDIsIDAgKSArICdweCc7CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCXNsaWRlLnN0eWxlLnRvcCA9ICcnOwoJCQkJCX0KCgkJCQl9CgoJCQkJaWYoIG9sZFNjYWxlICE9PSBzY2FsZSApIHsKCQkJCQlkaXNwYXRjaEV2ZW50KCAncmVzaXplJywgewoJCQkJCQknb2xkU2NhbGUnOiBvbGRTY2FsZSwKCQkJCQkJJ3NjYWxlJzogc2NhbGUsCgkJCQkJCSdzaXplJzogc2l6ZQoJCQkJCX0gKTsKCQkJCX0KCQkJfQoKCQkJdXBkYXRlUHJvZ3Jlc3MoKTsKCQkJdXBkYXRlUGFyYWxsYXgoKTsKCgkJCWlmKCBpc092ZXJ2aWV3KCkgKSB7CgkJCQl1cGRhdGVPdmVydmlldygpOwoJCQl9CgoJCX0KCgl9CgoJLyoqCgkgKiBBcHBsaWVzIGxheW91dCBsb2dpYyB0byB0aGUgY29udGVudHMgb2YgYWxsIHNsaWRlcyBpbgoJICogdGhlIHByZXNlbnRhdGlvbi4KCSAqCgkgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHdpZHRoCgkgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGhlaWdodAoJICovCglmdW5jdGlvbiBsYXlvdXRTbGlkZUNvbnRlbnRzKCB3aWR0aCwgaGVpZ2h0ICkgewoKCQkvLyBIYW5kbGUgc2l6aW5nIG9mIGVsZW1lbnRzIHdpdGggdGhlICdzdHJldGNoJyBjbGFzcwoJCXRvQXJyYXkoIGRvbS5zbGlkZXMucXVlcnlTZWxlY3RvckFsbCggJ3NlY3Rpb24gPiAuc3RyZXRjaCcgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbGVtZW50ICkgewoKCQkJLy8gRGV0ZXJtaW5lIGhvdyBtdWNoIHZlcnRpY2FsIHNwYWNlIHdlIGNhbiB1c2UKCQkJdmFyIHJlbWFpbmluZ0hlaWdodCA9IGdldFJlbWFpbmluZ0hlaWdodCggZWxlbWVudCwgaGVpZ2h0ICk7CgoJCQkvLyBDb25zaWRlciB0aGUgYXNwZWN0IHJhdGlvIG9mIG1lZGlhIGVsZW1lbnRzCgkJCWlmKCAvKGltZ3x2aWRlbykvZ2kudGVzdCggZWxlbWVudC5ub2RlTmFtZSApICkgewoJCQkJdmFyIG53ID0gZWxlbWVudC5uYXR1cmFsV2lkdGggfHwgZWxlbWVudC52aWRlb1dpZHRoLAoJCQkJCW5oID0gZWxlbWVudC5uYXR1cmFsSGVpZ2h0IHx8IGVsZW1lbnQudmlkZW9IZWlnaHQ7CgoJCQkJdmFyIGVzID0gTWF0aC5taW4oIHdpZHRoIC8gbncsIHJlbWFpbmluZ0hlaWdodCAvIG5oICk7CgoJCQkJZWxlbWVudC5zdHlsZS53aWR0aCA9ICggbncgKiBlcyApICsgJ3B4JzsKCQkJCWVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKCBuaCAqIGVzICkgKyAncHgnOwoKCQkJfQoJCQllbHNlIHsKCQkJCWVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7CgkJCQllbGVtZW50LnN0eWxlLmhlaWdodCA9IHJlbWFpbmluZ0hlaWdodCArICdweCc7CgkJCX0KCgkJfSApOwoKCX0KCgkvKioKCSAqIENhbGN1bGF0ZXMgdGhlIGNvbXB1dGVkIHBpeGVsIHNpemUgb2Ygb3VyIHNsaWRlcy4gVGhlc2UKCSAqIHZhbHVlcyBhcmUgYmFzZWQgb24gdGhlIHdpZHRoIGFuZCBoZWlnaHQgY29uZmlndXJhdGlvbgoJICogb3B0aW9ucy4KCSAqCgkgKiBAcGFyYW0ge251bWJlcn0gW3ByZXNlbnRhdGlvbldpZHRoPWRvbS53cmFwcGVyLm9mZnNldFdpZHRoXQoJICogQHBhcmFtIHtudW1iZXJ9IFtwcmVzZW50YXRpb25IZWlnaHQ9ZG9tLndyYXBwZXIub2Zmc2V0SGVpZ2h0XQoJICovCglmdW5jdGlvbiBnZXRDb21wdXRlZFNsaWRlU2l6ZSggcHJlc2VudGF0aW9uV2lkdGgsIHByZXNlbnRhdGlvbkhlaWdodCApIHsKCgkJdmFyIHNpemUgPSB7CgkJCS8vIFNsaWRlIHNpemUKCQkJd2lkdGg6IGNvbmZpZy53aWR0aCwKCQkJaGVpZ2h0OiBjb25maWcuaGVpZ2h0LAoKCQkJLy8gUHJlc2VudGF0aW9uIHNpemUKCQkJcHJlc2VudGF0aW9uV2lkdGg6IHByZXNlbnRhdGlvbldpZHRoIHx8IGRvbS53cmFwcGVyLm9mZnNldFdpZHRoLAoJCQlwcmVzZW50YXRpb25IZWlnaHQ6IHByZXNlbnRhdGlvbkhlaWdodCB8fCBkb20ud3JhcHBlci5vZmZzZXRIZWlnaHQKCQl9OwoKCQkvLyBSZWR1Y2UgYXZhaWxhYmxlIHNwYWNlIGJ5IG1hcmdpbgoJCXNpemUucHJlc2VudGF0aW9uV2lkdGggLT0gKCBzaXplLnByZXNlbnRhdGlvbldpZHRoICogY29uZmlnLm1hcmdpbiApOwoJCXNpemUucHJlc2VudGF0aW9uSGVpZ2h0IC09ICggc2l6ZS5wcmVzZW50YXRpb25IZWlnaHQgKiBjb25maWcubWFyZ2luICk7CgoJCS8vIFNsaWRlIHdpZHRoIG1heSBiZSBhIHBlcmNlbnRhZ2Ugb2YgYXZhaWxhYmxlIHdpZHRoCgkJaWYoIHR5cGVvZiBzaXplLndpZHRoID09PSAnc3RyaW5nJyAmJiAvJSQvLnRlc3QoIHNpemUud2lkdGggKSApIHsKCQkJc2l6ZS53aWR0aCA9IHBhcnNlSW50KCBzaXplLndpZHRoLCAxMCApIC8gMTAwICogc2l6ZS5wcmVzZW50YXRpb25XaWR0aDsKCQl9CgoJCS8vIFNsaWRlIGhlaWdodCBtYXkgYmUgYSBwZXJjZW50YWdlIG9mIGF2YWlsYWJsZSBoZWlnaHQKCQlpZiggdHlwZW9mIHNpemUuaGVpZ2h0ID09PSAnc3RyaW5nJyAmJiAvJSQvLnRlc3QoIHNpemUuaGVpZ2h0ICkgKSB7CgkJCXNpemUuaGVpZ2h0ID0gcGFyc2VJbnQoIHNpemUuaGVpZ2h0LCAxMCApIC8gMTAwICogc2l6ZS5wcmVzZW50YXRpb25IZWlnaHQ7CgkJfQoKCQlyZXR1cm4gc2l6ZTsKCgl9CgoJLyoqCgkgKiBTdG9yZXMgdGhlIHZlcnRpY2FsIGluZGV4IG9mIGEgc3RhY2sgc28gdGhhdCB0aGUgc2FtZQoJICogdmVydGljYWwgc2xpZGUgY2FuIGJlIHNlbGVjdGVkIHdoZW4gbmF2aWdhdGluZyB0byBhbmQKCSAqIGZyb20gdGhlIHN0YWNrLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHN0YWNrIFRoZSB2ZXJ0aWNhbCBzdGFjayBlbGVtZW50CgkgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IFt2PTBdIEluZGV4IHRvIG1lbW9yaXplCgkgKi8KCWZ1bmN0aW9uIHNldFByZXZpb3VzVmVydGljYWxJbmRleCggc3RhY2ssIHYgKSB7CgoJCWlmKCB0eXBlb2Ygc3RhY2sgPT09ICdvYmplY3QnICYmIHR5cGVvZiBzdGFjay5zZXRBdHRyaWJ1dGUgPT09ICdmdW5jdGlvbicgKSB7CgkJCXN0YWNrLnNldEF0dHJpYnV0ZSggJ2RhdGEtcHJldmlvdXMtaW5kZXh2JywgdiB8fCAwICk7CgkJfQoKCX0KCgkvKioKCSAqIFJldHJpZXZlcyB0aGUgdmVydGljYWwgaW5kZXggd2hpY2ggd2FzIHN0b3JlZCB1c2luZwoJICogI3NldFByZXZpb3VzVmVydGljYWxJbmRleCgpIG9yIDAgaWYgbm8gcHJldmlvdXMgaW5kZXgKCSAqIGV4aXN0cy4KCSAqCgkgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBzdGFjayBUaGUgdmVydGljYWwgc3RhY2sgZWxlbWVudAoJICovCglmdW5jdGlvbiBnZXRQcmV2aW91c1ZlcnRpY2FsSW5kZXgoIHN0YWNrICkgewoKCQlpZiggdHlwZW9mIHN0YWNrID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygc3RhY2suc2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nICYmIHN0YWNrLmNsYXNzTGlzdC5jb250YWlucyggJ3N0YWNrJyApICkgewoJCQkvLyBQcmVmZXIgbWFudWFsbHkgZGVmaW5lZCBzdGFydC1pbmRleHYKCQkJdmFyIGF0dHJpYnV0ZU5hbWUgPSBzdGFjay5oYXNBdHRyaWJ1dGUoICdkYXRhLXN0YXJ0LWluZGV4dicgKSA/ICdkYXRhLXN0YXJ0LWluZGV4dicgOiAnZGF0YS1wcmV2aW91cy1pbmRleHYnOwoKCQkJcmV0dXJuIHBhcnNlSW50KCBzdGFjay5nZXRBdHRyaWJ1dGUoIGF0dHJpYnV0ZU5hbWUgKSB8fCAwLCAxMCApOwoJCX0KCgkJcmV0dXJuIDA7CgoJfQoKCS8qKgoJICogRGlzcGxheXMgdGhlIG92ZXJ2aWV3IG9mIHNsaWRlcyAocXVpY2sgbmF2KSBieSBzY2FsaW5nCgkgKiBkb3duIGFuZCBhcnJhbmdpbmcgYWxsIHNsaWRlIGVsZW1lbnRzLgoJICovCglmdW5jdGlvbiBhY3RpdmF0ZU92ZXJ2aWV3KCkgewoKCQkvLyBPbmx5IHByb2NlZWQgaWYgZW5hYmxlZCBpbiBjb25maWcKCQlpZiggY29uZmlnLm92ZXJ2aWV3ICYmICFpc092ZXJ2aWV3KCkgKSB7CgoJCQlvdmVydmlldyA9IHRydWU7CgoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QuYWRkKCAnb3ZlcnZpZXcnICk7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoICdvdmVydmlldy1kZWFjdGl2YXRpbmcnICk7CgoJCQlpZiggZmVhdHVyZXMub3ZlcnZpZXdUcmFuc2l0aW9ucyApIHsKCQkJCXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewoJCQkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICdvdmVydmlldy1hbmltYXRlZCcgKTsKCQkJCX0sIDEgKTsKCQkJfQoKCQkJLy8gRG9uJ3QgYXV0by1zbGlkZSB3aGlsZSBpbiBvdmVydmlldyBtb2RlCgkJCWNhbmNlbEF1dG9TbGlkZSgpOwoKCQkJLy8gTW92ZSB0aGUgYmFja2dyb3VuZHMgZWxlbWVudCBpbnRvIHRoZSBzbGlkZSBjb250YWluZXIgdG8KCQkJLy8gdGhhdCB0aGUgc2FtZSBzY2FsaW5nIGlzIGFwcGxpZWQKCQkJZG9tLnNsaWRlcy5hcHBlbmRDaGlsZCggZG9tLmJhY2tncm91bmQgKTsKCgkJCS8vIENsaWNraW5nIG9uIGFuIG92ZXJ2aWV3IHNsaWRlIG5hdmlnYXRlcyB0byBpdAoJCQl0b0FycmF5KCBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBTTElERVNfU0VMRUNUT1IgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBzbGlkZSApIHsKCQkJCWlmKCAhc2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCAnc3RhY2snICkgKSB7CgkJCQkJc2xpZGUuYWRkRXZlbnRMaXN0ZW5lciggJ2NsaWNrJywgb25PdmVydmlld1NsaWRlQ2xpY2tlZCwgdHJ1ZSApOwoJCQkJfQoJCQl9ICk7CgoJCQkvLyBDYWxjdWxhdGUgc2xpZGUgc2l6ZXMKCQkJdmFyIG1hcmdpbiA9IDcwOwoJCQl2YXIgc2xpZGVTaXplID0gZ2V0Q29tcHV0ZWRTbGlkZVNpemUoKTsKCQkJb3ZlcnZpZXdTbGlkZVdpZHRoID0gc2xpZGVTaXplLndpZHRoICsgbWFyZ2luOwoJCQlvdmVydmlld1NsaWRlSGVpZ2h0ID0gc2xpZGVTaXplLmhlaWdodCArIG1hcmdpbjsKCgkJCS8vIFJldmVyc2UgaW4gUlRMIG1vZGUKCQkJaWYoIGNvbmZpZy5ydGwgKSB7CgkJCQlvdmVydmlld1NsaWRlV2lkdGggPSAtb3ZlcnZpZXdTbGlkZVdpZHRoOwoJCQl9CgoJCQl1cGRhdGVTbGlkZXNWaXNpYmlsaXR5KCk7CgkJCWxheW91dE92ZXJ2aWV3KCk7CgkJCXVwZGF0ZU92ZXJ2aWV3KCk7CgoJCQlsYXlvdXQoKTsKCgkJCS8vIE5vdGlmeSBvYnNlcnZlcnMgb2YgdGhlIG92ZXJ2aWV3IHNob3dpbmcKCQkJZGlzcGF0Y2hFdmVudCggJ292ZXJ2aWV3c2hvd24nLCB7CgkJCQknaW5kZXhoJzogaW5kZXhoLAoJCQkJJ2luZGV4dic6IGluZGV4diwKCQkJCSdjdXJyZW50U2xpZGUnOiBjdXJyZW50U2xpZGUKCQkJfSApOwoKCQl9CgoJfQoKCS8qKgoJICogVXNlcyBDU1MgdHJhbnNmb3JtcyB0byBwb3NpdGlvbiBhbGwgc2xpZGVzIGluIGEgZ3JpZCBmb3IKCSAqIGRpc3BsYXkgaW5zaWRlIG9mIHRoZSBvdmVydmlldyBtb2RlLgoJICovCglmdW5jdGlvbiBsYXlvdXRPdmVydmlldygpIHsKCgkJLy8gTGF5b3V0IHNsaWRlcwoJCXRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggaHNsaWRlLCBoICkgewoJCQloc2xpZGUuc2V0QXR0cmlidXRlKCAnZGF0YS1pbmRleC1oJywgaCApOwoJCQl0cmFuc2Zvcm1FbGVtZW50KCBoc2xpZGUsICd0cmFuc2xhdGUzZCgnICsgKCBoICogb3ZlcnZpZXdTbGlkZVdpZHRoICkgKyAncHgsIDAsIDApJyApOwoKCQkJaWYoIGhzbGlkZS5jbGFzc0xpc3QuY29udGFpbnMoICdzdGFjaycgKSApIHsKCgkJCQl0b0FycmF5KCBoc2xpZGUucXVlcnlTZWxlY3RvckFsbCggJ3NlY3Rpb24nICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggdnNsaWRlLCB2ICkgewoJCQkJCXZzbGlkZS5zZXRBdHRyaWJ1dGUoICdkYXRhLWluZGV4LWgnLCBoICk7CgkJCQkJdnNsaWRlLnNldEF0dHJpYnV0ZSggJ2RhdGEtaW5kZXgtdicsIHYgKTsKCgkJCQkJdHJhbnNmb3JtRWxlbWVudCggdnNsaWRlLCAndHJhbnNsYXRlM2QoMCwgJyArICggdiAqIG92ZXJ2aWV3U2xpZGVIZWlnaHQgKSArICdweCwgMCknICk7CgkJCQl9ICk7CgoJCQl9CgkJfSApOwoKCQkvLyBMYXlvdXQgc2xpZGUgYmFja2dyb3VuZHMKCQl0b0FycmF5KCBkb20uYmFja2dyb3VuZC5jaGlsZE5vZGVzICkuZm9yRWFjaCggZnVuY3Rpb24oIGhiYWNrZ3JvdW5kLCBoICkgewoJCQl0cmFuc2Zvcm1FbGVtZW50KCBoYmFja2dyb3VuZCwgJ3RyYW5zbGF0ZTNkKCcgKyAoIGggKiBvdmVydmlld1NsaWRlV2lkdGggKSArICdweCwgMCwgMCknICk7CgoJCQl0b0FycmF5KCBoYmFja2dyb3VuZC5xdWVyeVNlbGVjdG9yQWxsKCAnLnNsaWRlLWJhY2tncm91bmQnICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggdmJhY2tncm91bmQsIHYgKSB7CgkJCQl0cmFuc2Zvcm1FbGVtZW50KCB2YmFja2dyb3VuZCwgJ3RyYW5zbGF0ZTNkKDAsICcgKyAoIHYgKiBvdmVydmlld1NsaWRlSGVpZ2h0ICkgKyAncHgsIDApJyApOwoJCQl9ICk7CgkJfSApOwoKCX0KCgkvKioKCSAqIE1vdmVzIHRoZSBvdmVydmlldyB2aWV3cG9ydCB0byB0aGUgY3VycmVudCBzbGlkZXMuCgkgKiBDYWxsZWQgZWFjaCB0aW1lIHRoZSBjdXJyZW50IHNsaWRlIGNoYW5nZXMuCgkgKi8KCWZ1bmN0aW9uIHVwZGF0ZU92ZXJ2aWV3KCkgewoKCQl2YXIgdm1pbiA9IE1hdGgubWluKCB3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0ICk7CgkJdmFyIHNjYWxlID0gTWF0aC5tYXgoIHZtaW4gLyA1LCAxNTAgKSAvIHZtaW47CgoJCXRyYW5zZm9ybVNsaWRlcyggewoJCQlvdmVydmlldzogWwoJCQkJJ3NjYWxlKCcrIHNjYWxlICsnKScsCgkJCQkndHJhbnNsYXRlWCgnKyAoIC1pbmRleGggKiBvdmVydmlld1NsaWRlV2lkdGggKSArJ3B4KScsCgkJCQkndHJhbnNsYXRlWSgnKyAoIC1pbmRleHYgKiBvdmVydmlld1NsaWRlSGVpZ2h0ICkgKydweCknCgkJCV0uam9pbiggJyAnICkKCQl9ICk7CgoJfQoKCS8qKgoJICogRXhpdHMgdGhlIHNsaWRlIG92ZXJ2aWV3IGFuZCBlbnRlcnMgdGhlIGN1cnJlbnRseQoJICogYWN0aXZlIHNsaWRlLgoJICovCglmdW5jdGlvbiBkZWFjdGl2YXRlT3ZlcnZpZXcoKSB7CgoJCS8vIE9ubHkgcHJvY2VlZCBpZiBlbmFibGVkIGluIGNvbmZpZwoJCWlmKCBjb25maWcub3ZlcnZpZXcgKSB7CgoJCQlvdmVydmlldyA9IGZhbHNlOwoKCQkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSggJ292ZXJ2aWV3JyApOwoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCAnb3ZlcnZpZXctYW5pbWF0ZWQnICk7CgoJCQkvLyBUZW1wb3JhcmlseSBhZGQgYSBjbGFzcyBzbyB0aGF0IHRyYW5zaXRpb25zIGNhbiBkbyBkaWZmZXJlbnQgdGhpbmdzCgkJCS8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXkgYXJlIGV4aXRpbmcvZW50ZXJpbmcgb3ZlcnZpZXcsIG9yIGp1c3QKCQkJLy8gbW92aW5nIGZyb20gc2xpZGUgdG8gc2xpZGUKCQkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LmFkZCggJ292ZXJ2aWV3LWRlYWN0aXZhdGluZycgKTsKCgkJCXNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHsKCQkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoICdvdmVydmlldy1kZWFjdGl2YXRpbmcnICk7CgkJCX0sIDEgKTsKCgkJCS8vIE1vdmUgdGhlIGJhY2tncm91bmQgZWxlbWVudCBiYWNrIG91dAoJCQlkb20ud3JhcHBlci5hcHBlbmRDaGlsZCggZG9tLmJhY2tncm91bmQgKTsKCgkJCS8vIENsZWFuIHVwIGNoYW5nZXMgbWFkZSB0byBzbGlkZXMKCQkJdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggU0xJREVTX1NFTEVDVE9SICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggc2xpZGUgKSB7CgkJCQl0cmFuc2Zvcm1FbGVtZW50KCBzbGlkZSwgJycgKTsKCgkJCQlzbGlkZS5yZW1vdmVFdmVudExpc3RlbmVyKCAnY2xpY2snLCBvbk92ZXJ2aWV3U2xpZGVDbGlja2VkLCB0cnVlICk7CgkJCX0gKTsKCgkJCS8vIENsZWFuIHVwIGNoYW5nZXMgbWFkZSB0byBiYWNrZ3JvdW5kcwoJCQl0b0FycmF5KCBkb20uYmFja2dyb3VuZC5xdWVyeVNlbGVjdG9yQWxsKCAnLnNsaWRlLWJhY2tncm91bmQnICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggYmFja2dyb3VuZCApIHsKCQkJCXRyYW5zZm9ybUVsZW1lbnQoIGJhY2tncm91bmQsICcnICk7CgkJCX0gKTsKCgkJCXRyYW5zZm9ybVNsaWRlcyggeyBvdmVydmlldzogJycgfSApOwoKCQkJc2xpZGUoIGluZGV4aCwgaW5kZXh2ICk7CgoJCQlsYXlvdXQoKTsKCgkJCWN1ZUF1dG9TbGlkZSgpOwoKCQkJLy8gTm90aWZ5IG9ic2VydmVycyBvZiB0aGUgb3ZlcnZpZXcgaGlkaW5nCgkJCWRpc3BhdGNoRXZlbnQoICdvdmVydmlld2hpZGRlbicsIHsKCQkJCSdpbmRleGgnOiBpbmRleGgsCgkJCQknaW5kZXh2JzogaW5kZXh2LAoJCQkJJ2N1cnJlbnRTbGlkZSc6IGN1cnJlbnRTbGlkZQoJCQl9ICk7CgoJCX0KCX0KCgkvKioKCSAqIFRvZ2dsZXMgdGhlIHNsaWRlIG92ZXJ2aWV3IG1vZGUgb24gYW5kIG9mZi4KCSAqCgkgKiBAcGFyYW0ge0Jvb2xlYW59IFtvdmVycmlkZV0gRmxhZyB3aGljaCBvdmVycmlkZXMgdGhlCgkgKiB0b2dnbGUgbG9naWMgYW5kIGZvcmNpYmx5IHNldHMgdGhlIGRlc2lyZWQgc3RhdGUuIFRydWUgbWVhbnMKCSAqIG92ZXJ2aWV3IGlzIG9wZW4sIGZhbHNlIG1lYW5zIGl0J3MgY2xvc2VkLgoJICovCglmdW5jdGlvbiB0b2dnbGVPdmVydmlldyggb3ZlcnJpZGUgKSB7CgoJCWlmKCB0eXBlb2Ygb3ZlcnJpZGUgPT09ICdib29sZWFuJyApIHsKCQkJb3ZlcnJpZGUgPyBhY3RpdmF0ZU92ZXJ2aWV3KCkgOiBkZWFjdGl2YXRlT3ZlcnZpZXcoKTsKCQl9CgkJZWxzZSB7CgkJCWlzT3ZlcnZpZXcoKSA/IGRlYWN0aXZhdGVPdmVydmlldygpIDogYWN0aXZhdGVPdmVydmlldygpOwoJCX0KCgl9CgoJLyoqCgkgKiBDaGVja3MgaWYgdGhlIG92ZXJ2aWV3IGlzIGN1cnJlbnRseSBhY3RpdmUuCgkgKgoJICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgb3ZlcnZpZXcgaXMgYWN0aXZlLAoJICogZmFsc2Ugb3RoZXJ3aXNlCgkgKi8KCWZ1bmN0aW9uIGlzT3ZlcnZpZXcoKSB7CgoJCXJldHVybiBvdmVydmlldzsKCgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBoYXNoIFVSTCB0aGF0IHdpbGwgcmVzb2x2ZSB0byB0aGUgY3VycmVudCBzbGlkZSBsb2NhdGlvbi4KCSAqLwoJZnVuY3Rpb24gbG9jYXRpb25IYXNoKCkgewoKCQl2YXIgdXJsID0gJy8nOwoKCQkvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIG5hbWVkIGxpbmsgYmFzZWQgb24gdGhlIHNsaWRlJ3MgSUQKCQl2YXIgaWQgPSBjdXJyZW50U2xpZGUgPyBjdXJyZW50U2xpZGUuZ2V0QXR0cmlidXRlKCAnaWQnICkgOiBudWxsOwoJCWlmKCBpZCApIHsKCQkJaWQgPSBlbmNvZGVVUklDb21wb25lbnQoIGlkICk7CgkJfQoKCQl2YXIgaW5kZXhmOwoJCWlmKCBjb25maWcuZnJhZ21lbnRJblVSTCApIHsKCQkJaW5kZXhmID0gZ2V0SW5kaWNlcygpLmY7CgkJfQoKCQkvLyBJZiB0aGUgY3VycmVudCBzbGlkZSBoYXMgYW4gSUQsIHVzZSB0aGF0IGFzIGEgbmFtZWQgbGluaywKCQkvLyBidXQgd2UgZG9uJ3Qgc3VwcG9ydCBuYW1lZCBsaW5rcyB3aXRoIGEgZnJhZ21lbnQgaW5kZXgKCQlpZiggdHlwZW9mIGlkID09PSAnc3RyaW5nJyAmJiBpZC5sZW5ndGggJiYgaW5kZXhmID09PSB1bmRlZmluZWQgKSB7CgkJCXVybCA9ICcvJyArIGlkOwoJCX0KCQkvLyBPdGhlcndpc2UgdXNlIHRoZSAvaC92IGluZGV4CgkJZWxzZSB7CgkJCXZhciBoYXNoSW5kZXhCYXNlID0gY29uZmlnLmhhc2hPbmVCYXNlZEluZGV4ID8gMSA6IDA7CgkJCWlmKCBpbmRleGggPiAwIHx8IGluZGV4diA+IDAgfHwgaW5kZXhmICE9PSB1bmRlZmluZWQgKSB1cmwgKz0gaW5kZXhoICsgaGFzaEluZGV4QmFzZTsKCQkJaWYoIGluZGV4diA+IDAgfHwgaW5kZXhmICE9PSB1bmRlZmluZWQgKSB1cmwgKz0gJy8nICsgKGluZGV4diArIGhhc2hJbmRleEJhc2UgKTsKCQkJaWYoIGluZGV4ZiAhPT0gdW5kZWZpbmVkICkgdXJsICs9ICcvJyArIGluZGV4ZjsKCQl9CgoJCXJldHVybiB1cmw7CgoJfQoKCS8qKgoJICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9yIHNwZWNpZmllZCBzbGlkZSBpcyB2ZXJ0aWNhbAoJICogKG5lc3RlZCB3aXRoaW4gYW5vdGhlciBzbGlkZSkuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3NsaWRlPWN1cnJlbnRTbGlkZV0gVGhlIHNsaWRlIHRvIGNoZWNrCgkgKiBvcmllbnRhdGlvbiBvZgoJICogQHJldHVybiB7Qm9vbGVhbn0KCSAqLwoJZnVuY3Rpb24gaXNWZXJ0aWNhbFNsaWRlKCBzbGlkZSApIHsKCgkJLy8gUHJlZmVyIHNsaWRlIGFyZ3VtZW50LCBvdGhlcndpc2UgdXNlIGN1cnJlbnQgc2xpZGUKCQlzbGlkZSA9IHNsaWRlID8gc2xpZGUgOiBjdXJyZW50U2xpZGU7CgoJCXJldHVybiBzbGlkZSAmJiBzbGlkZS5wYXJlbnROb2RlICYmICEhc2xpZGUucGFyZW50Tm9kZS5ub2RlTmFtZS5tYXRjaCggL3NlY3Rpb24vaSApOwoKCX0KCgkvKioKCSAqIEhhbmRsaW5nIHRoZSBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHkgdmlhIHRoZSBmdWxsc2NyZWVuIEFQSQoJICoKCSAqIEBzZWUgaHR0cDovL2Z1bGxzY3JlZW4uc3BlYy53aGF0d2cub3JnLwoJICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0RPTS9Vc2luZ19mdWxsc2NyZWVuX21vZGUKCSAqLwoJZnVuY3Rpb24gZW50ZXJGdWxsc2NyZWVuKCkgewoKCQl2YXIgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKCgkJLy8gQ2hlY2sgd2hpY2ggaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlCgkJdmFyIHJlcXVlc3RNZXRob2QgPSBlbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuIHx8CgkJCQkJCQllbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuIHx8CgkJCQkJCQllbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIHx8CgkJCQkJCQllbGVtZW50Lm1velJlcXVlc3RGdWxsU2NyZWVuIHx8CgkJCQkJCQllbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW47CgoJCWlmKCByZXF1ZXN0TWV0aG9kICkgewoJCQlyZXF1ZXN0TWV0aG9kLmFwcGx5KCBlbGVtZW50ICk7CgkJfQoKCX0KCgkvKioKCSAqIFNob3dzIHRoZSBtb3VzZSBwb2ludGVyIGFmdGVyIGl0IGhhcyBiZWVuIGhpZGRlbiB3aXRoCgkgKiAjaGlkZUN1cnNvci4KCSAqLwoJZnVuY3Rpb24gc2hvd0N1cnNvcigpIHsKCgkJaWYoIGN1cnNvckhpZGRlbiApIHsKCQkJY3Vyc29ySGlkZGVuID0gZmFsc2U7CgkJCWRvbS53cmFwcGVyLnN0eWxlLmN1cnNvciA9ICcnOwoJCX0KCgl9CgoJLyoqCgkgKiBIaWRlcyB0aGUgbW91c2UgcG9pbnRlciB3aGVuIGl0J3Mgb24gdG9wIG9mIHRoZSAucmV2ZWFsCgkgKiBjb250YWluZXIuCgkgKi8KCWZ1bmN0aW9uIGhpZGVDdXJzb3IoKSB7CgoJCWlmKCBjdXJzb3JIaWRkZW4gPT09IGZhbHNlICkgewoJCQljdXJzb3JIaWRkZW4gPSB0cnVlOwoJCQlkb20ud3JhcHBlci5zdHlsZS5jdXJzb3IgPSAnbm9uZSc7CgkJfQoKCX0KCgkvKioKCSAqIEVudGVycyB0aGUgcGF1c2VkIG1vZGUgd2hpY2ggZmFkZXMgZXZlcnl0aGluZyBvbiBzY3JlZW4gdG8KCSAqIGJsYWNrLgoJICovCglmdW5jdGlvbiBwYXVzZSgpIHsKCgkJaWYoIGNvbmZpZy5wYXVzZSApIHsKCQkJdmFyIHdhc1BhdXNlZCA9IGRvbS53cmFwcGVyLmNsYXNzTGlzdC5jb250YWlucyggJ3BhdXNlZCcgKTsKCgkJCWNhbmNlbEF1dG9TbGlkZSgpOwoJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QuYWRkKCAncGF1c2VkJyApOwoKCQkJaWYoIHdhc1BhdXNlZCA9PT0gZmFsc2UgKSB7CgkJCQlkaXNwYXRjaEV2ZW50KCAncGF1c2VkJyApOwoJCQl9CgkJfQoKCX0KCgkvKioKCSAqIEV4aXRzIGZyb20gdGhlIHBhdXNlZCBtb2RlLgoJICovCglmdW5jdGlvbiByZXN1bWUoKSB7CgoJCXZhciB3YXNQYXVzZWQgPSBkb20ud3JhcHBlci5jbGFzc0xpc3QuY29udGFpbnMoICdwYXVzZWQnICk7CgkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSggJ3BhdXNlZCcgKTsKCgkJY3VlQXV0b1NsaWRlKCk7CgoJCWlmKCB3YXNQYXVzZWQgKSB7CgkJCWRpc3BhdGNoRXZlbnQoICdyZXN1bWVkJyApOwoJCX0KCgl9CgoJLyoqCgkgKiBUb2dnbGVzIHRoZSBwYXVzZWQgbW9kZSBvbiBhbmQgb2ZmLgoJICovCglmdW5jdGlvbiB0b2dnbGVQYXVzZSggb3ZlcnJpZGUgKSB7CgoJCWlmKCB0eXBlb2Ygb3ZlcnJpZGUgPT09ICdib29sZWFuJyApIHsKCQkJb3ZlcnJpZGUgPyBwYXVzZSgpIDogcmVzdW1lKCk7CgkJfQoJCWVsc2UgewoJCQlpc1BhdXNlZCgpID8gcmVzdW1lKCkgOiBwYXVzZSgpOwoJCX0KCgl9CgoJLyoqCgkgKiBDaGVja3MgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcGF1c2VkIG1vZGUuCgkgKgoJICogQHJldHVybiB7Qm9vbGVhbn0KCSAqLwoJZnVuY3Rpb24gaXNQYXVzZWQoKSB7CgoJCXJldHVybiBkb20ud3JhcHBlci5jbGFzc0xpc3QuY29udGFpbnMoICdwYXVzZWQnICk7CgoJfQoKCS8qKgoJICogVG9nZ2xlcyB0aGUgYXV0byBzbGlkZSBtb2RlIG9uIGFuZCBvZmYuCgkgKgoJICogQHBhcmFtIHtCb29sZWFufSBbb3ZlcnJpZGVdIEZsYWcgd2hpY2ggc2V0cyB0aGUgZGVzaXJlZCBzdGF0ZS4KCSAqIFRydWUgbWVhbnMgYXV0b3BsYXkgc3RhcnRzLCBmYWxzZSBtZWFucyBpdCBzdG9wcy4KCSAqLwoKCWZ1bmN0aW9uIHRvZ2dsZUF1dG9TbGlkZSggb3ZlcnJpZGUgKSB7CgoJCWlmKCB0eXBlb2Ygb3ZlcnJpZGUgPT09ICdib29sZWFuJyApIHsKCQkJb3ZlcnJpZGUgPyByZXN1bWVBdXRvU2xpZGUoKSA6IHBhdXNlQXV0b1NsaWRlKCk7CgkJfQoKCQllbHNlIHsKCQkJYXV0b1NsaWRlUGF1c2VkID8gcmVzdW1lQXV0b1NsaWRlKCkgOiBwYXVzZUF1dG9TbGlkZSgpOwoJCX0KCgl9CgoJLyoqCgkgKiBDaGVja3MgaWYgdGhlIGF1dG8gc2xpZGUgbW9kZSBpcyBjdXJyZW50bHkgb24uCgkgKgoJICogQHJldHVybiB7Qm9vbGVhbn0KCSAqLwoJZnVuY3Rpb24gaXNBdXRvU2xpZGluZygpIHsKCgkJcmV0dXJuICEhKCBhdXRvU2xpZGUgJiYgIWF1dG9TbGlkZVBhdXNlZCApOwoKCX0KCgkvKioKCSAqIFN0ZXBzIGZyb20gdGhlIGN1cnJlbnQgcG9pbnQgaW4gdGhlIHByZXNlbnRhdGlvbiB0byB0aGUKCSAqIHNsaWRlIHdoaWNoIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbAoJICogaW5kaWNlcy4KCSAqCgkgKiBAcGFyYW0ge251bWJlcn0gW2g9aW5kZXhoXSBIb3Jpem9udGFsIGluZGV4IG9mIHRoZSB0YXJnZXQgc2xpZGUKCSAqIEBwYXJhbSB7bnVtYmVyfSBbdj1pbmRleHZdIFZlcnRpY2FsIGluZGV4IG9mIHRoZSB0YXJnZXQgc2xpZGUKCSAqIEBwYXJhbSB7bnVtYmVyfSBbZl0gSW5kZXggb2YgYSBmcmFnbWVudCB3aXRoaW4gdGhlCgkgKiB0YXJnZXQgc2xpZGUgdG8gYWN0aXZhdGUKCSAqIEBwYXJhbSB7bnVtYmVyfSBbb10gT3JpZ2luIGZvciB1c2UgaW4gbXVsdGltYXN0ZXIgZW52aXJvbm1lbnRzCgkgKi8KCWZ1bmN0aW9uIHNsaWRlKCBoLCB2LCBmLCBvICkgewoKCQkvLyBSZW1lbWJlciB3aGVyZSB3ZSB3ZXJlIGF0IGJlZm9yZQoJCXByZXZpb3VzU2xpZGUgPSBjdXJyZW50U2xpZGU7CgoJCS8vIFF1ZXJ5IGFsbCBob3Jpem9udGFsIHNsaWRlcyBpbiB0aGUgZGVjawoJCXZhciBob3Jpem9udGFsU2xpZGVzID0gZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKTsKCgkJLy8gQWJvcnQgaWYgdGhlcmUgYXJlIG5vIHNsaWRlcwoJCWlmKCBob3Jpem9udGFsU2xpZGVzLmxlbmd0aCA9PT0gMCApIHJldHVybjsKCgkJLy8gSWYgbm8gdmVydGljYWwgaW5kZXggaXMgc3BlY2lmaWVkIGFuZCB0aGUgdXBjb21pbmcgc2xpZGUgaXMgYQoJCS8vIHN0YWNrLCByZXN1bWUgYXQgaXRzIHByZXZpb3VzIHZlcnRpY2FsIGluZGV4CgkJaWYoIHYgPT09IHVuZGVmaW5lZCAmJiAhaXNPdmVydmlldygpICkgewoJCQl2ID0gZ2V0UHJldmlvdXNWZXJ0aWNhbEluZGV4KCBob3Jpem9udGFsU2xpZGVzWyBoIF0gKTsKCQl9CgoJCS8vIElmIHdlIHdlcmUgb24gYSB2ZXJ0aWNhbCBzdGFjaywgcmVtZW1iZXIgd2hhdCB2ZXJ0aWNhbCBpbmRleAoJCS8vIGl0IHdhcyBvbiBzbyB3ZSBjYW4gcmVzdW1lIGF0IHRoZSBzYW1lIHBvc2l0aW9uIHdoZW4gcmV0dXJuaW5nCgkJaWYoIHByZXZpb3VzU2xpZGUgJiYgcHJldmlvdXNTbGlkZS5wYXJlbnROb2RlICYmIHByZXZpb3VzU2xpZGUucGFyZW50Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMoICdzdGFjaycgKSApIHsKCQkJc2V0UHJldmlvdXNWZXJ0aWNhbEluZGV4KCBwcmV2aW91c1NsaWRlLnBhcmVudE5vZGUsIGluZGV4diApOwoJCX0KCgkJLy8gUmVtZW1iZXIgdGhlIHN0YXRlIGJlZm9yZSB0aGlzIHNsaWRlCgkJdmFyIHN0YXRlQmVmb3JlID0gc3RhdGUuY29uY2F0KCk7CgoJCS8vIFJlc2V0IHRoZSBzdGF0ZSBhcnJheQoJCXN0YXRlLmxlbmd0aCA9IDA7CgoJCXZhciBpbmRleGhCZWZvcmUgPSBpbmRleGggfHwgMCwKCQkJaW5kZXh2QmVmb3JlID0gaW5kZXh2IHx8IDA7CgoJCS8vIEFjdGl2YXRlIGFuZCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgc2xpZGUKCQlpbmRleGggPSB1cGRhdGVTbGlkZXMoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SLCBoID09PSB1bmRlZmluZWQgPyBpbmRleGggOiBoICk7CgkJaW5kZXh2ID0gdXBkYXRlU2xpZGVzKCBWRVJUSUNBTF9TTElERVNfU0VMRUNUT1IsIHYgPT09IHVuZGVmaW5lZCA/IGluZGV4diA6IHYgKTsKCgkJLy8gVXBkYXRlIHRoZSB2aXNpYmlsaXR5IG9mIHNsaWRlcyBub3cgdGhhdCB0aGUgaW5kaWNlcyBoYXZlIGNoYW5nZWQKCQl1cGRhdGVTbGlkZXNWaXNpYmlsaXR5KCk7CgoJCWxheW91dCgpOwoKCQkvLyBVcGRhdGUgdGhlIG92ZXJ2aWV3IGlmIGl0J3MgY3VycmVudGx5IGFjdGl2ZQoJCWlmKCBpc092ZXJ2aWV3KCkgKSB7CgkJCXVwZGF0ZU92ZXJ2aWV3KCk7CgkJfQoKCQkvLyBGaW5kIHRoZSBjdXJyZW50IGhvcml6b250YWwgc2xpZGUgYW5kIGFueSBwb3NzaWJsZSB2ZXJ0aWNhbCBzbGlkZXMKCQkvLyB3aXRoaW4gaXQKCQl2YXIgY3VycmVudEhvcml6b250YWxTbGlkZSA9IGhvcml6b250YWxTbGlkZXNbIGluZGV4aCBdLAoJCQljdXJyZW50VmVydGljYWxTbGlkZXMgPSBjdXJyZW50SG9yaXpvbnRhbFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICdzZWN0aW9uJyApOwoKCQkvLyBTdG9yZSByZWZlcmVuY2VzIHRvIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBzbGlkZXMKCQljdXJyZW50U2xpZGUgPSBjdXJyZW50VmVydGljYWxTbGlkZXNbIGluZGV4diBdIHx8IGN1cnJlbnRIb3Jpem9udGFsU2xpZGU7CgoJCS8vIFNob3cgZnJhZ21lbnQsIGlmIHNwZWNpZmllZAoJCWlmKCB0eXBlb2YgZiAhPT0gJ3VuZGVmaW5lZCcgKSB7CgkJCW5hdmlnYXRlRnJhZ21lbnQoIGYgKTsKCQl9CgoJCS8vIERpc3BhdGNoIGFuIGV2ZW50IGlmIHRoZSBzbGlkZSBjaGFuZ2VkCgkJdmFyIHNsaWRlQ2hhbmdlZCA9ICggaW5kZXhoICE9PSBpbmRleGhCZWZvcmUgfHwgaW5kZXh2ICE9PSBpbmRleHZCZWZvcmUgKTsKCQlpZiAoIXNsaWRlQ2hhbmdlZCkgewoJCQkvLyBFbnN1cmUgdGhhdCB0aGUgcHJldmlvdXMgc2xpZGUgaXMgbmV2ZXIgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQKCQkJcHJldmlvdXNTbGlkZSA9IG51bGw7CgkJfQoKCQkvLyBTb2x2ZXMgYW4gZWRnZSBjYXNlIHdoZXJlIHRoZSBwcmV2aW91cyBzbGlkZSBtYWludGFpbnMgdGhlCgkJLy8gJ3ByZXNlbnQnIGNsYXNzIHdoZW4gbmF2aWdhdGluZyBiZXR3ZWVuIGFkamFjZW50IHZlcnRpY2FsCgkJLy8gc3RhY2tzCgkJaWYoIHByZXZpb3VzU2xpZGUgJiYgcHJldmlvdXNTbGlkZSAhPT0gY3VycmVudFNsaWRlICkgewoJCQlwcmV2aW91c1NsaWRlLmNsYXNzTGlzdC5yZW1vdmUoICdwcmVzZW50JyApOwoJCQlwcmV2aW91c1NsaWRlLnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgJ3RydWUnICk7CgoJCQkvLyBSZXNldCBhbGwgc2xpZGVzIHVwb24gbmF2aWdhdGUgdG8gaG9tZQoJCQkvLyBJc3N1ZTogIzI4NQoJCQlpZiAoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoIEhPTUVfU0xJREVfU0VMRUNUT1IgKS5jbGFzc0xpc3QuY29udGFpbnMoICdwcmVzZW50JyApICkgewoJCQkJLy8gTGF1bmNoIGFzeW5jIHRhc2sKCQkJCXNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHsKCQkJCQl2YXIgc2xpZGVzID0gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKyAnLnN0YWNrJykgKSwgaTsKCQkJCQlmb3IoIGkgaW4gc2xpZGVzICkgewoJCQkJCQlpZiggc2xpZGVzW2ldICkgewoJCQkJCQkJLy8gUmVzZXQgc3RhY2sKCQkJCQkJCXNldFByZXZpb3VzVmVydGljYWxJbmRleCggc2xpZGVzW2ldLCAwICk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9LCAwICk7CgkJCX0KCQl9CgoJCS8vIEFwcGx5IHRoZSBuZXcgc3RhdGUKCQlzdGF0ZUxvb3A6IGZvciggdmFyIGkgPSAwLCBsZW4gPSBzdGF0ZS5sZW5ndGg7IGkgPCBsZW47IGkrKyApIHsKCQkJLy8gQ2hlY2sgaWYgdGhpcyBzdGF0ZSBleGlzdGVkIG9uIHRoZSBwcmV2aW91cyBzbGlkZS4gSWYgaXQKCQkJLy8gZGlkLCB3ZSB3aWxsIGF2b2lkIGFkZGluZyBpdCByZXBlYXRlZGx5CgkJCWZvciggdmFyIGogPSAwOyBqIDwgc3RhdGVCZWZvcmUubGVuZ3RoOyBqKysgKSB7CgkJCQlpZiggc3RhdGVCZWZvcmVbal0gPT09IHN0YXRlW2ldICkgewoJCQkJCXN0YXRlQmVmb3JlLnNwbGljZSggaiwgMSApOwoJCQkJCWNvbnRpbnVlIHN0YXRlTG9vcDsKCQkJCX0KCQkJfQoKCQkJZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIHN0YXRlW2ldICk7CgoJCQkvLyBEaXNwYXRjaCBjdXN0b20gZXZlbnQgbWF0Y2hpbmcgdGhlIHN0YXRlJ3MgbmFtZQoJCQlkaXNwYXRjaEV2ZW50KCBzdGF0ZVtpXSApOwoJCX0KCgkJLy8gQ2xlYW4gdXAgdGhlIHJlbWFpbnMgb2YgdGhlIHByZXZpb3VzIHN0YXRlCgkJd2hpbGUoIHN0YXRlQmVmb3JlLmxlbmd0aCApIHsKCQkJZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIHN0YXRlQmVmb3JlLnBvcCgpICk7CgkJfQoKCQlpZiggc2xpZGVDaGFuZ2VkICkgewoJCQlkaXNwYXRjaEV2ZW50KCAnc2xpZGVjaGFuZ2VkJywgewoJCQkJJ2luZGV4aCc6IGluZGV4aCwKCQkJCSdpbmRleHYnOiBpbmRleHYsCgkJCQkncHJldmlvdXNTbGlkZSc6IHByZXZpb3VzU2xpZGUsCgkJCQknY3VycmVudFNsaWRlJzogY3VycmVudFNsaWRlLAoJCQkJJ29yaWdpbic6IG8KCQkJfSApOwoJCX0KCgkJLy8gSGFuZGxlIGVtYmVkZGVkIGNvbnRlbnQKCQlpZiggc2xpZGVDaGFuZ2VkIHx8ICFwcmV2aW91c1NsaWRlICkgewoJCQlzdG9wRW1iZWRkZWRDb250ZW50KCBwcmV2aW91c1NsaWRlICk7CgkJCXN0YXJ0RW1iZWRkZWRDb250ZW50KCBjdXJyZW50U2xpZGUgKTsKCQl9CgoJCS8vIEFubm91bmNlIHRoZSBjdXJyZW50IHNsaWRlIGNvbnRlbnRzLCBmb3Igc2NyZWVuIHJlYWRlcnMKCQlkb20uc3RhdHVzRGl2LnRleHRDb250ZW50ID0gZ2V0U3RhdHVzVGV4dCggY3VycmVudFNsaWRlICk7CgoJCXVwZGF0ZUNvbnRyb2xzKCk7CgkJdXBkYXRlUHJvZ3Jlc3MoKTsKCQl1cGRhdGVCYWNrZ3JvdW5kKCk7CgkJdXBkYXRlUGFyYWxsYXgoKTsKCQl1cGRhdGVTbGlkZU51bWJlcigpOwoJCXVwZGF0ZU5vdGVzKCk7CgkJdXBkYXRlRnJhZ21lbnRzKCk7CgoJCS8vIFVwZGF0ZSB0aGUgVVJMIGhhc2gKCQl3cml0ZVVSTCgpOwoKCQljdWVBdXRvU2xpZGUoKTsKCgl9CgoJLyoqCgkgKiBTeW5jcyB0aGUgcHJlc2VudGF0aW9uIHdpdGggdGhlIGN1cnJlbnQgRE9NLiBVc2VmdWwKCSAqIHdoZW4gbmV3IHNsaWRlcyBvciBjb250cm9sIGVsZW1lbnRzIGFyZSBhZGRlZCBvciB3aGVuCgkgKiB0aGUgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZC4KCSAqLwoJZnVuY3Rpb24gc3luYygpIHsKCgkJLy8gU3Vic2NyaWJlIHRvIGlucHV0CgkJcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTsKCQlhZGRFdmVudExpc3RlbmVycygpOwoKCQkvLyBGb3JjZSBhIGxheW91dCB0byBtYWtlIHN1cmUgdGhlIGN1cnJlbnQgY29uZmlnIGlzIGFjY291bnRlZCBmb3IKCQlsYXlvdXQoKTsKCgkJLy8gUmVmbGVjdCB0aGUgY3VycmVudCBhdXRvU2xpZGUgdmFsdWUKCQlhdXRvU2xpZGUgPSBjb25maWcuYXV0b1NsaWRlOwoKCQkvLyBTdGFydCBhdXRvLXNsaWRpbmcgaWYgaXQncyBlbmFibGVkCgkJY3VlQXV0b1NsaWRlKCk7CgoJCS8vIFJlLWNyZWF0ZSB0aGUgc2xpZGUgYmFja2dyb3VuZHMKCQljcmVhdGVCYWNrZ3JvdW5kcygpOwoKCQkvLyBXcml0ZSB0aGUgY3VycmVudCBoYXNoIHRvIHRoZSBVUkwKCQl3cml0ZVVSTCgpOwoKCQlzb3J0QWxsRnJhZ21lbnRzKCk7CgoJCXVwZGF0ZUNvbnRyb2xzKCk7CgkJdXBkYXRlUHJvZ3Jlc3MoKTsKCQl1cGRhdGVTbGlkZU51bWJlcigpOwoJCXVwZGF0ZVNsaWRlc1Zpc2liaWxpdHkoKTsKCQl1cGRhdGVCYWNrZ3JvdW5kKCB0cnVlICk7CgkJdXBkYXRlTm90ZXNWaXNpYmlsaXR5KCk7CgkJdXBkYXRlTm90ZXMoKTsKCgkJZm9ybWF0RW1iZWRkZWRDb250ZW50KCk7CgoJCS8vIFN0YXJ0IG9yIHN0b3AgZW1iZWRkZWQgY29udGVudCBkZXBlbmRpbmcgb24gZ2xvYmFsIGNvbmZpZwoJCWlmKCBjb25maWcuYXV0b1BsYXlNZWRpYSA9PT0gZmFsc2UgKSB7CgkJCXN0b3BFbWJlZGRlZENvbnRlbnQoIGN1cnJlbnRTbGlkZSwgeyB1bmxvYWRJZnJhbWVzOiBmYWxzZSB9ICk7CgkJfQoJCWVsc2UgewoJCQlzdGFydEVtYmVkZGVkQ29udGVudCggY3VycmVudFNsaWRlICk7CgkJfQoKCQlpZiggaXNPdmVydmlldygpICkgewoJCQlsYXlvdXRPdmVydmlldygpOwoJCX0KCgl9CgoJLyoqCgkgKiBVcGRhdGVzIHJldmVhbC5qcyB0byBrZWVwIGluIHN5bmMgd2l0aCBuZXcgc2xpZGUgYXR0cmlidXRlcy4gRm9yCgkgKiBleGFtcGxlLCBpZiB5b3UgYWRkIGEgbmV3IGBkYXRhLWJhY2tncm91bmQtaW1hZ2VgIHlvdSBjYW4gY2FsbAoJICogdGhpcyB0byBoYXZlIHJldmVhbC5qcyByZW5kZXIgdGhlIG5ldyBiYWNrZ3JvdW5kIGltYWdlLgoJICoKCSAqIFNpbWlsYXIgdG8gI3N5bmMoKSBidXQgbW9yZSBlZmZpY2llbnQgd2hlbiB5b3Ugb25seSBuZWVkIHRvCgkgKiByZWZyZXNoIGEgc3BlY2lmaWMgc2xpZGUuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gc2xpZGUKCSAqLwoJZnVuY3Rpb24gc3luY1NsaWRlKCBzbGlkZSApIHsKCgkJLy8gRGVmYXVsdCB0byB0aGUgY3VycmVudCBzbGlkZQoJCXNsaWRlID0gc2xpZGUgfHwgY3VycmVudFNsaWRlOwoKCQlzeW5jQmFja2dyb3VuZCggc2xpZGUgKTsKCQlzeW5jRnJhZ21lbnRzKCBzbGlkZSApOwoKCQlsb2FkU2xpZGUoIHNsaWRlICk7CgoJCXVwZGF0ZUJhY2tncm91bmQoKTsKCQl1cGRhdGVOb3RlcygpOwoKCX0KCgkvKioKCSAqIEZvcm1hdHMgdGhlIGZyYWdtZW50cyBvbiB0aGUgZ2l2ZW4gc2xpZGUgc28gdGhhdCB0aGV5IGhhdmUKCSAqIHZhbGlkIGluZGljZXMuIENhbGwgdGhpcyBpZiBmcmFnbWVudHMgYXJlIGNoYW5nZWQgaW4gdGhlIERPTQoJICogYWZ0ZXIgcmV2ZWFsLmpzIGhhcyBhbHJlYWR5IGluaXRpYWxpemVkLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHNsaWRlCgkgKiBAcmV0dXJuIHtBcnJheX0gYSBsaXN0IG9mIHRoZSBIVE1MIGZyYWdtZW50cyB0aGF0IHdlcmUgc3luY2VkCgkgKi8KCWZ1bmN0aW9uIHN5bmNGcmFnbWVudHMoIHNsaWRlICkgewoKCQkvLyBEZWZhdWx0IHRvIHRoZSBjdXJyZW50IHNsaWRlCgkJc2xpZGUgPSBzbGlkZSB8fCBjdXJyZW50U2xpZGU7CgoJCXJldHVybiBzb3J0RnJhZ21lbnRzKCBzbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnLmZyYWdtZW50JyApICk7CgoJfQoKCS8qKgoJICogUmVzZXRzIGFsbCB2ZXJ0aWNhbCBzbGlkZXMgc28gdGhhdCBvbmx5IHRoZSBmaXJzdAoJICogaXMgdmlzaWJsZS4KCSAqLwoJZnVuY3Rpb24gcmVzZXRWZXJ0aWNhbFNsaWRlcygpIHsKCgkJdmFyIGhvcml6b250YWxTbGlkZXMgPSB0b0FycmF5KCBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBIT1JJWk9OVEFMX1NMSURFU19TRUxFQ1RPUiApICk7CgkJaG9yaXpvbnRhbFNsaWRlcy5mb3JFYWNoKCBmdW5jdGlvbiggaG9yaXpvbnRhbFNsaWRlICkgewoKCQkJdmFyIHZlcnRpY2FsU2xpZGVzID0gdG9BcnJheSggaG9yaXpvbnRhbFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICdzZWN0aW9uJyApICk7CgkJCXZlcnRpY2FsU2xpZGVzLmZvckVhY2goIGZ1bmN0aW9uKCB2ZXJ0aWNhbFNsaWRlLCB5ICkgewoKCQkJCWlmKCB5ID4gMCApIHsKCQkJCQl2ZXJ0aWNhbFNsaWRlLmNsYXNzTGlzdC5yZW1vdmUoICdwcmVzZW50JyApOwoJCQkJCXZlcnRpY2FsU2xpZGUuY2xhc3NMaXN0LnJlbW92ZSggJ3Bhc3QnICk7CgkJCQkJdmVydGljYWxTbGlkZS5jbGFzc0xpc3QuYWRkKCAnZnV0dXJlJyApOwoJCQkJCXZlcnRpY2FsU2xpZGUuc2V0QXR0cmlidXRlKCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScgKTsKCQkJCX0KCgkJCX0gKTsKCgkJfSApOwoKCX0KCgkvKioKCSAqIFNvcnRzIGFuZCBmb3JtYXRzIGFsbCBvZiBmcmFnbWVudHMgaW4gdGhlCgkgKiBwcmVzZW50YXRpb24uCgkgKi8KCWZ1bmN0aW9uIHNvcnRBbGxGcmFnbWVudHMoKSB7CgoJCXZhciBob3Jpem9udGFsU2xpZGVzID0gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKSApOwoJCWhvcml6b250YWxTbGlkZXMuZm9yRWFjaCggZnVuY3Rpb24oIGhvcml6b250YWxTbGlkZSApIHsKCgkJCXZhciB2ZXJ0aWNhbFNsaWRlcyA9IHRvQXJyYXkoIGhvcml6b250YWxTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnc2VjdGlvbicgKSApOwoJCQl2ZXJ0aWNhbFNsaWRlcy5mb3JFYWNoKCBmdW5jdGlvbiggdmVydGljYWxTbGlkZSwgeSApIHsKCgkJCQlzb3J0RnJhZ21lbnRzKCB2ZXJ0aWNhbFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICkgKTsKCgkJCX0gKTsKCgkJCWlmKCB2ZXJ0aWNhbFNsaWRlcy5sZW5ndGggPT09IDAgKSBzb3J0RnJhZ21lbnRzKCBob3Jpem9udGFsU2xpZGUucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudCcgKSApOwoKCQl9ICk7CgoJfQoKCS8qKgoJICogUmFuZG9tbHkgc2h1ZmZsZXMgYWxsIHNsaWRlcyBpbiB0aGUgZGVjay4KCSAqLwoJZnVuY3Rpb24gc2h1ZmZsZSgpIHsKCgkJdmFyIHNsaWRlcyA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKTsKCgkJc2xpZGVzLmZvckVhY2goIGZ1bmN0aW9uKCBzbGlkZSApIHsKCgkJCS8vIEluc2VydCB0aGlzIHNsaWRlIG5leHQgdG8gYW5vdGhlciByYW5kb20gc2xpZGUuIFRoaXMgbWF5CgkJCS8vIGNhdXNlIHRoZSBzbGlkZSB0byBpbnNlcnQgYmVmb3JlIGl0c2VsZiBidXQgdGhhdCdzIGZpbmUuCgkJCWRvbS5zbGlkZXMuaW5zZXJ0QmVmb3JlKCBzbGlkZSwgc2xpZGVzWyBNYXRoLmZsb29yKCBNYXRoLnJhbmRvbSgpICogc2xpZGVzLmxlbmd0aCApIF0gKTsKCgkJfSApOwoKCX0KCgkvKioKCSAqIFVwZGF0ZXMgb25lIGRpbWVuc2lvbiBvZiBzbGlkZXMgYnkgc2hvd2luZyB0aGUgc2xpZGUKCSAqIHdpdGggdGhlIHNwZWNpZmllZCBpbmRleC4KCSAqCgkgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgQSBDU1Mgc2VsZWN0b3IgdGhhdCB3aWxsIGZldGNoCgkgKiB0aGUgZ3JvdXAgb2Ygc2xpZGVzIHdlIGFyZSB3b3JraW5nIHdpdGgKCSAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIHNsaWRlIHRoYXQgc2hvdWxkIGJlCgkgKiBzaG93bgoJICoKCSAqIEByZXR1cm4ge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBzbGlkZSB0aGF0IGlzIG5vdyBzaG93biwKCSAqIG1pZ2h0IGRpZmZlciBmcm9tIHRoZSBwYXNzZWQgaW4gaW5kZXggaWYgaXQgd2FzIG91dCBvZgoJICogYm91bmRzLgoJICovCglmdW5jdGlvbiB1cGRhdGVTbGlkZXMoIHNlbGVjdG9yLCBpbmRleCApIHsKCgkJLy8gU2VsZWN0IGFsbCBzbGlkZXMgYW5kIGNvbnZlcnQgdGhlIE5vZGVMaXN0IHJlc3VsdCB0bwoJCS8vIGFuIGFycmF5CgkJdmFyIHNsaWRlcyA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIHNlbGVjdG9yICkgKSwKCQkJc2xpZGVzTGVuZ3RoID0gc2xpZGVzLmxlbmd0aDsKCgkJdmFyIHByaW50TW9kZSA9IGlzUHJpbnRpbmdQREYoKTsKCgkJaWYoIHNsaWRlc0xlbmd0aCApIHsKCgkJCS8vIFNob3VsZCB0aGUgaW5kZXggbG9vcD8KCQkJaWYoIGNvbmZpZy5sb29wICkgewoJCQkJaW5kZXggJT0gc2xpZGVzTGVuZ3RoOwoKCQkJCWlmKCBpbmRleCA8IDAgKSB7CgkJCQkJaW5kZXggPSBzbGlkZXNMZW5ndGggKyBpbmRleDsKCQkJCX0KCQkJfQoKCQkJLy8gRW5mb3JjZSBtYXggYW5kIG1pbmltdW0gaW5kZXggYm91bmRzCgkJCWluZGV4ID0gTWF0aC5tYXgoIE1hdGgubWluKCBpbmRleCwgc2xpZGVzTGVuZ3RoIC0gMSApLCAwICk7CgoJCQlmb3IoIHZhciBpID0gMDsgaSA8IHNsaWRlc0xlbmd0aDsgaSsrICkgewoJCQkJdmFyIGVsZW1lbnQgPSBzbGlkZXNbaV07CgoJCQkJdmFyIHJldmVyc2UgPSBjb25maWcucnRsICYmICFpc1ZlcnRpY2FsU2xpZGUoIGVsZW1lbnQgKTsKCgkJCQllbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoICdwYXN0JyApOwoJCQkJZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCAncHJlc2VudCcgKTsKCQkJCWVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSggJ2Z1dHVyZScgKTsKCgkJCQkvLyBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL2RyYWZ0cy9odG1sL21hc3Rlci9lZGl0aW5nLmh0bWwjdGhlLWhpZGRlbi1hdHRyaWJ1dGUKCQkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAnaGlkZGVuJywgJycgKTsKCQkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScgKTsKCgkJCQkvLyBJZiB0aGlzIGVsZW1lbnQgY29udGFpbnMgdmVydGljYWwgc2xpZGVzCgkJCQlpZiggZWxlbWVudC5xdWVyeVNlbGVjdG9yKCAnc2VjdGlvbicgKSApIHsKCQkJCQllbGVtZW50LmNsYXNzTGlzdC5hZGQoICdzdGFjaycgKTsKCQkJCX0KCgkJCQkvLyBJZiB3ZSdyZSBwcmludGluZyBzdGF0aWMgc2xpZGVzLCBhbGwgc2xpZGVzIGFyZSAicHJlc2VudCIKCQkJCWlmKCBwcmludE1vZGUgKSB7CgkJCQkJZWxlbWVudC5jbGFzc0xpc3QuYWRkKCAncHJlc2VudCcgKTsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQlpZiggaSA8IGluZGV4ICkgewoJCQkJCS8vIEFueSBlbGVtZW50IHByZXZpb3VzIHRvIGluZGV4IGlzIGdpdmVuIHRoZSAncGFzdCcgY2xhc3MKCQkJCQllbGVtZW50LmNsYXNzTGlzdC5hZGQoIHJldmVyc2UgPyAnZnV0dXJlJyA6ICdwYXN0JyApOwoKCQkJCQlpZiggY29uZmlnLmZyYWdtZW50cyApIHsKCQkJCQkJLy8gU2hvdyBhbGwgZnJhZ21lbnRzIGluIHByaW9yIHNsaWRlcwoJCQkJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggZnJhZ21lbnQgKSB7CgkJCQkJCQlmcmFnbWVudC5jbGFzc0xpc3QuYWRkKCAndmlzaWJsZScgKTsKCQkJCQkJCWZyYWdtZW50LmNsYXNzTGlzdC5yZW1vdmUoICdjdXJyZW50LWZyYWdtZW50JyApOwoJCQkJCQl9ICk7CgkJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZiggaSA+IGluZGV4ICkgewoJCQkJCS8vIEFueSBlbGVtZW50IHN1YnNlcXVlbnQgdG8gaW5kZXggaXMgZ2l2ZW4gdGhlICdmdXR1cmUnIGNsYXNzCgkJCQkJZWxlbWVudC5jbGFzc0xpc3QuYWRkKCByZXZlcnNlID8gJ3Bhc3QnIDogJ2Z1dHVyZScgKTsKCgkJCQkJaWYoIGNvbmZpZy5mcmFnbWVudHMgKSB7CgkJCQkJCS8vIEhpZGUgYWxsIGZyYWdtZW50cyBpbiBmdXR1cmUgc2xpZGVzCgkJCQkJCXRvQXJyYXkoIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudC52aXNpYmxlJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGZyYWdtZW50ICkgewoJCQkJCQkJZnJhZ21lbnQuY2xhc3NMaXN0LnJlbW92ZSggJ3Zpc2libGUnICk7CgkJCQkJCQlmcmFnbWVudC5jbGFzc0xpc3QucmVtb3ZlKCAnY3VycmVudC1mcmFnbWVudCcgKTsKCQkJCQkJfSApOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJLy8gTWFyayB0aGUgY3VycmVudCBzbGlkZSBhcyBwcmVzZW50CgkJCXNsaWRlc1tpbmRleF0uY2xhc3NMaXN0LmFkZCggJ3ByZXNlbnQnICk7CgkJCXNsaWRlc1tpbmRleF0ucmVtb3ZlQXR0cmlidXRlKCAnaGlkZGVuJyApOwoJCQlzbGlkZXNbaW5kZXhdLnJlbW92ZUF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJyApOwoKCQkJLy8gSWYgdGhpcyBzbGlkZSBoYXMgYSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggaXQsIGFkZCBpdAoJCQkvLyBvbnRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkZWNrCgkJCXZhciBzbGlkZVN0YXRlID0gc2xpZGVzW2luZGV4XS5nZXRBdHRyaWJ1dGUoICdkYXRhLXN0YXRlJyApOwoJCQlpZiggc2xpZGVTdGF0ZSApIHsKCQkJCXN0YXRlID0gc3RhdGUuY29uY2F0KCBzbGlkZVN0YXRlLnNwbGl0KCAnICcgKSApOwoJCQl9CgoJCX0KCQllbHNlIHsKCQkJLy8gU2luY2UgdGhlcmUgYXJlIG5vIHNsaWRlcyB3ZSBjYW4ndCBiZSBhbnl3aGVyZSBiZXlvbmQgdGhlCgkJCS8vIHplcm90aCBpbmRleAoJCQlpbmRleCA9IDA7CgkJfQoKCQlyZXR1cm4gaW5kZXg7CgoJfQoKCS8qKgoJICogT3B0aW1pemF0aW9uIG1ldGhvZDsgaGlkZSBhbGwgc2xpZGVzIHRoYXQgYXJlIGZhciBhd2F5CgkgKiBmcm9tIHRoZSBwcmVzZW50IHNsaWRlLgoJICovCglmdW5jdGlvbiB1cGRhdGVTbGlkZXNWaXNpYmlsaXR5KCkgewoKCQkvLyBTZWxlY3QgYWxsIHNsaWRlcyBhbmQgY29udmVydCB0aGUgTm9kZUxpc3QgcmVzdWx0IHRvCgkJLy8gYW4gYXJyYXkKCQl2YXIgaG9yaXpvbnRhbFNsaWRlcyA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKSwKCQkJaG9yaXpvbnRhbFNsaWRlc0xlbmd0aCA9IGhvcml6b250YWxTbGlkZXMubGVuZ3RoLAoJCQlkaXN0YW5jZVgsCgkJCWRpc3RhbmNlWTsKCgkJaWYoIGhvcml6b250YWxTbGlkZXNMZW5ndGggJiYgdHlwZW9mIGluZGV4aCAhPT0gJ3VuZGVmaW5lZCcgKSB7CgoJCQkvLyBUaGUgbnVtYmVyIG9mIHN0ZXBzIGF3YXkgZnJvbSB0aGUgcHJlc2VudCBzbGlkZSB0aGF0IHdpbGwKCQkJLy8gYmUgdmlzaWJsZQoJCQl2YXIgdmlld0Rpc3RhbmNlID0gaXNPdmVydmlldygpID8gMTAgOiBjb25maWcudmlld0Rpc3RhbmNlOwoKCQkJLy8gTGltaXQgdmlldyBkaXN0YW5jZSBvbiB3ZWFrZXIgZGV2aWNlcwoJCQlpZiggaXNNb2JpbGVEZXZpY2UgKSB7CgkJCQl2aWV3RGlzdGFuY2UgPSBpc092ZXJ2aWV3KCkgPyA2IDogMjsKCQkJfQoKCQkJLy8gQWxsIHNsaWRlcyBuZWVkIHRvIGJlIHZpc2libGUgd2hlbiBleHBvcnRpbmcgdG8gUERGCgkJCWlmKCBpc1ByaW50aW5nUERGKCkgKSB7CgkJCQl2aWV3RGlzdGFuY2UgPSBOdW1iZXIuTUFYX1ZBTFVFOwoJCQl9CgoJCQlmb3IoIHZhciB4ID0gMDsgeCA8IGhvcml6b250YWxTbGlkZXNMZW5ndGg7IHgrKyApIHsKCQkJCXZhciBob3Jpem9udGFsU2xpZGUgPSBob3Jpem9udGFsU2xpZGVzW3hdOwoKCQkJCXZhciB2ZXJ0aWNhbFNsaWRlcyA9IHRvQXJyYXkoIGhvcml6b250YWxTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnc2VjdGlvbicgKSApLAoJCQkJCXZlcnRpY2FsU2xpZGVzTGVuZ3RoID0gdmVydGljYWxTbGlkZXMubGVuZ3RoOwoKCQkJCS8vIERldGVybWluZSBob3cgZmFyIGF3YXkgdGhpcyBzbGlkZSBpcyBmcm9tIHRoZSBwcmVzZW50CgkJCQlkaXN0YW5jZVggPSBNYXRoLmFicyggKCBpbmRleGggfHwgMCApIC0geCApIHx8IDA7CgoJCQkJLy8gSWYgdGhlIHByZXNlbnRhdGlvbiBpcyBsb29wZWQsIGRpc3RhbmNlIHNob3VsZCBtZWFzdXJlCgkJCQkvLyAxIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBsYXN0IHNsaWRlcwoJCQkJaWYoIGNvbmZpZy5sb29wICkgewoJCQkJCWRpc3RhbmNlWCA9IE1hdGguYWJzKCAoICggaW5kZXhoIHx8IDAgKSAtIHggKSAlICggaG9yaXpvbnRhbFNsaWRlc0xlbmd0aCAtIHZpZXdEaXN0YW5jZSApICkgfHwgMDsKCQkJCX0KCgkJCQkvLyBTaG93IHRoZSBob3Jpem9udGFsIHNsaWRlIGlmIGl0J3Mgd2l0aGluIHRoZSB2aWV3IGRpc3RhbmNlCgkJCQlpZiggZGlzdGFuY2VYIDwgdmlld0Rpc3RhbmNlICkgewoJCQkJCWxvYWRTbGlkZSggaG9yaXpvbnRhbFNsaWRlICk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQl1bmxvYWRTbGlkZSggaG9yaXpvbnRhbFNsaWRlICk7CgkJCQl9CgoJCQkJaWYoIHZlcnRpY2FsU2xpZGVzTGVuZ3RoICkgewoKCQkJCQl2YXIgb3kgPSBnZXRQcmV2aW91c1ZlcnRpY2FsSW5kZXgoIGhvcml6b250YWxTbGlkZSApOwoKCQkJCQlmb3IoIHZhciB5ID0gMDsgeSA8IHZlcnRpY2FsU2xpZGVzTGVuZ3RoOyB5KysgKSB7CgkJCQkJCXZhciB2ZXJ0aWNhbFNsaWRlID0gdmVydGljYWxTbGlkZXNbeV07CgoJCQkJCQlkaXN0YW5jZVkgPSB4ID09PSAoIGluZGV4aCB8fCAwICkgPyBNYXRoLmFicyggKCBpbmRleHYgfHwgMCApIC0geSApIDogTWF0aC5hYnMoIHkgLSBveSApOwoKCQkJCQkJaWYoIGRpc3RhbmNlWCArIGRpc3RhbmNlWSA8IHZpZXdEaXN0YW5jZSApIHsKCQkJCQkJCWxvYWRTbGlkZSggdmVydGljYWxTbGlkZSApOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJdW5sb2FkU2xpZGUoIHZlcnRpY2FsU2xpZGUgKTsKCQkJCQkJfQoJCQkJCX0KCgkJCQl9CgkJCX0KCgkJCS8vIEZsYWcgaWYgdGhlcmUgYXJlIEFOWSB2ZXJ0aWNhbCBzbGlkZXMsIGFueXdoZXJlIGluIHRoZSBkZWNrCgkJCWlmKCBoYXNWZXJ0aWNhbFNsaWRlcygpICkgewoJCQkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LmFkZCggJ2hhcy12ZXJ0aWNhbC1zbGlkZXMnICk7CgkJCX0KCQkJZWxzZSB7CgkJCQlkb20ud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCAnaGFzLXZlcnRpY2FsLXNsaWRlcycgKTsKCQkJfQoKCQkJLy8gRmxhZyBpZiB0aGVyZSBhcmUgQU5ZIGhvcml6b250YWwgc2xpZGVzLCBhbnl3aGVyZSBpbiB0aGUgZGVjawoJCQlpZiggaGFzSG9yaXpvbnRhbFNsaWRlcygpICkgewoJCQkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LmFkZCggJ2hhcy1ob3Jpem9udGFsLXNsaWRlcycgKTsKCQkJfQoJCQllbHNlIHsKCQkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoICdoYXMtaG9yaXpvbnRhbC1zbGlkZXMnICk7CgkJCX0KCgkJfQoKCX0KCgkvKioKCSAqIFBpY2sgdXAgbm90ZXMgZnJvbSB0aGUgY3VycmVudCBzbGlkZSBhbmQgZGlzcGxheSB0aGVtCgkgKiB0byB0aGUgdmlld2VyLgoJICoKCSAqIEBzZWUge0BsaW5rIGNvbmZpZy5zaG93Tm90ZXN9CgkgKi8KCWZ1bmN0aW9uIHVwZGF0ZU5vdGVzKCkgewoKCQlpZiggY29uZmlnLnNob3dOb3RlcyAmJiBkb20uc3BlYWtlck5vdGVzICYmIGN1cnJlbnRTbGlkZSAmJiAhaXNQcmludGluZ1BERigpICkgewoKCQkJZG9tLnNwZWFrZXJOb3Rlcy5pbm5lckhUTUwgPSBnZXRTbGlkZU5vdGVzKCkgfHwgJzxzcGFuIGNsYXNzPSJub3Rlcy1wbGFjZWhvbGRlciI+Tm8gbm90ZXMgb24gdGhpcyBzbGlkZS48L3NwYW4+JzsKCgkJfQoKCX0KCgkvKioKCSAqIFVwZGF0ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNwZWFrZXIgbm90ZXMgc2lkZWJhciB0aGF0CgkgKiBpcyB1c2VkIHRvIHNoYXJlIGFubm90YXRlZCBzbGlkZXMuIFRoZSBub3RlcyBzaWRlYmFyIGlzCgkgKiBvbmx5IHZpc2libGUgaWYgc2hvd05vdGVzIGlzIHRydWUgYW5kIHRoZXJlIGFyZSBub3RlcyBvbgoJICogb25lIG9yIG1vcmUgc2xpZGVzIGluIHRoZSBkZWNrLgoJICovCglmdW5jdGlvbiB1cGRhdGVOb3Rlc1Zpc2liaWxpdHkoKSB7CgoJCWlmKCBjb25maWcuc2hvd05vdGVzICYmIGhhc05vdGVzKCkgKSB7CgkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoICdzaG93LW5vdGVzJyApOwoJCX0KCQllbHNlIHsKCQkJZG9tLndyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSggJ3Nob3ctbm90ZXMnICk7CgkJfQoKCX0KCgkvKioKCSAqIENoZWNrcyBpZiB0aGVyZSBhcmUgc3BlYWtlciBub3RlcyBmb3IgQU5ZIHNsaWRlIGluIHRoZQoJICogcHJlc2VudGF0aW9uLgoJICovCglmdW5jdGlvbiBoYXNOb3RlcygpIHsKCgkJcmV0dXJuIGRvbS5zbGlkZXMucXVlcnlTZWxlY3RvckFsbCggJ1tkYXRhLW5vdGVzXSwgYXNpZGUubm90ZXMnICkubGVuZ3RoID4gMDsKCgl9CgoJLyoqCgkgKiBVcGRhdGVzIHRoZSBwcm9ncmVzcyBiYXIgdG8gcmVmbGVjdCB0aGUgY3VycmVudCBzbGlkZS4KCSAqLwoJZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3MoKSB7CgoJCS8vIFVwZGF0ZSBwcm9ncmVzcyBpZiBlbmFibGVkCgkJaWYoIGNvbmZpZy5wcm9ncmVzcyAmJiBkb20ucHJvZ3Jlc3NiYXIgKSB7CgoJCQlkb20ucHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSBnZXRQcm9ncmVzcygpICogZG9tLndyYXBwZXIub2Zmc2V0V2lkdGggKyAncHgnOwoKCQl9CgoJfQoKCgkvKioKCSAqIFVwZGF0ZXMgdGhlIHNsaWRlIG51bWJlciB0byBtYXRjaCB0aGUgY3VycmVudCBzbGlkZS4KCSAqLwoJZnVuY3Rpb24gdXBkYXRlU2xpZGVOdW1iZXIoKSB7CgoJCS8vIFVwZGF0ZSBzbGlkZSBudW1iZXIgaWYgZW5hYmxlZAoJCWlmKCBjb25maWcuc2xpZGVOdW1iZXIgJiYgZG9tLnNsaWRlTnVtYmVyICkgewoKCQkJdmFyIHZhbHVlOwoJCQl2YXIgZm9ybWF0ID0gJ2gudic7CgoJCQlpZiggdHlwZW9mIGNvbmZpZy5zbGlkZU51bWJlciA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCXZhbHVlID0gY29uZmlnLnNsaWRlTnVtYmVyKCk7CgkJCX0KCQkJZWxzZSB7CgkJCQkvLyBDaGVjayBpZiBhIGN1c3RvbSBudW1iZXIgZm9ybWF0IGlzIGF2YWlsYWJsZQoJCQkJaWYoIHR5cGVvZiBjb25maWcuc2xpZGVOdW1iZXIgPT09ICdzdHJpbmcnICkgewoJCQkJCWZvcm1hdCA9IGNvbmZpZy5zbGlkZU51bWJlcjsKCQkJCX0KCgkJCQkvLyBJZiB0aGVyZSBhcmUgT05MWSB2ZXJ0aWNhbCBzbGlkZXMgaW4gdGhpcyBkZWNrLCBhbHdheXMgdXNlCgkJCQkvLyBhIGZsYXR0ZW5lZCBzbGlkZSBudW1iZXIKCQkJCWlmKCAhL2MvLnRlc3QoIGZvcm1hdCApICYmIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkubGVuZ3RoID09PSAxICkgewoJCQkJCWZvcm1hdCA9ICdjJzsKCQkJCX0KCgkJCQl2YWx1ZSA9IFtdOwoJCQkJc3dpdGNoKCBmb3JtYXQgKSB7CgkJCQkJY2FzZSAnYyc6CgkJCQkJCXZhbHVlLnB1c2goIGdldFNsaWRlUGFzdENvdW50KCkgKyAxICk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJ2MvdCc6CgkJCQkJCXZhbHVlLnB1c2goIGdldFNsaWRlUGFzdENvdW50KCkgKyAxLCAnLycsIGdldFRvdGFsU2xpZGVzKCkgKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAnaC92JzoKCQkJCQkJdmFsdWUucHVzaCggaW5kZXhoICsgMSApOwoJCQkJCQlpZiggaXNWZXJ0aWNhbFNsaWRlKCkgKSB2YWx1ZS5wdXNoKCAnLycsIGluZGV4diArIDEgKTsKCQkJCQkJYnJlYWs7CgkJCQkJZGVmYXVsdDoKCQkJCQkJdmFsdWUucHVzaCggaW5kZXhoICsgMSApOwoJCQkJCQlpZiggaXNWZXJ0aWNhbFNsaWRlKCkgKSB2YWx1ZS5wdXNoKCAnLicsIGluZGV4diArIDEgKTsKCQkJCX0KCQkJfQoKCQkJZG9tLnNsaWRlTnVtYmVyLmlubmVySFRNTCA9IGZvcm1hdFNsaWRlTnVtYmVyKCB2YWx1ZVswXSwgdmFsdWVbMV0sIHZhbHVlWzJdICk7CgkJfQoKCX0KCgkvKioKCSAqIEFwcGxpZXMgSFRNTCBmb3JtYXR0aW5nIHRvIGEgc2xpZGUgbnVtYmVyIGJlZm9yZSBpdCdzCgkgKiB3cml0dGVuIHRvIHRoZSBET00uCgkgKgoJICogQHBhcmFtIHtudW1iZXJ9IGEgQ3VycmVudCBzbGlkZQoJICogQHBhcmFtIHtzdHJpbmd9IGRlbGltaXRlciBDaGFyYWN0ZXIgdG8gc2VwYXJhdGUgc2xpZGUgbnVtYmVycwoJICogQHBhcmFtIHsobnVtYmVyfCopfSBiIFRvdGFsIHNsaWRlcwoJICogQHJldHVybiB7c3RyaW5nfSBIVE1MIHN0cmluZyBmcmFnbWVudAoJICovCglmdW5jdGlvbiBmb3JtYXRTbGlkZU51bWJlciggYSwgZGVsaW1pdGVyLCBiICkgewoKCQl2YXIgdXJsID0gJyMnICsgbG9jYXRpb25IYXNoKCk7CgkJaWYoIHR5cGVvZiBiID09PSAnbnVtYmVyJyAmJiAhaXNOYU4oIGIgKSApIHsKCQkJcmV0dXJuICAnPGEgaHJlZj0iJyArIHVybCArICciPicgKwoJCQkJCSc8c3BhbiBjbGFzcz0ic2xpZGUtbnVtYmVyLWEiPicrIGEgKyc8L3NwYW4+JyArCgkJCQkJJzxzcGFuIGNsYXNzPSJzbGlkZS1udW1iZXItZGVsaW1pdGVyIj4nKyBkZWxpbWl0ZXIgKyc8L3NwYW4+JyArCgkJCQkJJzxzcGFuIGNsYXNzPSJzbGlkZS1udW1iZXItYiI+JysgYiArJzwvc3Bhbj4nICsKCQkJCQknPC9hPic7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJzxhIGhyZWY9IicgKyB1cmwgKyAnIj4nICsKCQkJICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGUtbnVtYmVyLWEiPicrIGEgKyc8L3NwYW4+JyArCgkJCSAgICAgICAnPC9hPic7CgkJfQoKCX0KCgkvKioKCSAqIFVwZGF0ZXMgdGhlIHN0YXRlIG9mIGFsbCBjb250cm9sL25hdmlnYXRpb24gYXJyb3dzLgoJICovCglmdW5jdGlvbiB1cGRhdGVDb250cm9scygpIHsKCgkJdmFyIHJvdXRlcyA9IGF2YWlsYWJsZVJvdXRlcygpOwoJCXZhciBmcmFnbWVudHMgPSBhdmFpbGFibGVGcmFnbWVudHMoKTsKCgkJLy8gUmVtb3ZlIHRoZSAnZW5hYmxlZCcgY2xhc3MgZnJvbSBhbGwgZGlyZWN0aW9ucwoJCWRvbS5jb250cm9sc0xlZnQuY29uY2F0KCBkb20uY29udHJvbHNSaWdodCApCgkJCQkJCS5jb25jYXQoIGRvbS5jb250cm9sc1VwICkKCQkJCQkJLmNvbmNhdCggZG9tLmNvbnRyb2xzRG93biApCgkJCQkJCS5jb25jYXQoIGRvbS5jb250cm9sc1ByZXYgKQoJCQkJCQkuY29uY2F0KCBkb20uY29udHJvbHNOZXh0ICkuZm9yRWFjaCggZnVuY3Rpb24oIG5vZGUgKSB7CgkJCW5vZGUuY2xhc3NMaXN0LnJlbW92ZSggJ2VuYWJsZWQnICk7CgkJCW5vZGUuY2xhc3NMaXN0LnJlbW92ZSggJ2ZyYWdtZW50ZWQnICk7CgoJCQkvLyBTZXQgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUgb24gYWxsIGRpcmVjdGlvbnMKCQkJbm9kZS5zZXRBdHRyaWJ1dGUoICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTsKCQl9ICk7CgoJCS8vIEFkZCB0aGUgJ2VuYWJsZWQnIGNsYXNzIHRvIHRoZSBhdmFpbGFibGUgcm91dGVzOyByZW1vdmUgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUgdG8gZW5hYmxlIGJ1dHRvbnMKCQlpZiggcm91dGVzLmxlZnQgKSBkb20uY29udHJvbHNMZWZ0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgkJaWYoIHJvdXRlcy5yaWdodCApIGRvbS5jb250cm9sc1JpZ2h0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgkJaWYoIHJvdXRlcy51cCApIGRvbS5jb250cm9sc1VwLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgkJaWYoIHJvdXRlcy5kb3duICkgZG9tLmNvbnRyb2xzRG93bi5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLmNsYXNzTGlzdC5hZGQoICdlbmFibGVkJyApOyBlbC5yZW1vdmVBdHRyaWJ1dGUoICdkaXNhYmxlZCcgKTsgfSApOwoKCQkvLyBQcmV2L25leHQgYnV0dG9ucwoJCWlmKCByb3V0ZXMubGVmdCB8fCByb3V0ZXMudXAgKSBkb20uY29udHJvbHNQcmV2LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgkJaWYoIHJvdXRlcy5yaWdodCB8fCByb3V0ZXMuZG93biApIGRvbS5jb250cm9sc05leHQuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5jbGFzc0xpc3QuYWRkKCAnZW5hYmxlZCcgKTsgZWwucmVtb3ZlQXR0cmlidXRlKCAnZGlzYWJsZWQnICk7IH0gKTsKCgkJLy8gSGlnaGxpZ2h0IGZyYWdtZW50IGRpcmVjdGlvbnMKCQlpZiggY3VycmVudFNsaWRlICkgewoKCQkJLy8gQWx3YXlzIGFwcGx5IGZyYWdtZW50IGRlY29yYXRvciB0byBwcmV2L25leHQgYnV0dG9ucwoJCQlpZiggZnJhZ21lbnRzLnByZXYgKSBkb20uY29udHJvbHNQcmV2LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2ZyYWdtZW50ZWQnLCAnZW5hYmxlZCcgKTsgZWwucmVtb3ZlQXR0cmlidXRlKCAnZGlzYWJsZWQnICk7IH0gKTsKCQkJaWYoIGZyYWdtZW50cy5uZXh0ICkgZG9tLmNvbnRyb2xzTmV4dC5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLmNsYXNzTGlzdC5hZGQoICdmcmFnbWVudGVkJywgJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgoJCQkvLyBBcHBseSBmcmFnbWVudCBkZWNvcmF0b3JzIHRvIGRpcmVjdGlvbmFsIGJ1dHRvbnMgYmFzZWQgb24KCQkJLy8gd2hhdCBzbGlkZSBheGlzIHRoZXkgYXJlIGluCgkJCWlmKCBpc1ZlcnRpY2FsU2xpZGUoIGN1cnJlbnRTbGlkZSApICkgewoJCQkJaWYoIGZyYWdtZW50cy5wcmV2ICkgZG9tLmNvbnRyb2xzVXAuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgeyBlbC5jbGFzc0xpc3QuYWRkKCAnZnJhZ21lbnRlZCcsICdlbmFibGVkJyApOyBlbC5yZW1vdmVBdHRyaWJ1dGUoICdkaXNhYmxlZCcgKTsgfSApOwoJCQkJaWYoIGZyYWdtZW50cy5uZXh0ICkgZG9tLmNvbnRyb2xzRG93bi5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7IGVsLmNsYXNzTGlzdC5hZGQoICdmcmFnbWVudGVkJywgJ2VuYWJsZWQnICk7IGVsLnJlbW92ZUF0dHJpYnV0ZSggJ2Rpc2FibGVkJyApOyB9ICk7CgkJCX0KCQkJZWxzZSB7CgkJCQlpZiggZnJhZ21lbnRzLnByZXYgKSBkb20uY29udHJvbHNMZWZ0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2ZyYWdtZW50ZWQnLCAnZW5hYmxlZCcgKTsgZWwucmVtb3ZlQXR0cmlidXRlKCAnZGlzYWJsZWQnICk7IH0gKTsKCQkJCWlmKCBmcmFnbWVudHMubmV4dCApIGRvbS5jb250cm9sc1JpZ2h0LmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsgZWwuY2xhc3NMaXN0LmFkZCggJ2ZyYWdtZW50ZWQnLCAnZW5hYmxlZCcgKTsgZWwucmVtb3ZlQXR0cmlidXRlKCAnZGlzYWJsZWQnICk7IH0gKTsKCQkJfQoKCQl9CgoJCWlmKCBjb25maWcuY29udHJvbHNUdXRvcmlhbCApIHsKCgkJCS8vIEhpZ2hsaWdodCBjb250cm9sIGFycm93cyB3aXRoIGFuIGFuaW1hdGlvbiB0byBlbnN1cmUKCQkJLy8gdGhhdCB0aGUgdmlld2VyIGtub3dzIGhvdyB0byBuYXZpZ2F0ZQoJCQlpZiggIWhhc05hdmlnYXRlZERvd24gJiYgcm91dGVzLmRvd24gKSB7CgkJCQlkb20uY29udHJvbHNEb3duQXJyb3cuY2xhc3NMaXN0LmFkZCggJ2hpZ2hsaWdodCcgKTsKCQkJfQoJCQllbHNlIHsKCQkJCWRvbS5jb250cm9sc0Rvd25BcnJvdy5jbGFzc0xpc3QucmVtb3ZlKCAnaGlnaGxpZ2h0JyApOwoKCQkJCWlmKCAhaGFzTmF2aWdhdGVkUmlnaHQgJiYgcm91dGVzLnJpZ2h0ICYmIGluZGV4diA9PT0gMCApIHsKCQkJCQlkb20uY29udHJvbHNSaWdodEFycm93LmNsYXNzTGlzdC5hZGQoICdoaWdobGlnaHQnICk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlkb20uY29udHJvbHNSaWdodEFycm93LmNsYXNzTGlzdC5yZW1vdmUoICdoaWdobGlnaHQnICk7CgkJCQl9CgkJCX0KCgkJfQoKCX0KCgkvKioKCSAqIFVwZGF0ZXMgdGhlIGJhY2tncm91bmQgZWxlbWVudHMgdG8gcmVmbGVjdCB0aGUgY3VycmVudAoJICogc2xpZGUuCgkgKgoJICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQWxsIElmIHRydWUsIHRoZSBiYWNrZ3JvdW5kcyBvZgoJICogYWxsIHZlcnRpY2FsIHNsaWRlcyAobm90IGp1c3QgdGhlIHByZXNlbnQpIHdpbGwgYmUgdXBkYXRlZC4KCSAqLwoJZnVuY3Rpb24gdXBkYXRlQmFja2dyb3VuZCggaW5jbHVkZUFsbCApIHsKCgkJdmFyIGN1cnJlbnRCYWNrZ3JvdW5kID0gbnVsbDsKCgkJLy8gUmV2ZXJzZSBwYXN0L2Z1dHVyZSBjbGFzc2VzIHdoZW4gaW4gUlRMIG1vZGUKCQl2YXIgaG9yaXpvbnRhbFBhc3QgPSBjb25maWcucnRsID8gJ2Z1dHVyZScgOiAncGFzdCcsCgkJCWhvcml6b250YWxGdXR1cmUgPSBjb25maWcucnRsID8gJ3Bhc3QnIDogJ2Z1dHVyZSc7CgoJCS8vIFVwZGF0ZSB0aGUgY2xhc3NlcyBvZiBhbGwgYmFja2dyb3VuZHMgdG8gbWF0Y2ggdGhlCgkJLy8gc3RhdGVzIG9mIHRoZWlyIHNsaWRlcyAocGFzdC9wcmVzZW50L2Z1dHVyZSkKCQl0b0FycmF5KCBkb20uYmFja2dyb3VuZC5jaGlsZE5vZGVzICkuZm9yRWFjaCggZnVuY3Rpb24oIGJhY2tncm91bmRoLCBoICkgewoKCQkJYmFja2dyb3VuZGguY2xhc3NMaXN0LnJlbW92ZSggJ3Bhc3QnICk7CgkJCWJhY2tncm91bmRoLmNsYXNzTGlzdC5yZW1vdmUoICdwcmVzZW50JyApOwoJCQliYWNrZ3JvdW5kaC5jbGFzc0xpc3QucmVtb3ZlKCAnZnV0dXJlJyApOwoKCQkJaWYoIGggPCBpbmRleGggKSB7CgkJCQliYWNrZ3JvdW5kaC5jbGFzc0xpc3QuYWRkKCBob3Jpem9udGFsUGFzdCApOwoJCQl9CgkJCWVsc2UgaWYgKCBoID4gaW5kZXhoICkgewoJCQkJYmFja2dyb3VuZGguY2xhc3NMaXN0LmFkZCggaG9yaXpvbnRhbEZ1dHVyZSApOwoJCQl9CgkJCWVsc2UgewoJCQkJYmFja2dyb3VuZGguY2xhc3NMaXN0LmFkZCggJ3ByZXNlbnQnICk7CgoJCQkJLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBlbGVtZW50CgkJCQljdXJyZW50QmFja2dyb3VuZCA9IGJhY2tncm91bmRoOwoJCQl9CgoJCQlpZiggaW5jbHVkZUFsbCB8fCBoID09PSBpbmRleGggKSB7CgkJCQl0b0FycmF5KCBiYWNrZ3JvdW5kaC5xdWVyeVNlbGVjdG9yQWxsKCAnLnNsaWRlLWJhY2tncm91bmQnICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggYmFja2dyb3VuZHYsIHYgKSB7CgoJCQkJCWJhY2tncm91bmR2LmNsYXNzTGlzdC5yZW1vdmUoICdwYXN0JyApOwoJCQkJCWJhY2tncm91bmR2LmNsYXNzTGlzdC5yZW1vdmUoICdwcmVzZW50JyApOwoJCQkJCWJhY2tncm91bmR2LmNsYXNzTGlzdC5yZW1vdmUoICdmdXR1cmUnICk7CgoJCQkJCWlmKCB2IDwgaW5kZXh2ICkgewoJCQkJCQliYWNrZ3JvdW5kdi5jbGFzc0xpc3QuYWRkKCAncGFzdCcgKTsKCQkJCQl9CgkJCQkJZWxzZSBpZiAoIHYgPiBpbmRleHYgKSB7CgkJCQkJCWJhY2tncm91bmR2LmNsYXNzTGlzdC5hZGQoICdmdXR1cmUnICk7CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQliYWNrZ3JvdW5kdi5jbGFzc0xpc3QuYWRkKCAncHJlc2VudCcgKTsKCgkJCQkJCS8vIE9ubHkgaWYgdGhpcyBpcyB0aGUgcHJlc2VudCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzbGlkZQoJCQkJCQlpZiggaCA9PT0gaW5kZXhoICkgY3VycmVudEJhY2tncm91bmQgPSBiYWNrZ3JvdW5kdjsKCQkJCQl9CgoJCQkJfSApOwoJCQl9CgoJCX0gKTsKCgkJLy8gU3RvcCBjb250ZW50IGluc2lkZSBvZiBwcmV2aW91cyBiYWNrZ3JvdW5kcwoJCWlmKCBwcmV2aW91c0JhY2tncm91bmQgKSB7CgoJCQlzdG9wRW1iZWRkZWRDb250ZW50KCBwcmV2aW91c0JhY2tncm91bmQsIHsgdW5sb2FkSWZyYW1lczogIXNob3VsZFByZWxvYWQoIHByZXZpb3VzQmFja2dyb3VuZCApIH0gKTsKCgkJfQoKCQkvLyBTdGFydCBjb250ZW50IGluIHRoZSBjdXJyZW50IGJhY2tncm91bmQKCQlpZiggY3VycmVudEJhY2tncm91bmQgKSB7CgoJCQlzdGFydEVtYmVkZGVkQ29udGVudCggY3VycmVudEJhY2tncm91bmQgKTsKCgkJCXZhciBjdXJyZW50QmFja2dyb3VuZENvbnRlbnQgPSBjdXJyZW50QmFja2dyb3VuZC5xdWVyeVNlbGVjdG9yKCAnLnNsaWRlLWJhY2tncm91bmQtY29udGVudCcgKTsKCQkJaWYoIGN1cnJlbnRCYWNrZ3JvdW5kQ29udGVudCApIHsKCgkJCQl2YXIgYmFja2dyb3VuZEltYWdlVVJMID0gY3VycmVudEJhY2tncm91bmRDb250ZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSB8fCAnJzsKCgkJCQkvLyBSZXN0YXJ0IEdJRnMgKGRvZXNuJ3Qgd29yayBpbiBGaXJlZm94KQoJCQkJaWYoIC9cLmdpZi9pLnRlc3QoIGJhY2tncm91bmRJbWFnZVVSTCApICkgewoJCQkJCWN1cnJlbnRCYWNrZ3JvdW5kQ29udGVudC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAnJzsKCQkJCQl3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggY3VycmVudEJhY2tncm91bmRDb250ZW50ICkub3BhY2l0eTsKCQkJCQljdXJyZW50QmFja2dyb3VuZENvbnRlbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZEltYWdlVVJMOwoJCQkJfQoKCQkJfQoKCQkJLy8gRG9uJ3QgdHJhbnNpdGlvbiBiZXR3ZWVuIGlkZW50aWNhbCBiYWNrZ3JvdW5kcy4gVGhpcwoJCQkvLyBwcmV2ZW50cyB1bndhbnRlZCBmbGlja2VyLgoJCQl2YXIgcHJldmlvdXNCYWNrZ3JvdW5kSGFzaCA9IHByZXZpb3VzQmFja2dyb3VuZCA/IHByZXZpb3VzQmFja2dyb3VuZC5nZXRBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtaGFzaCcgKSA6IG51bGw7CgkJCXZhciBjdXJyZW50QmFja2dyb3VuZEhhc2ggPSBjdXJyZW50QmFja2dyb3VuZC5nZXRBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtaGFzaCcgKTsKCQkJaWYoIGN1cnJlbnRCYWNrZ3JvdW5kSGFzaCAmJiBjdXJyZW50QmFja2dyb3VuZEhhc2ggPT09IHByZXZpb3VzQmFja2dyb3VuZEhhc2ggJiYgY3VycmVudEJhY2tncm91bmQgIT09IHByZXZpb3VzQmFja2dyb3VuZCApIHsKCQkJCWRvbS5iYWNrZ3JvdW5kLmNsYXNzTGlzdC5hZGQoICduby10cmFuc2l0aW9uJyApOwoJCQl9CgoJCQlwcmV2aW91c0JhY2tncm91bmQgPSBjdXJyZW50QmFja2dyb3VuZDsKCgkJfQoKCQkvLyBJZiB0aGVyZSdzIGEgYmFja2dyb3VuZCBicmlnaHRuZXNzIGZsYWcgZm9yIHRoaXMgc2xpZGUsCgkJLy8gYnViYmxlIGl0IHRvIHRoZSAucmV2ZWFsIGNvbnRhaW5lcgoJCWlmKCBjdXJyZW50U2xpZGUgKSB7CgkJCVsgJ2hhcy1saWdodC1iYWNrZ3JvdW5kJywgJ2hhcy1kYXJrLWJhY2tncm91bmQnIF0uZm9yRWFjaCggZnVuY3Rpb24oIGNsYXNzVG9CdWJibGUgKSB7CgkJCQlpZiggY3VycmVudFNsaWRlLmNsYXNzTGlzdC5jb250YWlucyggY2xhc3NUb0J1YmJsZSApICkgewoJCQkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5hZGQoIGNsYXNzVG9CdWJibGUgKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWRvbS53cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoIGNsYXNzVG9CdWJibGUgKTsKCQkJCX0KCQkJfSApOwoJCX0KCgkJLy8gQWxsb3cgdGhlIGZpcnN0IGJhY2tncm91bmQgdG8gYXBwbHkgd2l0aG91dCB0cmFuc2l0aW9uCgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCWRvbS5iYWNrZ3JvdW5kLmNsYXNzTGlzdC5yZW1vdmUoICduby10cmFuc2l0aW9uJyApOwoJCX0sIDEgKTsKCgl9CgoJLyoqCgkgKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFyYWxsYXggYmFja2dyb3VuZCBiYXNlZAoJICogb24gdGhlIGN1cnJlbnQgc2xpZGUgaW5kZXguCgkgKi8KCWZ1bmN0aW9uIHVwZGF0ZVBhcmFsbGF4KCkgewoKCQlpZiggY29uZmlnLnBhcmFsbGF4QmFja2dyb3VuZEltYWdlICkgewoKCQkJdmFyIGhvcml6b250YWxTbGlkZXMgPSBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBIT1JJWk9OVEFMX1NMSURFU19TRUxFQ1RPUiApLAoJCQkJdmVydGljYWxTbGlkZXMgPSBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBWRVJUSUNBTF9TTElERVNfU0VMRUNUT1IgKTsKCgkJCXZhciBiYWNrZ3JvdW5kU2l6ZSA9IGRvbS5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRTaXplLnNwbGl0KCAnICcgKSwKCQkJCWJhY2tncm91bmRXaWR0aCwgYmFja2dyb3VuZEhlaWdodDsKCgkJCWlmKCBiYWNrZ3JvdW5kU2l6ZS5sZW5ndGggPT09IDEgKSB7CgkJCQliYWNrZ3JvdW5kV2lkdGggPSBiYWNrZ3JvdW5kSGVpZ2h0ID0gcGFyc2VJbnQoIGJhY2tncm91bmRTaXplWzBdLCAxMCApOwoJCQl9CgkJCWVsc2UgewoJCQkJYmFja2dyb3VuZFdpZHRoID0gcGFyc2VJbnQoIGJhY2tncm91bmRTaXplWzBdLCAxMCApOwoJCQkJYmFja2dyb3VuZEhlaWdodCA9IHBhcnNlSW50KCBiYWNrZ3JvdW5kU2l6ZVsxXSwgMTAgKTsKCQkJfQoKCQkJdmFyIHNsaWRlV2lkdGggPSBkb20uYmFja2dyb3VuZC5vZmZzZXRXaWR0aCwKCQkJCWhvcml6b250YWxTbGlkZUNvdW50ID0gaG9yaXpvbnRhbFNsaWRlcy5sZW5ndGgsCgkJCQlob3Jpem9udGFsT2Zmc2V0TXVsdGlwbGllciwKCQkJCWhvcml6b250YWxPZmZzZXQ7CgoJCQlpZiggdHlwZW9mIGNvbmZpZy5wYXJhbGxheEJhY2tncm91bmRIb3Jpem9udGFsID09PSAnbnVtYmVyJyApIHsKCQkJCWhvcml6b250YWxPZmZzZXRNdWx0aXBsaWVyID0gY29uZmlnLnBhcmFsbGF4QmFja2dyb3VuZEhvcml6b250YWw7CgkJCX0KCQkJZWxzZSB7CgkJCQlob3Jpem9udGFsT2Zmc2V0TXVsdGlwbGllciA9IGhvcml6b250YWxTbGlkZUNvdW50ID4gMSA/ICggYmFja2dyb3VuZFdpZHRoIC0gc2xpZGVXaWR0aCApIC8gKCBob3Jpem9udGFsU2xpZGVDb3VudC0xICkgOiAwOwoJCQl9CgoJCQlob3Jpem9udGFsT2Zmc2V0ID0gaG9yaXpvbnRhbE9mZnNldE11bHRpcGxpZXIgKiBpbmRleGggKiAtMTsKCgkJCXZhciBzbGlkZUhlaWdodCA9IGRvbS5iYWNrZ3JvdW5kLm9mZnNldEhlaWdodCwKCQkJCXZlcnRpY2FsU2xpZGVDb3VudCA9IHZlcnRpY2FsU2xpZGVzLmxlbmd0aCwKCQkJCXZlcnRpY2FsT2Zmc2V0TXVsdGlwbGllciwKCQkJCXZlcnRpY2FsT2Zmc2V0OwoKCQkJaWYoIHR5cGVvZiBjb25maWcucGFyYWxsYXhCYWNrZ3JvdW5kVmVydGljYWwgPT09ICdudW1iZXInICkgewoJCQkJdmVydGljYWxPZmZzZXRNdWx0aXBsaWVyID0gY29uZmlnLnBhcmFsbGF4QmFja2dyb3VuZFZlcnRpY2FsOwoJCQl9CgkJCWVsc2UgewoJCQkJdmVydGljYWxPZmZzZXRNdWx0aXBsaWVyID0gKCBiYWNrZ3JvdW5kSGVpZ2h0IC0gc2xpZGVIZWlnaHQgKSAvICggdmVydGljYWxTbGlkZUNvdW50LTEgKTsKCQkJfQoKCQkJdmVydGljYWxPZmZzZXQgPSB2ZXJ0aWNhbFNsaWRlQ291bnQgPiAwID8gIHZlcnRpY2FsT2Zmc2V0TXVsdGlwbGllciAqIGluZGV4diA6IDA7CgoJCQlkb20uYmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBob3Jpem9udGFsT2Zmc2V0ICsgJ3B4ICcgKyAtdmVydGljYWxPZmZzZXQgKyAncHgnOwoKCQl9CgoJfQoKCS8qKgoJICogU2hvdWxkIHRoZSBnaXZlbiBlbGVtZW50IGJlIHByZWxvYWRlZD8KCSAqIERlY2lkZXMgYmFzZWQgb24gbG9jYWwgZWxlbWVudCBhdHRyaWJ1dGVzIGFuZCBnbG9iYWwgY29uZmlnLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQKCSAqLwoJZnVuY3Rpb24gc2hvdWxkUHJlbG9hZCggZWxlbWVudCApIHsKCgkJLy8gUHJlZmVyIGFuIGV4cGxpY2l0IGdsb2JhbCBwcmVsb2FkIHNldHRpbmcKCQl2YXIgcHJlbG9hZCA9IGNvbmZpZy5wcmVsb2FkSWZyYW1lczsKCgkJLy8gSWYgbm8gZ2xvYmFsIHNldHRpbmcgaXMgYXZhaWxhYmxlLCBmYWxsIGJhY2sgb24gdGhlIGVsZW1lbnQncwoJCS8vIG93biBwcmVsb2FkIHNldHRpbmcKCQlpZiggdHlwZW9mIHByZWxvYWQgIT09ICdib29sZWFuJyApIHsKCQkJcHJlbG9hZCA9IGVsZW1lbnQuaGFzQXR0cmlidXRlKCAnZGF0YS1wcmVsb2FkJyApOwoJCX0KCgkJcmV0dXJuIHByZWxvYWQ7Cgl9CgoJLyoqCgkgKiBDYWxsZWQgd2hlbiB0aGUgZ2l2ZW4gc2xpZGUgaXMgd2l0aGluIHRoZSBjb25maWd1cmVkIHZpZXcKCSAqIGRpc3RhbmNlLiBTaG93cyB0aGUgc2xpZGUgZWxlbWVudCBhbmQgbG9hZHMgYW55IGNvbnRlbnQKCSAqIHRoYXQgaXMgc2V0IHRvIGxvYWQgbGF6aWx5IChkYXRhLXNyYykuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gc2xpZGUgU2xpZGUgdG8gc2hvdwoJICovCglmdW5jdGlvbiBsb2FkU2xpZGUoIHNsaWRlLCBvcHRpb25zICkgewoKCQlvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCgkJLy8gU2hvdyB0aGUgc2xpZGUgZWxlbWVudAoJCXNsaWRlLnN0eWxlLmRpc3BsYXkgPSBjb25maWcuZGlzcGxheTsKCgkJLy8gTWVkaWEgZWxlbWVudHMgd2l0aCBkYXRhLXNyYyBhdHRyaWJ1dGVzCgkJdG9BcnJheSggc2xpZGUucXVlcnlTZWxlY3RvckFsbCggJ2ltZ1tkYXRhLXNyY10sIHZpZGVvW2RhdGEtc3JjXSwgYXVkaW9bZGF0YS1zcmNdLCBpZnJhbWVbZGF0YS1zcmNdJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJCWlmKCBlbGVtZW50LnRhZ05hbWUgIT09ICdJRlJBTUUnIHx8IHNob3VsZFByZWxvYWQoIGVsZW1lbnQgKSApIHsKCQkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAnc3JjJywgZWxlbWVudC5nZXRBdHRyaWJ1dGUoICdkYXRhLXNyYycgKSApOwoJCQkJZWxlbWVudC5zZXRBdHRyaWJ1dGUoICdkYXRhLWxhenktbG9hZGVkJywgJycgKTsKCQkJCWVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCAnZGF0YS1zcmMnICk7CgkJCX0KCQl9ICk7CgoJCS8vIE1lZGlhIGVsZW1lbnRzIHdpdGggPHNvdXJjZT4gY2hpbGRyZW4KCQl0b0FycmF5KCBzbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAndmlkZW8sIGF1ZGlvJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIG1lZGlhICkgewoJCQl2YXIgc291cmNlcyA9IDA7CgoJCQl0b0FycmF5KCBtZWRpYS5xdWVyeVNlbGVjdG9yQWxsKCAnc291cmNlW2RhdGEtc3JjXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBzb3VyY2UgKSB7CgkJCQlzb3VyY2Uuc2V0QXR0cmlidXRlKCAnc3JjJywgc291cmNlLmdldEF0dHJpYnV0ZSggJ2RhdGEtc3JjJyApICk7CgkJCQlzb3VyY2UucmVtb3ZlQXR0cmlidXRlKCAnZGF0YS1zcmMnICk7CgkJCQlzb3VyY2Uuc2V0QXR0cmlidXRlKCAnZGF0YS1sYXp5LWxvYWRlZCcsICcnICk7CgkJCQlzb3VyY2VzICs9IDE7CgkJCX0gKTsKCgkJCS8vIElmIHdlIHJld3JvdGUgc291cmNlcyBmb3IgdGhpcyB2aWRlby9hdWRpbyBlbGVtZW50LCB3ZSBuZWVkCgkJCS8vIHRvIG1hbnVhbGx5IHRlbGwgaXQgdG8gbG9hZCBmcm9tIGl0cyBuZXcgb3JpZ2luCgkJCWlmKCBzb3VyY2VzID4gMCApIHsKCQkJCW1lZGlhLmxvYWQoKTsKCQkJfQoJCX0gKTsKCgoJCS8vIFNob3cgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBlbGVtZW50CgkJdmFyIGJhY2tncm91bmQgPSBzbGlkZS5zbGlkZUJhY2tncm91bmRFbGVtZW50OwoJCWlmKCBiYWNrZ3JvdW5kICkgewoJCQliYWNrZ3JvdW5kLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKCQkJdmFyIGJhY2tncm91bmRDb250ZW50ID0gc2xpZGUuc2xpZGVCYWNrZ3JvdW5kQ29udGVudEVsZW1lbnQ7CgkJCXZhciBiYWNrZ3JvdW5kSWZyYW1lID0gc2xpZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLWlmcmFtZScgKTsKCgkJCS8vIElmIHRoZSBiYWNrZ3JvdW5kIGNvbnRhaW5zIG1lZGlhLCBsb2FkIGl0CgkJCWlmKCBiYWNrZ3JvdW5kLmhhc0F0dHJpYnV0ZSggJ2RhdGEtbG9hZGVkJyApID09PSBmYWxzZSApIHsKCQkJCWJhY2tncm91bmQuc2V0QXR0cmlidXRlKCAnZGF0YS1sb2FkZWQnLCAndHJ1ZScgKTsKCgkJCQl2YXIgYmFja2dyb3VuZEltYWdlID0gc2xpZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLWltYWdlJyApLAoJCQkJCWJhY2tncm91bmRWaWRlbyA9IHNsaWRlLmdldEF0dHJpYnV0ZSggJ2RhdGEtYmFja2dyb3VuZC12aWRlbycgKSwKCQkJCQliYWNrZ3JvdW5kVmlkZW9Mb29wID0gc2xpZGUuaGFzQXR0cmlidXRlKCAnZGF0YS1iYWNrZ3JvdW5kLXZpZGVvLWxvb3AnICksCgkJCQkJYmFja2dyb3VuZFZpZGVvTXV0ZWQgPSBzbGlkZS5oYXNBdHRyaWJ1dGUoICdkYXRhLWJhY2tncm91bmQtdmlkZW8tbXV0ZWQnICk7CgoJCQkJLy8gSW1hZ2VzCgkJCQlpZiggYmFja2dyb3VuZEltYWdlICkgewoJCQkJCWJhY2tncm91bmRDb250ZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoJysgZW5jb2RlVVJJKCBiYWNrZ3JvdW5kSW1hZ2UgKSArJyknOwoJCQkJfQoJCQkJLy8gVmlkZW9zCgkJCQllbHNlIGlmICggYmFja2dyb3VuZFZpZGVvICYmICFpc1NwZWFrZXJOb3RlcygpICkgewoJCQkJCXZhciB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICd2aWRlbycgKTsKCgkJCQkJaWYoIGJhY2tncm91bmRWaWRlb0xvb3AgKSB7CgkJCQkJCXZpZGVvLnNldEF0dHJpYnV0ZSggJ2xvb3AnLCAnJyApOwoJCQkJCX0KCgkJCQkJaWYoIGJhY2tncm91bmRWaWRlb011dGVkICkgewoJCQkJCQl2aWRlby5tdXRlZCA9IHRydWU7CgkJCQkJfQoKCQkJCQkvLyBJbmxpbmUgdmlkZW8gcGxheWJhY2sgd29ya3MgKGF0IGxlYXN0IGluIE1vYmlsZSBTYWZhcmkpIGFzCgkJCQkJLy8gbG9uZyBhcyB0aGUgdmlkZW8gaXMgbXV0ZWQgYW5kIHRoZSBgcGxheXNpbmxpbmVgIGF0dHJpYnV0ZSBpcwoJCQkJCS8vIHByZXNlbnQKCQkJCQlpZiggaXNNb2JpbGVEZXZpY2UgKSB7CgkJCQkJCXZpZGVvLm11dGVkID0gdHJ1ZTsKCQkJCQkJdmlkZW8uYXV0b3BsYXkgPSB0cnVlOwoJCQkJCQl2aWRlby5zZXRBdHRyaWJ1dGUoICdwbGF5c2lubGluZScsICcnICk7CgkJCQkJfQoKCQkJCQkvLyBTdXBwb3J0IGNvbW1hIHNlcGFyYXRlZCBsaXN0cyBvZiB2aWRlbyBzb3VyY2VzCgkJCQkJYmFja2dyb3VuZFZpZGVvLnNwbGl0KCAnLCcgKS5mb3JFYWNoKCBmdW5jdGlvbiggc291cmNlICkgewoJCQkJCQl2aWRlby5pbm5lckhUTUwgKz0gJzxzb3VyY2Ugc3JjPSInKyBzb3VyY2UgKyciPic7CgkJCQkJfSApOwoKCQkJCQliYWNrZ3JvdW5kQ29udGVudC5hcHBlbmRDaGlsZCggdmlkZW8gKTsKCQkJCX0KCQkJCS8vIElmcmFtZXMKCQkJCWVsc2UgaWYoIGJhY2tncm91bmRJZnJhbWUgJiYgb3B0aW9ucy5leGNsdWRlSWZyYW1lcyAhPT0gdHJ1ZSApIHsKCQkJCQl2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2lmcmFtZScgKTsKCQkJCQlpZnJhbWUuc2V0QXR0cmlidXRlKCAnYWxsb3dmdWxsc2NyZWVuJywgJycgKTsKCQkJCQlpZnJhbWUuc2V0QXR0cmlidXRlKCAnbW96YWxsb3dmdWxsc2NyZWVuJywgJycgKTsKCQkJCQlpZnJhbWUuc2V0QXR0cmlidXRlKCAnd2Via2l0YWxsb3dmdWxsc2NyZWVuJywgJycgKTsKCgkJCQkJaWZyYW1lLnNldEF0dHJpYnV0ZSggJ2RhdGEtc3JjJywgYmFja2dyb3VuZElmcmFtZSApOwoKCQkJCQlpZnJhbWUuc3R5bGUud2lkdGggID0gJzEwMCUnOwoJCQkJCWlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7CgkJCQkJaWZyYW1lLnN0eWxlLm1heEhlaWdodCA9ICcxMDAlJzsKCQkJCQlpZnJhbWUuc3R5bGUubWF4V2lkdGggPSAnMTAwJSc7CgoJCQkJCWJhY2tncm91bmRDb250ZW50LmFwcGVuZENoaWxkKCBpZnJhbWUgKTsKCQkJCX0KCQkJfQoKCQkJLy8gU3RhcnQgbG9hZGluZyBwcmVsb2FkYWJsZSBpZnJhbWVzCgkJCXZhciBiYWNrZ3JvdW5kSWZyYW1lRWxlbWVudCA9IGJhY2tncm91bmRDb250ZW50LnF1ZXJ5U2VsZWN0b3IoICdpZnJhbWVbZGF0YS1zcmNdJyApOwoJCQlpZiggYmFja2dyb3VuZElmcmFtZUVsZW1lbnQgKSB7CgoJCQkJLy8gQ2hlY2sgaWYgdGhpcyBpZnJhbWUgaXMgZWxpZ2libGUgdG8gYmUgcHJlbG9hZGVkCgkJCQlpZiggc2hvdWxkUHJlbG9hZCggYmFja2dyb3VuZCApICYmICEvYXV0b3BsYXk9KDF8dHJ1ZXx5ZXMpL2dpLnRlc3QoIGJhY2tncm91bmRJZnJhbWUgKSApIHsKCQkJCQlpZiggYmFja2dyb3VuZElmcmFtZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCAnc3JjJyApICE9PSBiYWNrZ3JvdW5kSWZyYW1lICkgewoJCQkJCQliYWNrZ3JvdW5kSWZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoICdzcmMnLCBiYWNrZ3JvdW5kSWZyYW1lICk7CgkJCQkJfQoJCQkJfQoKCQkJfQoKCQl9CgoJfQoKCS8qKgoJICogVW5sb2FkcyBhbmQgaGlkZXMgdGhlIGdpdmVuIHNsaWRlLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZQoJICogc2xpZGUgaXMgbW92ZWQgb3V0c2lkZSBvZiB0aGUgY29uZmlndXJlZCB2aWV3IGRpc3RhbmNlLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHNsaWRlCgkgKi8KCWZ1bmN0aW9uIHVubG9hZFNsaWRlKCBzbGlkZSApIHsKCgkJLy8gSGlkZSB0aGUgc2xpZGUgZWxlbWVudAoJCXNsaWRlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgoJCS8vIEhpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBlbGVtZW50CgkJdmFyIGJhY2tncm91bmQgPSBnZXRTbGlkZUJhY2tncm91bmQoIHNsaWRlICk7CgkJaWYoIGJhY2tncm91bmQgKSB7CgkJCWJhY2tncm91bmQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCgkJCS8vIFVubG9hZCBhbnkgYmFja2dyb3VuZCBpZnJhbWVzCgkJCXRvQXJyYXkoIGJhY2tncm91bmQucXVlcnlTZWxlY3RvckFsbCggJ2lmcmFtZVtzcmNdJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJCQllbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSggJ3NyYycgKTsKCQkJfSApOwoJCX0KCgkJLy8gUmVzZXQgbGF6eS1sb2FkZWQgbWVkaWEgZWxlbWVudHMgd2l0aCBzcmMgYXR0cmlidXRlcwoJCXRvQXJyYXkoIHNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICd2aWRlb1tkYXRhLWxhenktbG9hZGVkXVtzcmNdLCBhdWRpb1tkYXRhLWxhenktbG9hZGVkXVtzcmNdLCBpZnJhbWVbZGF0YS1sYXp5LWxvYWRlZF1bc3JjXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJCQllbGVtZW50LnNldEF0dHJpYnV0ZSggJ2RhdGEtc3JjJywgZWxlbWVudC5nZXRBdHRyaWJ1dGUoICdzcmMnICkgKTsKCQkJZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoICdzcmMnICk7CgkJfSApOwoKCQkvLyBSZXNldCBsYXp5LWxvYWRlZCBtZWRpYSBlbGVtZW50cyB3aXRoIDxzb3VyY2U+IGNoaWxkcmVuCgkJdG9BcnJheSggc2xpZGUucXVlcnlTZWxlY3RvckFsbCggJ3ZpZGVvW2RhdGEtbGF6eS1sb2FkZWRdIHNvdXJjZVtzcmNdLCBhdWRpbyBzb3VyY2Vbc3JjXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBzb3VyY2UgKSB7CgkJCXNvdXJjZS5zZXRBdHRyaWJ1dGUoICdkYXRhLXNyYycsIHNvdXJjZS5nZXRBdHRyaWJ1dGUoICdzcmMnICkgKTsKCQkJc291cmNlLnJlbW92ZUF0dHJpYnV0ZSggJ3NyYycgKTsKCQl9ICk7CgoJfQoKCS8qKgoJICogRGV0ZXJtaW5lIHdoYXQgYXZhaWxhYmxlIHJvdXRlcyB0aGVyZSBhcmUgZm9yIG5hdmlnYXRpb24uCgkgKgoJICogQHJldHVybiB7e2xlZnQ6IGJvb2xlYW4sIHJpZ2h0OiBib29sZWFuLCB1cDogYm9vbGVhbiwgZG93bjogYm9vbGVhbn19CgkgKi8KCWZ1bmN0aW9uIGF2YWlsYWJsZVJvdXRlcygpIHsKCgkJdmFyIGhvcml6b250YWxTbGlkZXMgPSBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBIT1JJWk9OVEFMX1NMSURFU19TRUxFQ1RPUiApLAoJCQl2ZXJ0aWNhbFNsaWRlcyA9IGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIFZFUlRJQ0FMX1NMSURFU19TRUxFQ1RPUiApOwoKCQl2YXIgcm91dGVzID0gewoJCQlsZWZ0OiBpbmRleGggPiAwLAoJCQlyaWdodDogaW5kZXhoIDwgaG9yaXpvbnRhbFNsaWRlcy5sZW5ndGggLSAxLAoJCQl1cDogaW5kZXh2ID4gMCwKCQkJZG93bjogaW5kZXh2IDwgdmVydGljYWxTbGlkZXMubGVuZ3RoIC0gMQoJCX07CgoJCS8vIExvb3BlZCBwcmVzZW50YXRpb25zIGNhbiBhbHdheXMgYmUgbmF2aWdhdGVkIGFzIGxvbmcgYXMKCQkvLyB0aGVyZSBhcmUgc2xpZGVzIGF2YWlsYWJsZQoJCWlmKCBjb25maWcubG9vcCApIHsKCQkJaWYoIGhvcml6b250YWxTbGlkZXMubGVuZ3RoID4gMSApIHsKCQkJCXJvdXRlcy5sZWZ0ID0gdHJ1ZTsKCQkJCXJvdXRlcy5yaWdodCA9IHRydWU7CgkJCX0KCgkJCWlmKCB2ZXJ0aWNhbFNsaWRlcy5sZW5ndGggPiAxICkgewoJCQkJcm91dGVzLnVwID0gdHJ1ZTsKCQkJCXJvdXRlcy5kb3duID0gdHJ1ZTsKCQkJfQoJCX0KCgkJLy8gUmV2ZXJzZSBob3Jpem9udGFsIGNvbnRyb2xzIGZvciBydGwKCQlpZiggY29uZmlnLnJ0bCApIHsKCQkJdmFyIGxlZnQgPSByb3V0ZXMubGVmdDsKCQkJcm91dGVzLmxlZnQgPSByb3V0ZXMucmlnaHQ7CgkJCXJvdXRlcy5yaWdodCA9IGxlZnQ7CgkJfQoKCQlyZXR1cm4gcm91dGVzOwoKCX0KCgkvKioKCSAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGF2YWlsYWJsZSBmcmFnbWVudAoJICogZGlyZWN0aW9ucy4KCSAqCgkgKiBAcmV0dXJuIHt7cHJldjogYm9vbGVhbiwgbmV4dDogYm9vbGVhbn19CgkgKi8KCWZ1bmN0aW9uIGF2YWlsYWJsZUZyYWdtZW50cygpIHsKCgkJaWYoIGN1cnJlbnRTbGlkZSAmJiBjb25maWcuZnJhZ21lbnRzICkgewoJCQl2YXIgZnJhZ21lbnRzID0gY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICk7CgkJCXZhciBoaWRkZW5GcmFnbWVudHMgPSBjdXJyZW50U2xpZGUucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudDpub3QoLnZpc2libGUpJyApOwoKCQkJcmV0dXJuIHsKCQkJCXByZXY6IGZyYWdtZW50cy5sZW5ndGggLSBoaWRkZW5GcmFnbWVudHMubGVuZ3RoID4gMCwKCQkJCW5leHQ6ICEhaGlkZGVuRnJhZ21lbnRzLmxlbmd0aAoJCQl9OwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIHsgcHJldjogZmFsc2UsIG5leHQ6IGZhbHNlIH07CgkJfQoKCX0KCgkvKioKCSAqIEVuZm9yY2VzIG9yaWdpbi1zcGVjaWZpYyBmb3JtYXQgcnVsZXMgZm9yIGVtYmVkZGVkIG1lZGlhLgoJICovCglmdW5jdGlvbiBmb3JtYXRFbWJlZGRlZENvbnRlbnQoKSB7CgoJCXZhciBfYXBwZW5kUGFyYW1Ub0lmcmFtZVNvdXJjZSA9IGZ1bmN0aW9uKCBzb3VyY2VBdHRyaWJ1dGUsIHNvdXJjZVVSTCwgcGFyYW0gKSB7CgkJCXRvQXJyYXkoIGRvbS5zbGlkZXMucXVlcnlTZWxlY3RvckFsbCggJ2lmcmFtZVsnKyBzb3VyY2VBdHRyaWJ1dGUgKycqPSInKyBzb3VyY2VVUkwgKyciXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCXZhciBzcmMgPSBlbC5nZXRBdHRyaWJ1dGUoIHNvdXJjZUF0dHJpYnV0ZSApOwoJCQkJaWYoIHNyYyAmJiBzcmMuaW5kZXhPZiggcGFyYW0gKSA9PT0gLTEgKSB7CgkJCQkJZWwuc2V0QXR0cmlidXRlKCBzb3VyY2VBdHRyaWJ1dGUsIHNyYyArICggIS9cPy8udGVzdCggc3JjICkgPyAnPycgOiAnJicgKSArIHBhcmFtICk7CgkJCQl9CgkJCX0pOwoJCX07CgoJCS8vIFlvdVR1YmUgZnJhbWVzIG11c3QgaW5jbHVkZSAiP2VuYWJsZWpzYXBpPTEiCgkJX2FwcGVuZFBhcmFtVG9JZnJhbWVTb3VyY2UoICdzcmMnLCAneW91dHViZS5jb20vZW1iZWQvJywgJ2VuYWJsZWpzYXBpPTEnICk7CgkJX2FwcGVuZFBhcmFtVG9JZnJhbWVTb3VyY2UoICdkYXRhLXNyYycsICd5b3V0dWJlLmNvbS9lbWJlZC8nLCAnZW5hYmxlanNhcGk9MScgKTsKCgkJLy8gVmltZW8gZnJhbWVzIG11c3QgaW5jbHVkZSAiP2FwaT0xIgoJCV9hcHBlbmRQYXJhbVRvSWZyYW1lU291cmNlKCAnc3JjJywgJ3BsYXllci52aW1lby5jb20vJywgJ2FwaT0xJyApOwoJCV9hcHBlbmRQYXJhbVRvSWZyYW1lU291cmNlKCAnZGF0YS1zcmMnLCAncGxheWVyLnZpbWVvLmNvbS8nLCAnYXBpPTEnICk7CgoJfQoKCS8qKgoJICogU3RhcnQgcGxheWJhY2sgb2YgYW55IGVtYmVkZGVkIGNvbnRlbnQgaW5zaWRlIG9mCgkgKiB0aGUgZ2l2ZW4gZWxlbWVudC4KCSAqCgkgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50CgkgKi8KCWZ1bmN0aW9uIHN0YXJ0RW1iZWRkZWRDb250ZW50KCBlbGVtZW50ICkgewoKCQlpZiggZWxlbWVudCAmJiAhaXNTcGVha2VyTm90ZXMoKSApIHsKCgkJCS8vIFJlc3RhcnQgR0lGcwoJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICdpbWdbc3JjJD0iLmdpZiJdJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgewoJCQkJLy8gU2V0dGluZyB0aGUgc2FtZSB1bmNoYW5nZWQgc291cmNlIGxpa2UgdGhpcyB3YXMgY29uZmlybWVkCgkJCQkvLyB0byB3b3JrIGluIENocm9tZSwgRkYgJiBTYWZhcmkKCQkJCWVsLnNldEF0dHJpYnV0ZSggJ3NyYycsIGVsLmdldEF0dHJpYnV0ZSggJ3NyYycgKSApOwoJCQl9ICk7CgoJCQkvLyBIVE1MNSBtZWRpYSBlbGVtZW50cwoJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICd2aWRlbywgYXVkaW8nICkgKS5mb3JFYWNoKCBmdW5jdGlvbiggZWwgKSB7CgkJCQlpZiggY2xvc2VzdFBhcmVudCggZWwsICcuZnJhZ21lbnQnICkgJiYgIWNsb3Nlc3RQYXJlbnQoIGVsLCAnLmZyYWdtZW50LnZpc2libGUnICkgKSB7CgkJCQkJcmV0dXJuOwoJCQkJfQoKCQkJCS8vIFByZWZlciBhbiBleHBsaWNpdCBnbG9iYWwgYXV0b3BsYXkgc2V0dGluZwoJCQkJdmFyIGF1dG9wbGF5ID0gY29uZmlnLmF1dG9QbGF5TWVkaWE7CgoJCQkJLy8gSWYgbm8gZ2xvYmFsIHNldHRpbmcgaXMgYXZhaWxhYmxlLCBmYWxsIGJhY2sgb24gdGhlIGVsZW1lbnQncwoJCQkJLy8gb3duIGF1dG9wbGF5IHNldHRpbmcKCQkJCWlmKCB0eXBlb2YgYXV0b3BsYXkgIT09ICdib29sZWFuJyApIHsKCQkJCQlhdXRvcGxheSA9IGVsLmhhc0F0dHJpYnV0ZSggJ2RhdGEtYXV0b3BsYXknICkgfHwgISFjbG9zZXN0UGFyZW50KCBlbCwgJy5zbGlkZS1iYWNrZ3JvdW5kJyApOwoJCQkJfQoKCQkJCWlmKCBhdXRvcGxheSAmJiB0eXBlb2YgZWwucGxheSA9PT0gJ2Z1bmN0aW9uJyApIHsKCgkJCQkJLy8gSWYgdGhlIG1lZGlhIGlzIHJlYWR5LCBzdGFydCBwbGF5YmFjawoJCQkJCWlmKCBlbC5yZWFkeVN0YXRlID4gMSApIHsKCQkJCQkJc3RhcnRFbWJlZGRlZE1lZGlhKCB7IHRhcmdldDogZWwgfSApOwoJCQkJCX0KCQkJCQkvLyBNb2JpbGUgZGV2aWNlcyBuZXZlciBmaXJlIGEgbG9hZGVkIGV2ZW50IHNvIGluc3RlYWQKCQkJCQkvLyBvZiB3YWl0aW5nLCB3ZSBpbml0aWF0ZSBwbGF5YmFjawoJCQkJCWVsc2UgaWYoIGlzTW9iaWxlRGV2aWNlICkgewoJCQkJCQl2YXIgcHJvbWlzZSA9IGVsLnBsYXkoKTsKCgkJCQkJCS8vIElmIGF1dG9wbGF5IGRvZXMgbm90IHdvcmssIGVuc3VyZSB0aGF0IHRoZSBjb250cm9scyBhcmUgdmlzaWJsZSBzbwoJCQkJCQkvLyB0aGF0IHRoZSB2aWV3ZXIgY2FuIHN0YXJ0IHRoZSBtZWRpYSBvbiB0aGVpciBvd24KCQkJCQkJaWYoIHByb21pc2UgJiYgdHlwZW9mIHByb21pc2UuY2F0Y2ggPT09ICdmdW5jdGlvbicgJiYgZWwuY29udHJvbHMgPT09IGZhbHNlICkgewoJCQkJCQkJcHJvbWlzZS5jYXRjaCggZnVuY3Rpb24oKSB7CgkJCQkJCQkJZWwuY29udHJvbHMgPSB0cnVlOwoKCQkJCQkJCQkvLyBPbmNlIHRoZSB2aWRlbyBkb2VzIHN0YXJ0IHBsYXlpbmcsIGhpZGUgdGhlIGNvbnRyb2xzIGFnYWluCgkJCQkJCQkJZWwuYWRkRXZlbnRMaXN0ZW5lciggJ3BsYXknLCBmdW5jdGlvbigpIHsKCQkJCQkJCQkJZWwuY29udHJvbHMgPSBmYWxzZTsKCQkJCQkJCQl9ICk7CgkJCQkJCQl9ICk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJLy8gSWYgdGhlIG1lZGlhIGlzbid0IGxvYWRlZCwgd2FpdCBiZWZvcmUgcGxheWluZwoJCQkJCWVsc2UgewoJCQkJCQllbC5yZW1vdmVFdmVudExpc3RlbmVyKCAnbG9hZGVkZGF0YScsIHN0YXJ0RW1iZWRkZWRNZWRpYSApOyAvLyByZW1vdmUgZmlyc3QgdG8gYXZvaWQgZHVwZXMKCQkJCQkJZWwuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWRlZGRhdGEnLCBzdGFydEVtYmVkZGVkTWVkaWEgKTsKCQkJCQl9CgoJCQkJfQoJCQl9ICk7CgoJCQkvLyBOb3JtYWwgaWZyYW1lcwoJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICdpZnJhbWVbc3JjXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCWlmKCBjbG9zZXN0UGFyZW50KCBlbCwgJy5mcmFnbWVudCcgKSAmJiAhY2xvc2VzdFBhcmVudCggZWwsICcuZnJhZ21lbnQudmlzaWJsZScgKSApIHsKCQkJCQlyZXR1cm47CgkJCQl9CgoJCQkJc3RhcnRFbWJlZGRlZElmcmFtZSggeyB0YXJnZXQ6IGVsIH0gKTsKCQkJfSApOwoKCQkJLy8gTGF6eSBsb2FkaW5nIGlmcmFtZXMKCQkJdG9BcnJheSggZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnaWZyYW1lW2RhdGEtc3JjXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCWlmKCBjbG9zZXN0UGFyZW50KCBlbCwgJy5mcmFnbWVudCcgKSAmJiAhY2xvc2VzdFBhcmVudCggZWwsICcuZnJhZ21lbnQudmlzaWJsZScgKSApIHsKCQkJCQlyZXR1cm47CgkJCQl9CgoJCQkJaWYoIGVsLmdldEF0dHJpYnV0ZSggJ3NyYycgKSAhPT0gZWwuZ2V0QXR0cmlidXRlKCAnZGF0YS1zcmMnICkgKSB7CgkJCQkJZWwucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCBzdGFydEVtYmVkZGVkSWZyYW1lICk7IC8vIHJlbW92ZSBmaXJzdCB0byBhdm9pZCBkdXBlcwoJCQkJCWVsLmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkJywgc3RhcnRFbWJlZGRlZElmcmFtZSApOwoJCQkJCWVsLnNldEF0dHJpYnV0ZSggJ3NyYycsIGVsLmdldEF0dHJpYnV0ZSggJ2RhdGEtc3JjJyApICk7CgkJCQl9CgkJCX0gKTsKCgkJfQoKCX0KCgkvKioKCSAqIFN0YXJ0cyBwbGF5aW5nIGFuIGVtYmVkZGVkIHZpZGVvL2F1ZGlvIGVsZW1lbnQgYWZ0ZXIKCSAqIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBzdGFydEVtYmVkZGVkTWVkaWEoIGV2ZW50ICkgewoKCQl2YXIgaXNBdHRhY2hlZFRvRE9NID0gISFjbG9zZXN0UGFyZW50KCBldmVudC50YXJnZXQsICdodG1sJyApLAoJCQlpc1Zpc2libGUgIAkJPSAhIWNsb3Nlc3RQYXJlbnQoIGV2ZW50LnRhcmdldCwgJy5wcmVzZW50JyApOwoKCQlpZiggaXNBdHRhY2hlZFRvRE9NICYmIGlzVmlzaWJsZSApIHsKCQkJZXZlbnQudGFyZ2V0LmN1cnJlbnRUaW1lID0gMDsKCQkJZXZlbnQudGFyZ2V0LnBsYXkoKTsKCQl9CgoJCWV2ZW50LnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCAnbG9hZGVkZGF0YScsIHN0YXJ0RW1iZWRkZWRNZWRpYSApOwoKCX0KCgkvKioKCSAqICJTdGFydHMiIHRoZSBjb250ZW50IG9mIGFuIGVtYmVkZGVkIGlmcmFtZSB1c2luZyB0aGUKCSAqIHBvc3RNZXNzYWdlIEFQSS4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gc3RhcnRFbWJlZGRlZElmcmFtZSggZXZlbnQgKSB7CgoJCXZhciBpZnJhbWUgPSBldmVudC50YXJnZXQ7CgoJCWlmKCBpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cgKSB7CgoJCQl2YXIgaXNBdHRhY2hlZFRvRE9NID0gISFjbG9zZXN0UGFyZW50KCBldmVudC50YXJnZXQsICdodG1sJyApLAoJCQkJaXNWaXNpYmxlICAJCT0gISFjbG9zZXN0UGFyZW50KCBldmVudC50YXJnZXQsICcucHJlc2VudCcgKTsKCgkJCWlmKCBpc0F0dGFjaGVkVG9ET00gJiYgaXNWaXNpYmxlICkgewoKCQkJCS8vIFByZWZlciBhbiBleHBsaWNpdCBnbG9iYWwgYXV0b3BsYXkgc2V0dGluZwoJCQkJdmFyIGF1dG9wbGF5ID0gY29uZmlnLmF1dG9QbGF5TWVkaWE7CgoJCQkJLy8gSWYgbm8gZ2xvYmFsIHNldHRpbmcgaXMgYXZhaWxhYmxlLCBmYWxsIGJhY2sgb24gdGhlIGVsZW1lbnQncwoJCQkJLy8gb3duIGF1dG9wbGF5IHNldHRpbmcKCQkJCWlmKCB0eXBlb2YgYXV0b3BsYXkgIT09ICdib29sZWFuJyApIHsKCQkJCQlhdXRvcGxheSA9IGlmcmFtZS5oYXNBdHRyaWJ1dGUoICdkYXRhLWF1dG9wbGF5JyApIHx8ICEhY2xvc2VzdFBhcmVudCggaWZyYW1lLCAnLnNsaWRlLWJhY2tncm91bmQnICk7CgkJCQl9CgoJCQkJLy8gWW91VHViZSBwb3N0TWVzc2FnZSBBUEkKCQkJCWlmKCAveW91dHViZVwuY29tXC9lbWJlZFwvLy50ZXN0KCBpZnJhbWUuZ2V0QXR0cmlidXRlKCAnc3JjJyApICkgJiYgYXV0b3BsYXkgKSB7CgkJCQkJaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoICd7ImV2ZW50IjoiY29tbWFuZCIsImZ1bmMiOiJwbGF5VmlkZW8iLCJhcmdzIjoiIn0nLCAnKicgKTsKCQkJCX0KCQkJCS8vIFZpbWVvIHBvc3RNZXNzYWdlIEFQSQoJCQkJZWxzZSBpZiggL3BsYXllclwudmltZW9cLmNvbVwvLy50ZXN0KCBpZnJhbWUuZ2V0QXR0cmlidXRlKCAnc3JjJyApICkgJiYgYXV0b3BsYXkgKSB7CgkJCQkJaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoICd7Im1ldGhvZCI6InBsYXkifScsICcqJyApOwoJCQkJfQoJCQkJLy8gR2VuZXJpYyBwb3N0TWVzc2FnZSBBUEkKCQkJCWVsc2UgewoJCQkJCWlmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCAnc2xpZGU6c3RhcnQnLCAnKicgKTsKCQkJCX0KCgkJCX0KCgkJfQoKCX0KCgkvKioKCSAqIFN0b3AgcGxheWJhY2sgb2YgYW55IGVtYmVkZGVkIGNvbnRlbnQgaW5zaWRlIG9mCgkgKiB0aGUgdGFyZ2V0ZWQgc2xpZGUuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudAoJICovCglmdW5jdGlvbiBzdG9wRW1iZWRkZWRDb250ZW50KCBlbGVtZW50LCBvcHRpb25zICkgewoKCQlvcHRpb25zID0gZXh0ZW5kKCB7CgkJCS8vIERlZmF1bHRzCgkJCXVubG9hZElmcmFtZXM6IHRydWUKCQl9LCBvcHRpb25zIHx8IHt9ICk7CgoJCWlmKCBlbGVtZW50ICYmIGVsZW1lbnQucGFyZW50Tm9kZSApIHsKCQkJLy8gSFRNTDUgbWVkaWEgZWxlbWVudHMKCQkJdG9BcnJheSggZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCAndmlkZW8sIGF1ZGlvJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgewoJCQkJaWYoICFlbC5oYXNBdHRyaWJ1dGUoICdkYXRhLWlnbm9yZScgKSAmJiB0eXBlb2YgZWwucGF1c2UgPT09ICdmdW5jdGlvbicgKSB7CgkJCQkJZWwuc2V0QXR0cmlidXRlKCdkYXRhLXBhdXNlZC1ieS1yZXZlYWwnLCAnJyk7CgkJCQkJZWwucGF1c2UoKTsKCQkJCX0KCQkJfSApOwoKCQkJLy8gR2VuZXJpYyBwb3N0TWVzc2FnZSBBUEkgZm9yIG5vbi1sYXp5IGxvYWRlZCBpZnJhbWVzCgkJCXRvQXJyYXkoIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCggJ2lmcmFtZScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCWlmKCBlbC5jb250ZW50V2luZG93ICkgZWwuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSggJ3NsaWRlOnN0b3AnLCAnKicgKTsKCQkJCWVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdsb2FkJywgc3RhcnRFbWJlZGRlZElmcmFtZSApOwoJCQl9KTsKCgkJCS8vIFlvdVR1YmUgcG9zdE1lc3NhZ2UgQVBJCgkJCXRvQXJyYXkoIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCggJ2lmcmFtZVtzcmMqPSJ5b3V0dWJlLmNvbS9lbWJlZC8iXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCWlmKCAhZWwuaGFzQXR0cmlidXRlKCAnZGF0YS1pZ25vcmUnICkgJiYgZWwuY29udGVudFdpbmRvdyAmJiB0eXBlb2YgZWwuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCQllbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCAneyJldmVudCI6ImNvbW1hbmQiLCJmdW5jIjoicGF1c2VWaWRlbyIsImFyZ3MiOiIifScsICcqJyApOwoJCQkJfQoJCQl9KTsKCgkJCS8vIFZpbWVvIHBvc3RNZXNzYWdlIEFQSQoJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICdpZnJhbWVbc3JjKj0icGxheWVyLnZpbWVvLmNvbS8iXScgKSApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCApIHsKCQkJCWlmKCAhZWwuaGFzQXR0cmlidXRlKCAnZGF0YS1pZ25vcmUnICkgJiYgZWwuY29udGVudFdpbmRvdyAmJiB0eXBlb2YgZWwuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCQllbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCAneyJtZXRob2QiOiJwYXVzZSJ9JywgJyonICk7CgkJCQl9CgkJCX0pOwoKCQkJaWYoIG9wdGlvbnMudW5sb2FkSWZyYW1lcyA9PT0gdHJ1ZSApIHsKCQkJCS8vIFVubG9hZCBsYXp5LWxvYWRlZCBpZnJhbWVzCgkJCQl0b0FycmF5KCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICdpZnJhbWVbZGF0YS1zcmNdJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgewoJCQkJCS8vIE9ubHkgcmVtb3ZpbmcgdGhlIHNyYyBkb2Vzbid0IGFjdHVhbGx5IHVubG9hZCB0aGUgZnJhbWUKCQkJCQkvLyBpbiBhbGwgYnJvd3NlcnMgKEZpcmVmb3gpIHNvIHdlIHNldCBpdCB0byBibGFuayBmaXJzdAoJCQkJCWVsLnNldEF0dHJpYnV0ZSggJ3NyYycsICdhYm91dDpibGFuaycgKTsKCQkJCQllbC5yZW1vdmVBdHRyaWJ1dGUoICdzcmMnICk7CgkJCQl9ICk7CgkJCX0KCQl9CgoJfQoKCS8qKgoJICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhc3Qgc2xpZGVzLiBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgZ2xvYmFsCgkgKiBmbGF0dGVuZWQgaW5kZXggZm9yIHNsaWRlcy4KCSAqCgkgKiBAcmV0dXJuIHtudW1iZXJ9IFBhc3Qgc2xpZGUgY291bnQKCSAqLwoJZnVuY3Rpb24gZ2V0U2xpZGVQYXN0Q291bnQoKSB7CgoJCXZhciBob3Jpem9udGFsU2xpZGVzID0gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKSApOwoKCQkvLyBUaGUgbnVtYmVyIG9mIHBhc3Qgc2xpZGVzCgkJdmFyIHBhc3RDb3VudCA9IDA7CgoJCS8vIFN0ZXAgdGhyb3VnaCBhbGwgc2xpZGVzIGFuZCBjb3VudCB0aGUgcGFzdCBvbmVzCgkJbWFpbkxvb3A6IGZvciggdmFyIGkgPSAwOyBpIDwgaG9yaXpvbnRhbFNsaWRlcy5sZW5ndGg7IGkrKyApIHsKCgkJCXZhciBob3Jpem9udGFsU2xpZGUgPSBob3Jpem9udGFsU2xpZGVzW2ldOwoJCQl2YXIgdmVydGljYWxTbGlkZXMgPSB0b0FycmF5KCBob3Jpem9udGFsU2xpZGUucXVlcnlTZWxlY3RvckFsbCggJ3NlY3Rpb24nICkgKTsKCgkJCWZvciggdmFyIGogPSAwOyBqIDwgdmVydGljYWxTbGlkZXMubGVuZ3RoOyBqKysgKSB7CgoJCQkJLy8gU3RvcCBhcyBzb29uIGFzIHdlIGFycml2ZSBhdCB0aGUgcHJlc2VudAoJCQkJaWYoIHZlcnRpY2FsU2xpZGVzW2pdLmNsYXNzTGlzdC5jb250YWlucyggJ3ByZXNlbnQnICkgKSB7CgkJCQkJYnJlYWsgbWFpbkxvb3A7CgkJCQl9CgoJCQkJcGFzdENvdW50Kys7CgoJCQl9CgoJCQkvLyBTdG9wIGFzIHNvb24gYXMgd2UgYXJyaXZlIGF0IHRoZSBwcmVzZW50CgkJCWlmKCBob3Jpem9udGFsU2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCAncHJlc2VudCcgKSApIHsKCQkJCWJyZWFrOwoJCQl9CgoJCQkvLyBEb24ndCBjb3VudCB0aGUgd3JhcHBpbmcgc2VjdGlvbiBmb3IgdmVydGljYWwgc2xpZGVzCgkJCWlmKCBob3Jpem9udGFsU2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCAnc3RhY2snICkgPT09IGZhbHNlICkgewoJCQkJcGFzdENvdW50Kys7CgkJCX0KCgkJfQoKCQlyZXR1cm4gcGFzdENvdW50OwoKCX0KCgkvKioKCSAqIFJldHVybnMgYSB2YWx1ZSByYW5naW5nIGZyb20gMC0xIHRoYXQgcmVwcmVzZW50cwoJICogaG93IGZhciBpbnRvIHRoZSBwcmVzZW50YXRpb24gd2UgaGF2ZSBuYXZpZ2F0ZWQuCgkgKgoJICogQHJldHVybiB7bnVtYmVyfQoJICovCglmdW5jdGlvbiBnZXRQcm9ncmVzcygpIHsKCgkJLy8gVGhlIG51bWJlciBvZiBwYXN0IGFuZCB0b3RhbCBzbGlkZXMKCQl2YXIgdG90YWxDb3VudCA9IGdldFRvdGFsU2xpZGVzKCk7CgkJdmFyIHBhc3RDb3VudCA9IGdldFNsaWRlUGFzdENvdW50KCk7CgoJCWlmKCBjdXJyZW50U2xpZGUgKSB7CgoJCQl2YXIgYWxsRnJhZ21lbnRzID0gY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQnICk7CgoJCQkvLyBJZiB0aGVyZSBhcmUgZnJhZ21lbnRzIGluIHRoZSBjdXJyZW50IHNsaWRlIHRob3NlIHNob3VsZCBiZQoJCQkvLyBhY2NvdW50ZWQgZm9yIGluIHRoZSBwcm9ncmVzcy4KCQkJaWYoIGFsbEZyYWdtZW50cy5sZW5ndGggPiAwICkgewoJCQkJdmFyIHZpc2libGVGcmFnbWVudHMgPSBjdXJyZW50U2xpZGUucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudC52aXNpYmxlJyApOwoKCQkJCS8vIFRoaXMgdmFsdWUgcmVwcmVzZW50cyBob3cgYmlnIGEgcG9ydGlvbiBvZiB0aGUgc2xpZGUgcHJvZ3Jlc3MKCQkJCS8vIHRoYXQgaXMgbWFkZSB1cCBieSBpdHMgZnJhZ21lbnRzICgwLTEpCgkJCQl2YXIgZnJhZ21lbnRXZWlnaHQgPSAwLjk7CgoJCQkJLy8gQWRkIGZyYWdtZW50IHByb2dyZXNzIHRvIHRoZSBwYXN0IHNsaWRlIGNvdW50CgkJCQlwYXN0Q291bnQgKz0gKCB2aXNpYmxlRnJhZ21lbnRzLmxlbmd0aCAvIGFsbEZyYWdtZW50cy5sZW5ndGggKSAqIGZyYWdtZW50V2VpZ2h0OwoJCQl9CgoJCX0KCgkJcmV0dXJuIE1hdGgubWluKCBwYXN0Q291bnQgLyAoIHRvdGFsQ291bnQgLSAxICksIDEgKTsKCgl9CgoJLyoqCgkgKiBDaGVja3MgaWYgdGhpcyBwcmVzZW50YXRpb24gaXMgcnVubmluZyBpbnNpZGUgb2YgdGhlCgkgKiBzcGVha2VyIG5vdGVzIHdpbmRvdy4KCSAqCgkgKiBAcmV0dXJuIHtib29sZWFufQoJICovCglmdW5jdGlvbiBpc1NwZWFrZXJOb3RlcygpIHsKCgkJcmV0dXJuICEhd2luZG93LmxvY2F0aW9uLnNlYXJjaC5tYXRjaCggL3JlY2VpdmVyL2dpICk7CgoJfQoKCS8qKgoJICogUmVhZHMgdGhlIGN1cnJlbnQgVVJMIChoYXNoKSBhbmQgbmF2aWdhdGVzIGFjY29yZGluZ2x5LgoJICovCglmdW5jdGlvbiByZWFkVVJMKCkgewoKCQl2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoOwoKCQkvLyBBdHRlbXB0IHRvIHBhcnNlIHRoZSBoYXNoIGFzIGVpdGhlciBhbiBpbmRleCBvciBuYW1lCgkJdmFyIGJpdHMgPSBoYXNoLnNsaWNlKCAyICkuc3BsaXQoICcvJyApLAoJCQluYW1lID0gaGFzaC5yZXBsYWNlKCAvI3xcLy9naSwgJycgKTsKCgkJLy8gSWYgdGhlIGZpcnN0IGJpdCBpcyBub3QgZnVsbHkgbnVtZXJpYyBhbmQgdGhlcmUgaXMgYSBuYW1lIHdlCgkJLy8gY2FuIGFzc3VtZSB0aGF0IHRoaXMgaXMgYSBuYW1lZCBsaW5rCgkJaWYoICEvXlswLTldKiQvLnRlc3QoIGJpdHNbMF0gKSAmJiBuYW1lLmxlbmd0aCApIHsKCQkJdmFyIGVsZW1lbnQ7CgoJCQkvLyBFbnN1cmUgdGhlIG5hbWVkIGxpbmsgaXMgYSB2YWxpZCBIVE1MIElEIGF0dHJpYnV0ZQoJCQl0cnkgewoJCQkJZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBkZWNvZGVVUklDb21wb25lbnQoIG5hbWUgKSApOwoJCQl9CgkJCWNhdGNoICggZXJyb3IgKSB7IH0KCgkJCS8vIEVuc3VyZSB0aGF0IHdlJ3JlIG5vdCBhbHJlYWR5IG9uIGEgc2xpZGUgd2l0aCB0aGUgc2FtZSBuYW1lCgkJCXZhciBpc1NhbWVOYW1lQXNDdXJyZW50U2xpZGUgPSBjdXJyZW50U2xpZGUgPyBjdXJyZW50U2xpZGUuZ2V0QXR0cmlidXRlKCAnaWQnICkgPT09IG5hbWUgOiBmYWxzZTsKCgkJCWlmKCBlbGVtZW50ICkgewoJCQkJLy8gSWYgdGhlIHNsaWRlIGV4aXN0cyBhbmQgaXMgbm90IHRoZSBjdXJyZW50IHNsaWRlLi4uCgkJCQlpZiAoICFpc1NhbWVOYW1lQXNDdXJyZW50U2xpZGUgKSB7CgkJCQkJLy8gLi4uZmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIG5hbWVkIHNsaWRlIGFuZCBuYXZpZ2F0ZSB0byBpdAoJCQkJCXZhciBpbmRpY2VzID0gUmV2ZWFsLmdldEluZGljZXMoZWxlbWVudCk7CgkJCQkJc2xpZGUoaW5kaWNlcy5oLCBpbmRpY2VzLnYpOwoJCQkJfQoJCQl9CgkJCS8vIElmIHRoZSBzbGlkZSBkb2Vzbid0IGV4aXN0LCBuYXZpZ2F0ZSB0byB0aGUgY3VycmVudCBzbGlkZQoJCQllbHNlIHsKCQkJCXNsaWRlKCBpbmRleGggfHwgMCwgaW5kZXh2IHx8IDAgKTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJdmFyIGhhc2hJbmRleEJhc2UgPSBjb25maWcuaGFzaE9uZUJhc2VkSW5kZXggPyAxIDogMDsKCgkJCS8vIFJlYWQgdGhlIGluZGV4IGNvbXBvbmVudHMgb2YgdGhlIGhhc2gKCQkJdmFyIGggPSAoIHBhcnNlSW50KCBiaXRzWzBdLCAxMCApIC0gaGFzaEluZGV4QmFzZSApIHx8IDAsCgkJCQl2ID0gKCBwYXJzZUludCggYml0c1sxXSwgMTAgKSAtIGhhc2hJbmRleEJhc2UgKSB8fCAwLAoJCQkJZjsKCgkJCWlmKCBjb25maWcuZnJhZ21lbnRJblVSTCApIHsKCQkJCWYgPSBwYXJzZUludCggYml0c1syXSwgMTAgKTsKCQkJCWlmKCBpc05hTiggZiApICkgewoJCQkJCWYgPSB1bmRlZmluZWQ7CgkJCQl9CgkJCX0KCgkJCWlmKCBoICE9PSBpbmRleGggfHwgdiAhPT0gaW5kZXh2IHx8IGYgIT09IHVuZGVmaW5lZCApIHsKCQkJCXNsaWRlKCBoLCB2LCBmICk7CgkJCX0KCQl9CgoJfQoKCS8qKgoJICogVXBkYXRlcyB0aGUgcGFnZSBVUkwgKGhhc2gpIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQKCSAqIHN0YXRlLgoJICoKCSAqIEBwYXJhbSB7bnVtYmVyfSBkZWxheSBUaGUgdGltZSBpbiBtcyB0byB3YWl0IGJlZm9yZQoJICogd3JpdGluZyB0aGUgaGFzaAoJICovCglmdW5jdGlvbiB3cml0ZVVSTCggZGVsYXkgKSB7CgoJCS8vIE1ha2Ugc3VyZSB0aGVyZSdzIG5ldmVyIG1vcmUgdGhhbiBvbmUgdGltZW91dCBydW5uaW5nCgkJY2xlYXJUaW1lb3V0KCB3cml0ZVVSTFRpbWVvdXQgKTsKCgkJLy8gSWYgYSBkZWxheSBpcyBzcGVjaWZpZWQsIHRpbWVvdXQgdGhpcyBjYWxsCgkJaWYoIHR5cGVvZiBkZWxheSA9PT0gJ251bWJlcicgKSB7CgkJCXdyaXRlVVJMVGltZW91dCA9IHNldFRpbWVvdXQoIHdyaXRlVVJMLCBkZWxheSApOwoJCX0KCQllbHNlIGlmKCBjdXJyZW50U2xpZGUgKSB7CgkJCS8vIElmIHdlJ3JlIGNvbmZpZ3VyZWQgdG8gcHVzaCB0byBoaXN0b3J5IE9SIHRoZSBoaXN0b3J5CgkJCS8vIEFQSSBpcyBub3QgYXZhaWFsYmxlLgoJCQlpZiggY29uZmlnLmhpc3RvcnkgfHwgIXdpbmRvdy5oaXN0b3J5ICkgewoJCQkJd2luZG93LmxvY2F0aW9uLmhhc2ggPSBsb2NhdGlvbkhhc2goKTsKCQkJfQoJCQkvLyBJZiB3ZSdyZSBjb25maWd1cmVkIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgc2xpZGUgaW4gdGhlCgkJCS8vIFVSTCB3aXRob3V0IHB1c2hpbmcgdG8gaGlzdG9yeS4KCQkJZWxzZSBpZiggY29uZmlnLmhhc2ggKSB7CgkJCQl3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoIG51bGwsIG51bGwsICcjJyArIGxvY2F0aW9uSGFzaCgpICk7CgkJCX0KCQkJLy8gSWYgaGlzdG9yeSBhbmQgaGFzaCBhcmUgYm90aCBkaXNhYmxlZCwgYSBoYXNoIG1heSBzdGlsbAoJCQkvLyBiZSBhZGRlZCB0byB0aGUgVVJMIGJ5IGNsaWNraW5nIG9uIGEgaHJlZiB3aXRoIGEgaGFzaAoJCQkvLyB0YXJnZXQuIENvdW50ZXIgdGhpcyBieSBhbHdheXMgcmVtb3ZpbmcgdGhlIGhhc2guCgkJCWVsc2UgewoJCQkJd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCBudWxsLCBudWxsLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICk7CgkJCX0KCQl9CgoJfQoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIGgvdiBsb2NhdGlvbiBhbmQgZnJhZ21lbnQgb2YgdGhlIGN1cnJlbnQsCgkgKiBvciBzcGVjaWZpZWQsIHNsaWRlLgoJICoKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtzbGlkZV0gSWYgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQKCSAqIGluZGV4IHdpbGwgYmUgZm9yIHRoaXMgc2xpZGUgcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnRseQoJICogYWN0aXZlIG9uZQoJICoKCSAqIEByZXR1cm4ge3toOiBudW1iZXIsIHY6IG51bWJlciwgZjogbnVtYmVyfX0KCSAqLwoJZnVuY3Rpb24gZ2V0SW5kaWNlcyggc2xpZGUgKSB7CgoJCS8vIEJ5IGRlZmF1bHQsIHJldHVybiB0aGUgY3VycmVudCBpbmRpY2VzCgkJdmFyIGggPSBpbmRleGgsCgkJCXYgPSBpbmRleHYsCgkJCWY7CgoJCS8vIElmIGEgc2xpZGUgaXMgc3BlY2lmaWVkLCByZXR1cm4gdGhlIGluZGljZXMgb2YgdGhhdCBzbGlkZQoJCWlmKCBzbGlkZSApIHsKCQkJdmFyIGlzVmVydGljYWwgPSBpc1ZlcnRpY2FsU2xpZGUoIHNsaWRlICk7CgkJCXZhciBzbGlkZWggPSBpc1ZlcnRpY2FsID8gc2xpZGUucGFyZW50Tm9kZSA6IHNsaWRlOwoKCQkJLy8gU2VsZWN0IGFsbCBob3Jpem9udGFsIHNsaWRlcwoJCQl2YXIgaG9yaXpvbnRhbFNsaWRlcyA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKTsKCgkJCS8vIE5vdyB0aGF0IHdlIGtub3cgd2hpY2ggdGhlIGhvcml6b250YWwgc2xpZGUgaXMsIGdldCBpdHMgaW5kZXgKCQkJaCA9IE1hdGgubWF4KCBob3Jpem9udGFsU2xpZGVzLmluZGV4T2YoIHNsaWRlaCApLCAwICk7CgoJCQkvLyBBc3N1bWUgd2UncmUgbm90IHZlcnRpY2FsCgkJCXYgPSB1bmRlZmluZWQ7CgoJCQkvLyBJZiB0aGlzIGlzIGEgdmVydGljYWwgc2xpZGUsIGdyYWIgdGhlIHZlcnRpY2FsIGluZGV4CgkJCWlmKCBpc1ZlcnRpY2FsICkgewoJCQkJdiA9IE1hdGgubWF4KCB0b0FycmF5KCBzbGlkZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoICdzZWN0aW9uJyApICkuaW5kZXhPZiggc2xpZGUgKSwgMCApOwoJCQl9CgkJfQoKCQlpZiggIXNsaWRlICYmIGN1cnJlbnRTbGlkZSApIHsKCQkJdmFyIGhhc0ZyYWdtZW50cyA9IGN1cnJlbnRTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnLmZyYWdtZW50JyApLmxlbmd0aCA+IDA7CgkJCWlmKCBoYXNGcmFnbWVudHMgKSB7CgkJCQl2YXIgY3VycmVudEZyYWdtZW50ID0gY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3IoICcuY3VycmVudC1mcmFnbWVudCcgKTsKCQkJCWlmKCBjdXJyZW50RnJhZ21lbnQgJiYgY3VycmVudEZyYWdtZW50Lmhhc0F0dHJpYnV0ZSggJ2RhdGEtZnJhZ21lbnQtaW5kZXgnICkgKSB7CgkJCQkJZiA9IHBhcnNlSW50KCBjdXJyZW50RnJhZ21lbnQuZ2V0QXR0cmlidXRlKCAnZGF0YS1mcmFnbWVudC1pbmRleCcgKSwgMTAgKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWYgPSBjdXJyZW50U2xpZGUucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudC52aXNpYmxlJyApLmxlbmd0aCAtIDE7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiB7IGg6IGgsIHY6IHYsIGY6IGYgfTsKCgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgYWxsIHNsaWRlcyBpbiB0aGlzIHByZXNlbnRhdGlvbi4KCSAqLwoJZnVuY3Rpb24gZ2V0U2xpZGVzKCkgewoKCQlyZXR1cm4gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggU0xJREVTX1NFTEVDVE9SICsgJzpub3QoLnN0YWNrKScgKSApOwoKCX0KCgkvKioKCSAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBob3Jpem9udGFsIHNsaWRlcyBpbiB0aGUgZGVjay4gRWFjaAoJICogdmVydGljYWwgc3RhY2sgaXMgaW5jbHVkZWQgYXMgb25lIGhvcml6b250YWwgc2xpZGUgaW4gdGhlCgkgKiByZXN1bHRpbmcgYXJyYXkuCgkgKi8KCWZ1bmN0aW9uIGdldEhvcml6b250YWxTbGlkZXMoKSB7CgoJCXJldHVybiB0b0FycmF5KCBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCBIT1JJWk9OVEFMX1NMSURFU19TRUxFQ1RPUiApICk7CgoJfQoKCS8qKgoJICogUmV0dXJucyBhbGwgdmVydGljYWwgc2xpZGVzIHRoYXQgZXhpc3Qgd2l0aGluIHRoaXMgZGVjay4KCSAqLwoJZnVuY3Rpb24gZ2V0VmVydGljYWxTbGlkZXMoKSB7CgoJCXJldHVybiB0b0FycmF5KCBkb20ud3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCAnLnNsaWRlcz5zZWN0aW9uPnNlY3Rpb24nICkgKTsKCgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBob3Jpem9udGFsIHNsaWRlcy4KCSAqLwoJZnVuY3Rpb24gaGFzSG9yaXpvbnRhbFNsaWRlcygpIHsKCgkJcmV0dXJuIGdldEhvcml6b250YWxTbGlkZXMoKS5sZW5ndGggPiAxOwoJfQoKCS8qKgoJICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gdmVydGljYWwgc2xpZGVzLgoJICovCglmdW5jdGlvbiBoYXNWZXJ0aWNhbFNsaWRlcygpIHsKCgkJcmV0dXJuIGdldFZlcnRpY2FsU2xpZGVzKCkubGVuZ3RoID4gMTsKCgl9CgoJLyoqCgkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgd2hlcmUgZWFjaCBvYmplY3QgcmVwcmVzZW50cyB0aGUKCSAqIGF0dHJpYnV0ZXMgb24gaXRzIHJlc3BlY3RpdmUgc2xpZGUuCgkgKi8KCWZ1bmN0aW9uIGdldFNsaWRlc0F0dHJpYnV0ZXMoKSB7CgoJCXJldHVybiBnZXRTbGlkZXMoKS5tYXAoIGZ1bmN0aW9uKCBzbGlkZSApIHsKCgkJCXZhciBhdHRyaWJ1dGVzID0ge307CgkJCWZvciggdmFyIGkgPSAwOyBpIDwgc2xpZGUuYXR0cmlidXRlcy5sZW5ndGg7IGkrKyApIHsKCQkJCXZhciBhdHRyaWJ1dGUgPSBzbGlkZS5hdHRyaWJ1dGVzWyBpIF07CgkJCQlhdHRyaWJ1dGVzWyBhdHRyaWJ1dGUubmFtZSBdID0gYXR0cmlidXRlLnZhbHVlOwoJCQl9CgkJCXJldHVybiBhdHRyaWJ1dGVzOwoKCQl9ICk7CgoJfQoKCS8qKgoJICogUmV0cmlldmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2xpZGVzIGluIHRoaXMgcHJlc2VudGF0aW9uLgoJICoKCSAqIEByZXR1cm4ge251bWJlcn0KCSAqLwoJZnVuY3Rpb24gZ2V0VG90YWxTbGlkZXMoKSB7CgoJCXJldHVybiBnZXRTbGlkZXMoKS5sZW5ndGg7CgoJfQoKCS8qKgoJICogUmV0dXJucyB0aGUgc2xpZGUgZWxlbWVudCBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIGluZGV4LgoJICoKCSAqIEByZXR1cm4ge0hUTUxFbGVtZW50fQoJICovCglmdW5jdGlvbiBnZXRTbGlkZSggeCwgeSApIHsKCgkJdmFyIGhvcml6b250YWxTbGlkZSA9IGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SIClbIHggXTsKCQl2YXIgdmVydGljYWxTbGlkZXMgPSBob3Jpem9udGFsU2xpZGUgJiYgaG9yaXpvbnRhbFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICdzZWN0aW9uJyApOwoKCQlpZiggdmVydGljYWxTbGlkZXMgJiYgdmVydGljYWxTbGlkZXMubGVuZ3RoICYmIHR5cGVvZiB5ID09PSAnbnVtYmVyJyApIHsKCQkJcmV0dXJuIHZlcnRpY2FsU2xpZGVzID8gdmVydGljYWxTbGlkZXNbIHkgXSA6IHVuZGVmaW5lZDsKCQl9CgoJCXJldHVybiBob3Jpem9udGFsU2xpZGU7CgoJfQoKCS8qKgoJICogUmV0dXJucyB0aGUgYmFja2dyb3VuZCBlbGVtZW50IGZvciB0aGUgZ2l2ZW4gc2xpZGUuCgkgKiBBbGwgc2xpZGVzLCBldmVuIHRoZSBvbmVzIHdpdGggbm8gYmFja2dyb3VuZCBwcm9wZXJ0aWVzCgkgKiBkZWZpbmVkLCBoYXZlIGEgYmFja2dyb3VuZCBlbGVtZW50IHNvIGFzIGxvbmcgYXMgdGhlCgkgKiBpbmRleCBpcyB2YWxpZCBhbiBlbGVtZW50IHdpbGwgYmUgcmV0dXJuZWQuCgkgKgoJICogQHBhcmFtIHttaXhlZH0geCBIb3Jpem9udGFsIGJhY2tncm91bmQgaW5kZXggT1IgYSBzbGlkZQoJICogSFRNTCBlbGVtZW50CgkgKiBAcGFyYW0ge251bWJlcn0geSBWZXJ0aWNhbCBiYWNrZ3JvdW5kIGluZGV4CgkgKiBAcmV0dXJuIHsoSFRNTEVsZW1lbnRbXXwqKX0KCSAqLwoJZnVuY3Rpb24gZ2V0U2xpZGVCYWNrZ3JvdW5kKCB4LCB5ICkgewoKCQl2YXIgc2xpZGUgPSB0eXBlb2YgeCA9PT0gJ251bWJlcicgPyBnZXRTbGlkZSggeCwgeSApIDogeDsKCQlpZiggc2xpZGUgKSB7CgkJCXJldHVybiBzbGlkZS5zbGlkZUJhY2tncm91bmRFbGVtZW50OwoJCX0KCgkJcmV0dXJuIHVuZGVmaW5lZDsKCgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIHNwZWFrZXIgbm90ZXMgZnJvbSBhIHNsaWRlLiBOb3RlcyBjYW4gYmUKCSAqIGRlZmluZWQgaW4gdHdvIHdheXM6CgkgKiAxLiBBcyBhIGRhdGEtbm90ZXMgYXR0cmlidXRlIG9uIHRoZSBzbGlkZSA8c2VjdGlvbj4KCSAqIDIuIEFzIGFuIDxhc2lkZSBjbGFzcz0ibm90ZXMiPiBpbnNpZGUgb2YgdGhlIHNsaWRlCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3NsaWRlPWN1cnJlbnRTbGlkZV0KCSAqIEByZXR1cm4geyhzdHJpbmd8bnVsbCl9CgkgKi8KCWZ1bmN0aW9uIGdldFNsaWRlTm90ZXMoIHNsaWRlICkgewoKCQkvLyBEZWZhdWx0IHRvIHRoZSBjdXJyZW50IHNsaWRlCgkJc2xpZGUgPSBzbGlkZSB8fCBjdXJyZW50U2xpZGU7CgoJCS8vIE5vdGVzIGNhbiBiZSBzcGVjaWZpZWQgdmlhIHRoZSBkYXRhLW5vdGVzIGF0dHJpYnV0ZS4uLgoJCWlmKCBzbGlkZS5oYXNBdHRyaWJ1dGUoICdkYXRhLW5vdGVzJyApICkgewoJCQlyZXR1cm4gc2xpZGUuZ2V0QXR0cmlidXRlKCAnZGF0YS1ub3RlcycgKTsKCQl9CgoJCS8vIC4uLiBvciB1c2luZyBhbiA8YXNpZGUgY2xhc3M9Im5vdGVzIj4gZWxlbWVudAoJCXZhciBub3Rlc0VsZW1lbnQgPSBzbGlkZS5xdWVyeVNlbGVjdG9yKCAnYXNpZGUubm90ZXMnICk7CgkJaWYoIG5vdGVzRWxlbWVudCApIHsKCQkJcmV0dXJuIG5vdGVzRWxlbWVudC5pbm5lckhUTUw7CgkJfQoKCQlyZXR1cm4gbnVsbDsKCgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHByZXNlbnRhdGlvbiBhcwoJICogYW4gb2JqZWN0LiBUaGlzIHN0YXRlIGNhbiB0aGVuIGJlIHJlc3RvcmVkIGF0IGFueQoJICogdGltZS4KCSAqCgkgKiBAcmV0dXJuIHt7aW5kZXhoOiBudW1iZXIsIGluZGV4djogbnVtYmVyLCBpbmRleGY6IG51bWJlciwgcGF1c2VkOiBib29sZWFuLCBvdmVydmlldzogYm9vbGVhbn19CgkgKi8KCWZ1bmN0aW9uIGdldFN0YXRlKCkgewoKCQl2YXIgaW5kaWNlcyA9IGdldEluZGljZXMoKTsKCgkJcmV0dXJuIHsKCQkJaW5kZXhoOiBpbmRpY2VzLmgsCgkJCWluZGV4djogaW5kaWNlcy52LAoJCQlpbmRleGY6IGluZGljZXMuZiwKCQkJcGF1c2VkOiBpc1BhdXNlZCgpLAoJCQlvdmVydmlldzogaXNPdmVydmlldygpCgkJfTsKCgl9CgoJLyoqCgkgKiBSZXN0b3JlcyB0aGUgcHJlc2VudGF0aW9uIHRvIHRoZSBnaXZlbiBzdGF0ZS4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgQXMgZ2VuZXJhdGVkIGJ5IGdldFN0YXRlKCkKCSAqIEBzZWUge0BsaW5rIGdldFN0YXRlfSBnZW5lcmF0ZXMgdGhlIHBhcmFtZXRlciBgc3RhdGVgCgkgKi8KCWZ1bmN0aW9uIHNldFN0YXRlKCBzdGF0ZSApIHsKCgkJaWYoIHR5cGVvZiBzdGF0ZSA9PT0gJ29iamVjdCcgKSB7CgkJCXNsaWRlKCBkZXNlcmlhbGl6ZSggc3RhdGUuaW5kZXhoICksIGRlc2VyaWFsaXplKCBzdGF0ZS5pbmRleHYgKSwgZGVzZXJpYWxpemUoIHN0YXRlLmluZGV4ZiApICk7CgoJCQl2YXIgcGF1c2VkRmxhZyA9IGRlc2VyaWFsaXplKCBzdGF0ZS5wYXVzZWQgKSwKCQkJCW92ZXJ2aWV3RmxhZyA9IGRlc2VyaWFsaXplKCBzdGF0ZS5vdmVydmlldyApOwoKCQkJaWYoIHR5cGVvZiBwYXVzZWRGbGFnID09PSAnYm9vbGVhbicgJiYgcGF1c2VkRmxhZyAhPT0gaXNQYXVzZWQoKSApIHsKCQkJCXRvZ2dsZVBhdXNlKCBwYXVzZWRGbGFnICk7CgkJCX0KCgkJCWlmKCB0eXBlb2Ygb3ZlcnZpZXdGbGFnID09PSAnYm9vbGVhbicgJiYgb3ZlcnZpZXdGbGFnICE9PSBpc092ZXJ2aWV3KCkgKSB7CgkJCQl0b2dnbGVPdmVydmlldyggb3ZlcnZpZXdGbGFnICk7CgkJCX0KCQl9CgoJfQoKCS8qKgoJICogUmV0dXJuIGEgc29ydGVkIGZyYWdtZW50cyBsaXN0LCBvcmRlcmVkIGJ5IGFuIGluY3JlYXNpbmcKCSAqICJkYXRhLWZyYWdtZW50LWluZGV4IiBhdHRyaWJ1dGUuCgkgKgoJICogRnJhZ21lbnRzIHdpbGwgYmUgcmV2ZWFsZWQgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgcmV0dXJuZWQgYnkKCSAqIHRoaXMgZnVuY3Rpb24sIHNvIHlvdSBjYW4gdXNlIHRoZSBpbmRleCBhdHRyaWJ1dGVzIHRvIGNvbnRyb2wgdGhlCgkgKiBvcmRlciBvZiBmcmFnbWVudCBhcHBlYXJhbmNlLgoJICoKCSAqIFRvIG1haW50YWluIGEgc2Vuc2libGUgZGVmYXVsdCBmcmFnbWVudCBvcmRlciwgZnJhZ21lbnRzIGFyZSBwcmVzdW1lZAoJICogdG8gYmUgcGFzc2VkIGluIGRvY3VtZW50IG9yZGVyLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSAiZnJhZ21lbnQtaW5kZXgiCgkgKiBhdHRyaWJ1dGUgdG8gZWFjaCBub2RlIGlmIHN1Y2ggYW4gYXR0cmlidXRlIGlzIG5vdCBhbHJlYWR5IHByZXNlbnQsCgkgKiBhbmQgc2V0cyB0aGF0IGF0dHJpYnV0ZSB0byBhbiBpbnRlZ2VyIHZhbHVlIHdoaWNoIGlzIHRoZSBwb3NpdGlvbiBvZgoJICogdGhlIGZyYWdtZW50IHdpdGhpbiB0aGUgZnJhZ21lbnRzIGxpc3QuCgkgKgoJICogQHBhcmFtIHtvYmplY3RbXXwqfSBmcmFnbWVudHMKCSAqIEBwYXJhbSB7Ym9vbGVhbn0gZ3JvdXBlZCBJZiB0cnVlIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGNvbnRhaW4KCSAqIG5lc3RlZCBhcnJheXMgZm9yIGFsbCBmcmFnbWVudHMgd2l0aCB0aGUgc2FtZSBpbmRleAoJICogQHJldHVybiB7b2JqZWN0W119IHNvcnRlZCBTb3J0ZWQgYXJyYXkgb2YgZnJhZ21lbnRzCgkgKi8KCWZ1bmN0aW9uIHNvcnRGcmFnbWVudHMoIGZyYWdtZW50cywgZ3JvdXBlZCApIHsKCgkJZnJhZ21lbnRzID0gdG9BcnJheSggZnJhZ21lbnRzICk7CgoJCXZhciBvcmRlcmVkID0gW10sCgkJCXVub3JkZXJlZCA9IFtdLAoJCQlzb3J0ZWQgPSBbXTsKCgkJLy8gR3JvdXAgb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGVsZW1lbnRzCgkJZnJhZ21lbnRzLmZvckVhY2goIGZ1bmN0aW9uKCBmcmFnbWVudCwgaSApIHsKCQkJaWYoIGZyYWdtZW50Lmhhc0F0dHJpYnV0ZSggJ2RhdGEtZnJhZ21lbnQtaW5kZXgnICkgKSB7CgkJCQl2YXIgaW5kZXggPSBwYXJzZUludCggZnJhZ21lbnQuZ2V0QXR0cmlidXRlKCAnZGF0YS1mcmFnbWVudC1pbmRleCcgKSwgMTAgKTsKCgkJCQlpZiggIW9yZGVyZWRbaW5kZXhdICkgewoJCQkJCW9yZGVyZWRbaW5kZXhdID0gW107CgkJCQl9CgoJCQkJb3JkZXJlZFtpbmRleF0ucHVzaCggZnJhZ21lbnQgKTsKCQkJfQoJCQllbHNlIHsKCQkJCXVub3JkZXJlZC5wdXNoKCBbIGZyYWdtZW50IF0gKTsKCQkJfQoJCX0gKTsKCgkJLy8gQXBwZW5kIGZyYWdtZW50cyB3aXRob3V0IGV4cGxpY2l0IGluZGljZXMgaW4gdGhlaXIKCQkvLyBET00gb3JkZXIKCQlvcmRlcmVkID0gb3JkZXJlZC5jb25jYXQoIHVub3JkZXJlZCApOwoKCQkvLyBNYW51YWxseSBjb3VudCB0aGUgaW5kZXggdXAgcGVyIGdyb3VwIHRvIGVuc3VyZSB0aGVyZQoJCS8vIGFyZSBubyBnYXBzCgkJdmFyIGluZGV4ID0gMDsKCgkJLy8gUHVzaCBhbGwgZnJhZ21lbnRzIGluIHRoZWlyIHNvcnRlZCBvcmRlciB0byBhbiBhcnJheSwKCQkvLyB0aGlzIGZsYXR0ZW5zIHRoZSBncm91cHMKCQlvcmRlcmVkLmZvckVhY2goIGZ1bmN0aW9uKCBncm91cCApIHsKCQkJZ3JvdXAuZm9yRWFjaCggZnVuY3Rpb24oIGZyYWdtZW50ICkgewoJCQkJc29ydGVkLnB1c2goIGZyYWdtZW50ICk7CgkJCQlmcmFnbWVudC5zZXRBdHRyaWJ1dGUoICdkYXRhLWZyYWdtZW50LWluZGV4JywgaW5kZXggKTsKCQkJfSApOwoKCQkJaW5kZXggKys7CgkJfSApOwoKCQlyZXR1cm4gZ3JvdXBlZCA9PT0gdHJ1ZSA/IG9yZGVyZWQgOiBzb3J0ZWQ7CgoJfQoKCS8qKgoJICogUmVmcmVzaGVzIHRoZSBmcmFnbWVudHMgb24gdGhlIGN1cnJlbnQgc2xpZGUgc28gdGhhdCB0aGV5CgkgKiBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjbGFzc2VzICgudmlzaWJsZSArIC5jdXJyZW50LWZyYWdtZW50KS4KCSAqCgkgKiBAcGFyYW0ge251bWJlcn0gW2luZGV4XSBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhZ21lbnQKCSAqIEBwYXJhbSB7YXJyYXl9IFtmcmFnbWVudHNdIEFycmF5IGNvbnRhaW5pbmcgYWxsIGZyYWdtZW50cwoJICogaW4gdGhlIGN1cnJlbnQgc2xpZGUKCSAqCgkgKiBAcmV0dXJuIHt7c2hvd246IGFycmF5LCBoaWRkZW46IGFycmF5fX0KCSAqLwoJZnVuY3Rpb24gdXBkYXRlRnJhZ21lbnRzKCBpbmRleCwgZnJhZ21lbnRzICkgewoKCQl2YXIgY2hhbmdlZEZyYWdtZW50cyA9IHsKCQkJc2hvd246IFtdLAoJCQloaWRkZW46IFtdCgkJfTsKCgkJaWYoIGN1cnJlbnRTbGlkZSAmJiBjb25maWcuZnJhZ21lbnRzICkgewoKCQkJZnJhZ21lbnRzID0gZnJhZ21lbnRzIHx8IHNvcnRGcmFnbWVudHMoIGN1cnJlbnRTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnLmZyYWdtZW50JyApICk7CgoJCQlpZiggZnJhZ21lbnRzLmxlbmd0aCApIHsKCgkJCQlpZiggdHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJyApIHsKCQkJCQl2YXIgY3VycmVudEZyYWdtZW50ID0gc29ydEZyYWdtZW50cyggY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQudmlzaWJsZScgKSApLnBvcCgpOwoJCQkJCWlmKCBjdXJyZW50RnJhZ21lbnQgKSB7CgkJCQkJCWluZGV4ID0gcGFyc2VJbnQoIGN1cnJlbnRGcmFnbWVudC5nZXRBdHRyaWJ1dGUoICdkYXRhLWZyYWdtZW50LWluZGV4JyApIHx8IDAsIDEwICk7CgkJCQkJfQoJCQkJfQoKCQkJCXRvQXJyYXkoIGZyYWdtZW50cyApLmZvckVhY2goIGZ1bmN0aW9uKCBlbCwgaSApIHsKCgkJCQkJaWYoIGVsLmhhc0F0dHJpYnV0ZSggJ2RhdGEtZnJhZ21lbnQtaW5kZXgnICkgKSB7CgkJCQkJCWkgPSBwYXJzZUludCggZWwuZ2V0QXR0cmlidXRlKCAnZGF0YS1mcmFnbWVudC1pbmRleCcgKSwgMTAgKTsKCQkJCQl9CgoJCQkJCS8vIFZpc2libGUgZnJhZ21lbnRzCgkJCQkJaWYoIGkgPD0gaW5kZXggKSB7CgkJCQkJCWlmKCAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCAndmlzaWJsZScgKSApIGNoYW5nZWRGcmFnbWVudHMuc2hvd24ucHVzaCggZWwgKTsKCQkJCQkJZWwuY2xhc3NMaXN0LmFkZCggJ3Zpc2libGUnICk7CgkJCQkJCWVsLmNsYXNzTGlzdC5yZW1vdmUoICdjdXJyZW50LWZyYWdtZW50JyApOwoKCQkJCQkJLy8gQW5ub3VuY2UgdGhlIGZyYWdtZW50cyBvbmUgYnkgb25lIHRvIHRoZSBTY3JlZW4gUmVhZGVyCgkJCQkJCWRvbS5zdGF0dXNEaXYudGV4dENvbnRlbnQgPSBnZXRTdGF0dXNUZXh0KCBlbCApOwoKCQkJCQkJaWYoIGkgPT09IGluZGV4ICkgewoJCQkJCQkJZWwuY2xhc3NMaXN0LmFkZCggJ2N1cnJlbnQtZnJhZ21lbnQnICk7CgkJCQkJCQlzdGFydEVtYmVkZGVkQ29udGVudCggZWwgKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQkvLyBIaWRkZW4gZnJhZ21lbnRzCgkJCQkJZWxzZSB7CgkJCQkJCWlmKCBlbC5jbGFzc0xpc3QuY29udGFpbnMoICd2aXNpYmxlJyApICkgY2hhbmdlZEZyYWdtZW50cy5oaWRkZW4ucHVzaCggZWwgKTsKCQkJCQkJZWwuY2xhc3NMaXN0LnJlbW92ZSggJ3Zpc2libGUnICk7CgkJCQkJCWVsLmNsYXNzTGlzdC5yZW1vdmUoICdjdXJyZW50LWZyYWdtZW50JyApOwoJCQkJCX0KCgkJCQl9ICk7CgoJCQl9CgoJCX0KCgkJcmV0dXJuIGNoYW5nZWRGcmFnbWVudHM7CgoJfQoKCS8qKgoJICogTmF2aWdhdGUgdG8gdGhlIHNwZWNpZmllZCBzbGlkZSBmcmFnbWVudC4KCSAqCgkgKiBAcGFyYW0gez9udW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZnJhZ21lbnQgdGhhdAoJICogc2hvdWxkIGJlIHNob3duLCAtMSBtZWFucyBhbGwgYXJlIGludmlzaWJsZQoJICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBJbnRlZ2VyIG9mZnNldCB0byBhcHBseSB0byB0aGUKCSAqIGZyYWdtZW50IGluZGV4CgkgKgoJICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhIGNoYW5nZSB3YXMgbWFkZSBpbiBhbnkKCSAqIGZyYWdtZW50cyB2aXNpYmlsaXR5IGFzIHBhcnQgb2YgdGhpcyBjYWxsCgkgKi8KCWZ1bmN0aW9uIG5hdmlnYXRlRnJhZ21lbnQoIGluZGV4LCBvZmZzZXQgKSB7CgoJCWlmKCBjdXJyZW50U2xpZGUgJiYgY29uZmlnLmZyYWdtZW50cyApIHsKCgkJCXZhciBmcmFnbWVudHMgPSBzb3J0RnJhZ21lbnRzKCBjdXJyZW50U2xpZGUucXVlcnlTZWxlY3RvckFsbCggJy5mcmFnbWVudCcgKSApOwoJCQlpZiggZnJhZ21lbnRzLmxlbmd0aCApIHsKCgkJCQkvLyBJZiBubyBpbmRleCBpcyBzcGVjaWZpZWQsIGZpbmQgdGhlIGN1cnJlbnQKCQkJCWlmKCB0eXBlb2YgaW5kZXggIT09ICdudW1iZXInICkgewoJCQkJCXZhciBsYXN0VmlzaWJsZUZyYWdtZW50ID0gc29ydEZyYWdtZW50cyggY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoICcuZnJhZ21lbnQudmlzaWJsZScgKSApLnBvcCgpOwoKCQkJCQlpZiggbGFzdFZpc2libGVGcmFnbWVudCApIHsKCQkJCQkJaW5kZXggPSBwYXJzZUludCggbGFzdFZpc2libGVGcmFnbWVudC5nZXRBdHRyaWJ1dGUoICdkYXRhLWZyYWdtZW50LWluZGV4JyApIHx8IDAsIDEwICk7CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlpbmRleCA9IC0xOwoJCQkJCX0KCQkJCX0KCgkJCQkvLyBJZiBhbiBvZmZzZXQgaXMgc3BlY2lmaWVkLCBhcHBseSBpdCB0byB0aGUgaW5kZXgKCQkJCWlmKCB0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJyApIHsKCQkJCQlpbmRleCArPSBvZmZzZXQ7CgkJCQl9CgoJCQkJdmFyIGNoYW5nZWRGcmFnbWVudHMgPSB1cGRhdGVGcmFnbWVudHMoIGluZGV4LCBmcmFnbWVudHMgKTsKCgkJCQlpZiggY2hhbmdlZEZyYWdtZW50cy5oaWRkZW4ubGVuZ3RoICkgewoJCQkJCWRpc3BhdGNoRXZlbnQoICdmcmFnbWVudGhpZGRlbicsIHsgZnJhZ21lbnQ6IGNoYW5nZWRGcmFnbWVudHMuaGlkZGVuWzBdLCBmcmFnbWVudHM6IGNoYW5nZWRGcmFnbWVudHMuaGlkZGVuIH0gKTsKCQkJCX0KCgkJCQlpZiggY2hhbmdlZEZyYWdtZW50cy5zaG93bi5sZW5ndGggKSB7CgkJCQkJZGlzcGF0Y2hFdmVudCggJ2ZyYWdtZW50c2hvd24nLCB7IGZyYWdtZW50OiBjaGFuZ2VkRnJhZ21lbnRzLnNob3duWzBdLCBmcmFnbWVudHM6IGNoYW5nZWRGcmFnbWVudHMuc2hvd24gfSApOwoJCQkJfQoKCQkJCXVwZGF0ZUNvbnRyb2xzKCk7CgkJCQl1cGRhdGVQcm9ncmVzcygpOwoKCQkJCWlmKCBjb25maWcuZnJhZ21lbnRJblVSTCApIHsKCQkJCQl3cml0ZVVSTCgpOwoJCQkJfQoKCQkJCXJldHVybiAhISggY2hhbmdlZEZyYWdtZW50cy5zaG93bi5sZW5ndGggfHwgY2hhbmdlZEZyYWdtZW50cy5oaWRkZW4ubGVuZ3RoICk7CgoJCQl9CgoJCX0KCgkJcmV0dXJuIGZhbHNlOwoKCX0KCgkvKioKCSAqIE5hdmlnYXRlIHRvIHRoZSBuZXh0IHNsaWRlIGZyYWdtZW50LgoJICoKCSAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlcmUgd2FzIGEgbmV4dCBmcmFnbWVudCwKCSAqIGZhbHNlIG90aGVyd2lzZQoJICovCglmdW5jdGlvbiBuZXh0RnJhZ21lbnQoKSB7CgoJCXJldHVybiBuYXZpZ2F0ZUZyYWdtZW50KCBudWxsLCAxICk7CgoJfQoKCS8qKgoJICogTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIHNsaWRlIGZyYWdtZW50LgoJICoKCSAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgZnJhZ21lbnQsCgkgKiBmYWxzZSBvdGhlcndpc2UKCSAqLwoJZnVuY3Rpb24gcHJldmlvdXNGcmFnbWVudCgpIHsKCgkJcmV0dXJuIG5hdmlnYXRlRnJhZ21lbnQoIG51bGwsIC0xICk7CgoJfQoKCS8qKgoJICogQ3VlcyBhIG5ldyBhdXRvbWF0ZWQgc2xpZGUgaWYgZW5hYmxlZCBpbiB0aGUgY29uZmlnLgoJICovCglmdW5jdGlvbiBjdWVBdXRvU2xpZGUoKSB7CgoJCWNhbmNlbEF1dG9TbGlkZSgpOwoKCQlpZiggY3VycmVudFNsaWRlICYmIGNvbmZpZy5hdXRvU2xpZGUgIT09IGZhbHNlICkgewoKCQkJdmFyIGZyYWdtZW50ID0gY3VycmVudFNsaWRlLnF1ZXJ5U2VsZWN0b3IoICcuY3VycmVudC1mcmFnbWVudCcgKTsKCgkJCS8vIFdoZW4gdGhlIHNsaWRlIGZpcnN0IGFwcGVhcnMgdGhlcmUgaXMgbm8gImN1cnJlbnQiIGZyYWdtZW50IHNvCgkJCS8vIHdlIGxvb2sgZm9yIGEgZGF0YS1hdXRvc2xpZGUgdGltaW5nIG9uIHRoZSBmaXJzdCBmcmFnbWVudAoJCQlpZiggIWZyYWdtZW50ICkgZnJhZ21lbnQgPSBjdXJyZW50U2xpZGUucXVlcnlTZWxlY3RvciggJy5mcmFnbWVudCcgKTsKCgkJCXZhciBmcmFnbWVudEF1dG9TbGlkZSA9IGZyYWdtZW50ID8gZnJhZ21lbnQuZ2V0QXR0cmlidXRlKCAnZGF0YS1hdXRvc2xpZGUnICkgOiBudWxsOwoJCQl2YXIgcGFyZW50QXV0b1NsaWRlID0gY3VycmVudFNsaWRlLnBhcmVudE5vZGUgPyBjdXJyZW50U2xpZGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoICdkYXRhLWF1dG9zbGlkZScgKSA6IG51bGw7CgkJCXZhciBzbGlkZUF1dG9TbGlkZSA9IGN1cnJlbnRTbGlkZS5nZXRBdHRyaWJ1dGUoICdkYXRhLWF1dG9zbGlkZScgKTsKCgkJCS8vIFBpY2sgdmFsdWUgaW4gdGhlIGZvbGxvd2luZyBwcmlvcml0eSBvcmRlcjoKCQkJLy8gMS4gQ3VycmVudCBmcmFnbWVudCdzIGRhdGEtYXV0b3NsaWRlCgkJCS8vIDIuIEN1cnJlbnQgc2xpZGUncyBkYXRhLWF1dG9zbGlkZQoJCQkvLyAzLiBQYXJlbnQgc2xpZGUncyBkYXRhLWF1dG9zbGlkZQoJCQkvLyA0LiBHbG9iYWwgYXV0b1NsaWRlIHNldHRpbmcKCQkJaWYoIGZyYWdtZW50QXV0b1NsaWRlICkgewoJCQkJYXV0b1NsaWRlID0gcGFyc2VJbnQoIGZyYWdtZW50QXV0b1NsaWRlLCAxMCApOwoJCQl9CgkJCWVsc2UgaWYoIHNsaWRlQXV0b1NsaWRlICkgewoJCQkJYXV0b1NsaWRlID0gcGFyc2VJbnQoIHNsaWRlQXV0b1NsaWRlLCAxMCApOwoJCQl9CgkJCWVsc2UgaWYoIHBhcmVudEF1dG9TbGlkZSApIHsKCQkJCWF1dG9TbGlkZSA9IHBhcnNlSW50KCBwYXJlbnRBdXRvU2xpZGUsIDEwICk7CgkJCX0KCQkJZWxzZSB7CgkJCQlhdXRvU2xpZGUgPSBjb25maWcuYXV0b1NsaWRlOwoJCQl9CgoJCQkvLyBJZiB0aGVyZSBhcmUgbWVkaWEgZWxlbWVudHMgd2l0aCBkYXRhLWF1dG9wbGF5LAoJCQkvLyBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYXV0b1NsaWRlIGR1cmF0aW9uIHRvIHRoZQoJCQkvLyBsZW5ndGggb2YgdGhhdCBtZWRpYS4gTm90IGFwcGxpY2FibGUgaWYgdGhlIHNsaWRlCgkJCS8vIGlzIGRpdmlkZWQgdXAgaW50byBmcmFnbWVudHMuCgkJCS8vIHBsYXliYWNrUmF0ZSBpcyBhY2NvdW50ZWQgZm9yIGluIHRoZSBkdXJhdGlvbi4KCQkJaWYoIGN1cnJlbnRTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAnLmZyYWdtZW50JyApLmxlbmd0aCA9PT0gMCApIHsKCQkJCXRvQXJyYXkoIGN1cnJlbnRTbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCAndmlkZW8sIGF1ZGlvJyApICkuZm9yRWFjaCggZnVuY3Rpb24oIGVsICkgewoJCQkJCWlmKCBlbC5oYXNBdHRyaWJ1dGUoICdkYXRhLWF1dG9wbGF5JyApICkgewoJCQkJCQlpZiggYXV0b1NsaWRlICYmIChlbC5kdXJhdGlvbiAqIDEwMDAgLyBlbC5wbGF5YmFja1JhdGUgKSA+IGF1dG9TbGlkZSApIHsKCQkJCQkJCWF1dG9TbGlkZSA9ICggZWwuZHVyYXRpb24gKiAxMDAwIC8gZWwucGxheWJhY2tSYXRlICkgKyAxMDAwOwoJCQkJCQl9CgkJCQkJfQoJCQkJfSApOwoJCQl9CgoJCQkvLyBDdWUgdGhlIG5leHQgYXV0by1zbGlkZSBpZjoKCQkJLy8gLSBUaGVyZSBpcyBhbiBhdXRvU2xpZGUgdmFsdWUKCQkJLy8gLSBBdXRvLXNsaWRpbmcgaXNuJ3QgcGF1c2VkIGJ5IHRoZSB1c2VyCgkJCS8vIC0gVGhlIHByZXNlbnRhdGlvbiBpc24ndCBwYXVzZWQKCQkJLy8gLSBUaGUgb3ZlcnZpZXcgaXNuJ3QgYWN0aXZlCgkJCS8vIC0gVGhlIHByZXNlbnRhdGlvbiBpc24ndCBvdmVyCgkJCWlmKCBhdXRvU2xpZGUgJiYgIWF1dG9TbGlkZVBhdXNlZCAmJiAhaXNQYXVzZWQoKSAmJiAhaXNPdmVydmlldygpICYmICggIVJldmVhbC5pc0xhc3RTbGlkZSgpIHx8IGF2YWlsYWJsZUZyYWdtZW50cygpLm5leHQgfHwgY29uZmlnLmxvb3AgPT09IHRydWUgKSApIHsKCQkJCWF1dG9TbGlkZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKCQkJCQl0eXBlb2YgY29uZmlnLmF1dG9TbGlkZU1ldGhvZCA9PT0gJ2Z1bmN0aW9uJyA/IGNvbmZpZy5hdXRvU2xpZGVNZXRob2QoKSA6IG5hdmlnYXRlTmV4dCgpOwoJCQkJCWN1ZUF1dG9TbGlkZSgpOwoJCQkJfSwgYXV0b1NsaWRlICk7CgkJCQlhdXRvU2xpZGVTdGFydFRpbWUgPSBEYXRlLm5vdygpOwoJCQl9CgoJCQlpZiggYXV0b1NsaWRlUGxheWVyICkgewoJCQkJYXV0b1NsaWRlUGxheWVyLnNldFBsYXlpbmcoIGF1dG9TbGlkZVRpbWVvdXQgIT09IC0xICk7CgkJCX0KCgkJfQoKCX0KCgkvKioKCSAqIENhbmNlbHMgYW55IG9uZ29pbmcgcmVxdWVzdCB0byBhdXRvLXNsaWRlLgoJICovCglmdW5jdGlvbiBjYW5jZWxBdXRvU2xpZGUoKSB7CgoJCWNsZWFyVGltZW91dCggYXV0b1NsaWRlVGltZW91dCApOwoJCWF1dG9TbGlkZVRpbWVvdXQgPSAtMTsKCgl9CgoJZnVuY3Rpb24gcGF1c2VBdXRvU2xpZGUoKSB7CgoJCWlmKCBhdXRvU2xpZGUgJiYgIWF1dG9TbGlkZVBhdXNlZCApIHsKCQkJYXV0b1NsaWRlUGF1c2VkID0gdHJ1ZTsKCQkJZGlzcGF0Y2hFdmVudCggJ2F1dG9zbGlkZXBhdXNlZCcgKTsKCQkJY2xlYXJUaW1lb3V0KCBhdXRvU2xpZGVUaW1lb3V0ICk7CgoJCQlpZiggYXV0b1NsaWRlUGxheWVyICkgewoJCQkJYXV0b1NsaWRlUGxheWVyLnNldFBsYXlpbmcoIGZhbHNlICk7CgkJCX0KCQl9CgoJfQoKCWZ1bmN0aW9uIHJlc3VtZUF1dG9TbGlkZSgpIHsKCgkJaWYoIGF1dG9TbGlkZSAmJiBhdXRvU2xpZGVQYXVzZWQgKSB7CgkJCWF1dG9TbGlkZVBhdXNlZCA9IGZhbHNlOwoJCQlkaXNwYXRjaEV2ZW50KCAnYXV0b3NsaWRlcmVzdW1lZCcgKTsKCQkJY3VlQXV0b1NsaWRlKCk7CgkJfQoKCX0KCglmdW5jdGlvbiBuYXZpZ2F0ZUxlZnQoKSB7CgoJCS8vIFJldmVyc2UgZm9yIFJUTAoJCWlmKCBjb25maWcucnRsICkgewoJCQlpZiggKCBpc092ZXJ2aWV3KCkgfHwgbmV4dEZyYWdtZW50KCkgPT09IGZhbHNlICkgJiYgYXZhaWxhYmxlUm91dGVzKCkubGVmdCApIHsKCQkJCXNsaWRlKCBpbmRleGggKyAxLCBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdncmlkJyA/IGluZGV4diA6IHVuZGVmaW5lZCApOwoJCQl9CgkJfQoJCS8vIE5vcm1hbCBuYXZpZ2F0aW9uCgkJZWxzZSBpZiggKCBpc092ZXJ2aWV3KCkgfHwgcHJldmlvdXNGcmFnbWVudCgpID09PSBmYWxzZSApICYmIGF2YWlsYWJsZVJvdXRlcygpLmxlZnQgKSB7CgkJCXNsaWRlKCBpbmRleGggLSAxLCBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdncmlkJyA/IGluZGV4diA6IHVuZGVmaW5lZCApOwoJCX0KCgl9CgoJZnVuY3Rpb24gbmF2aWdhdGVSaWdodCgpIHsKCgkJaGFzTmF2aWdhdGVkUmlnaHQgPSB0cnVlOwoKCQkvLyBSZXZlcnNlIGZvciBSVEwKCQlpZiggY29uZmlnLnJ0bCApIHsKCQkJaWYoICggaXNPdmVydmlldygpIHx8IHByZXZpb3VzRnJhZ21lbnQoKSA9PT0gZmFsc2UgKSAmJiBhdmFpbGFibGVSb3V0ZXMoKS5yaWdodCApIHsKCQkJCXNsaWRlKCBpbmRleGggLSAxLCBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdncmlkJyA/IGluZGV4diA6IHVuZGVmaW5lZCApOwoJCQl9CgkJfQoJCS8vIE5vcm1hbCBuYXZpZ2F0aW9uCgkJZWxzZSBpZiggKCBpc092ZXJ2aWV3KCkgfHwgbmV4dEZyYWdtZW50KCkgPT09IGZhbHNlICkgJiYgYXZhaWxhYmxlUm91dGVzKCkucmlnaHQgKSB7CgkJCXNsaWRlKCBpbmRleGggKyAxLCBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdncmlkJyA/IGluZGV4diA6IHVuZGVmaW5lZCApOwoJCX0KCgl9CgoJZnVuY3Rpb24gbmF2aWdhdGVVcCgpIHsKCgkJLy8gUHJpb3JpdGl6ZSBoaWRpbmcgZnJhZ21lbnRzCgkJaWYoICggaXNPdmVydmlldygpIHx8IHByZXZpb3VzRnJhZ21lbnQoKSA9PT0gZmFsc2UgKSAmJiBhdmFpbGFibGVSb3V0ZXMoKS51cCApIHsKCQkJc2xpZGUoIGluZGV4aCwgaW5kZXh2IC0gMSApOwoJCX0KCgl9CgoJZnVuY3Rpb24gbmF2aWdhdGVEb3duKCkgewoKCQloYXNOYXZpZ2F0ZWREb3duID0gdHJ1ZTsKCgkJLy8gUHJpb3JpdGl6ZSByZXZlYWxpbmcgZnJhZ21lbnRzCgkJaWYoICggaXNPdmVydmlldygpIHx8IG5leHRGcmFnbWVudCgpID09PSBmYWxzZSApICYmIGF2YWlsYWJsZVJvdXRlcygpLmRvd24gKSB7CgkJCXNsaWRlKCBpbmRleGgsIGluZGV4diArIDEgKTsKCQl9CgoJfQoKCS8qKgoJICogTmF2aWdhdGVzIGJhY2t3YXJkcywgcHJpb3JpdGl6ZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKCSAqIDEpIFByZXZpb3VzIGZyYWdtZW50CgkgKiAyKSBQcmV2aW91cyB2ZXJ0aWNhbCBzbGlkZQoJICogMykgUHJldmlvdXMgaG9yaXpvbnRhbCBzbGlkZQoJICovCglmdW5jdGlvbiBuYXZpZ2F0ZVByZXYoKSB7CgoJCS8vIFByaW9yaXRpemUgcmV2ZWFsaW5nIGZyYWdtZW50cwoJCWlmKCBwcmV2aW91c0ZyYWdtZW50KCkgPT09IGZhbHNlICkgewoJCQlpZiggYXZhaWxhYmxlUm91dGVzKCkudXAgKSB7CgkJCQluYXZpZ2F0ZVVwKCk7CgkJCX0KCQkJZWxzZSB7CgkJCQkvLyBGZXRjaCB0aGUgcHJldmlvdXMgaG9yaXpvbnRhbCBzbGlkZSwgaWYgdGhlcmUgaXMgb25lCgkJCQl2YXIgcHJldmlvdXNTbGlkZTsKCgkJCQlpZiggY29uZmlnLnJ0bCApIHsKCQkJCQlwcmV2aW91c1NsaWRlID0gdG9BcnJheSggZG9tLndyYXBwZXIucXVlcnlTZWxlY3RvckFsbCggSE9SSVpPTlRBTF9TTElERVNfU0VMRUNUT1IgKyAnLmZ1dHVyZScgKSApLnBvcCgpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJcHJldmlvdXNTbGlkZSA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICsgJy5wYXN0JyApICkucG9wKCk7CgkJCQl9CgoJCQkJaWYoIHByZXZpb3VzU2xpZGUgKSB7CgkJCQkJdmFyIHYgPSAoIHByZXZpb3VzU2xpZGUucXVlcnlTZWxlY3RvckFsbCggJ3NlY3Rpb24nICkubGVuZ3RoIC0gMSApIHx8IHVuZGVmaW5lZDsKCQkJCQl2YXIgaCA9IGluZGV4aCAtIDE7CgkJCQkJc2xpZGUoIGgsIHYgKTsKCQkJCX0KCQkJfQoJCX0KCgl9CgoJLyoqCgkgKiBUaGUgcmV2ZXJzZSBvZiAjbmF2aWdhdGVQcmV2KCkuCgkgKi8KCWZ1bmN0aW9uIG5hdmlnYXRlTmV4dCgpIHsKCgkJaGFzTmF2aWdhdGVkUmlnaHQgPSB0cnVlOwoJCWhhc05hdmlnYXRlZERvd24gPSB0cnVlOwoKCQkvLyBQcmlvcml0aXplIHJldmVhbGluZyBmcmFnbWVudHMKCQlpZiggbmV4dEZyYWdtZW50KCkgPT09IGZhbHNlICkgewoKCQkJdmFyIHJvdXRlcyA9IGF2YWlsYWJsZVJvdXRlcygpOwoKCQkJLy8gV2hlbiBsb29waW5nIGlzIGVuYWJsZWQgYHJvdXRlcy5kb3duYCBpcyBhbHdheXMgYXZhaWxhYmxlCgkJCS8vIHNvIHdlIG5lZWQgYSBzZXBhcmF0ZSBjaGVjayBmb3Igd2hlbiB3ZSd2ZSByZWFjaGVkIHRoZQoJCQkvLyBlbmQgb2YgYSBzdGFjayBhbmQgc2hvdWxkIG1vdmUgaG9yaXpvbnRhbGx5CgkJCWlmKCByb3V0ZXMuZG93biAmJiByb3V0ZXMucmlnaHQgJiYgY29uZmlnLmxvb3AgJiYgUmV2ZWFsLmlzTGFzdFZlcnRpY2FsU2xpZGUoIGN1cnJlbnRTbGlkZSApICkgewoJCQkJcm91dGVzLmRvd24gPSBmYWxzZTsKCQkJfQoKCQkJaWYoIHJvdXRlcy5kb3duICkgewoJCQkJbmF2aWdhdGVEb3duKCk7CgkJCX0KCQkJZWxzZSBpZiggY29uZmlnLnJ0bCApIHsKCQkJCW5hdmlnYXRlTGVmdCgpOwoJCQl9CgkJCWVsc2UgewoJCQkJbmF2aWdhdGVSaWdodCgpOwoJCQl9CgkJfQoKCX0KCgkvKioKCSAqIENoZWNrcyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcHJldmVudHMgdGhlIHRyaWdnZXJpbmcgb2YKCSAqIHN3aXBlIG5hdmlnYXRpb24uCgkgKi8KCWZ1bmN0aW9uIGlzU3dpcGVQcmV2ZW50ZWQoIHRhcmdldCApIHsKCgkJd2hpbGUoIHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0Lmhhc0F0dHJpYnV0ZSA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJaWYoIHRhcmdldC5oYXNBdHRyaWJ1dGUoICdkYXRhLXByZXZlbnQtc3dpcGUnICkgKSByZXR1cm4gdHJ1ZTsKCQkJdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgkJfQoKCQlyZXR1cm4gZmFsc2U7CgoJfQoKCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFVkVOVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCgoJLyoqCgkgKiBDYWxsZWQgYnkgYWxsIGV2ZW50IGhhbmRsZXJzIHRoYXQgYXJlIGJhc2VkIG9uIHVzZXIKCSAqIGlucHV0LgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBbZXZlbnRdCgkgKi8KCWZ1bmN0aW9uIG9uVXNlcklucHV0KCBldmVudCApIHsKCgkJaWYoIGNvbmZpZy5hdXRvU2xpZGVTdG9wcGFibGUgKSB7CgkJCXBhdXNlQXV0b1NsaWRlKCk7CgkJfQoKCX0KCgkvKioKCSAqIENhbGxlZCB3aGVuZXZlciB0aGVyZSBpcyBtb3VzZSBpbnB1dCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKCSAqIHRvIGRldGVybWluZSBpZiB0aGUgY3Vyc29yIGlzIGFjdGl2ZSBvciBub3QuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IGV2ZW50CgkgKi8KCWZ1bmN0aW9uIG9uRG9jdW1lbnRDdXJzb3JBY3RpdmUoIGV2ZW50ICkgewoKCQlzaG93Q3Vyc29yKCk7CgoJCWNsZWFyVGltZW91dCggY3Vyc29ySW5hY3RpdmVUaW1lb3V0ICk7CgoJCWN1cnNvckluYWN0aXZlVGltZW91dCA9IHNldFRpbWVvdXQoIGhpZGVDdXJzb3IsIGNvbmZpZy5oaWRlQ3Vyc29yVGltZSApOwoKCX0KCgkvKioKCSAqIEhhbmRsZXIgZm9yIHRoZSBkb2N1bWVudCBsZXZlbCAna2V5cHJlc3MnIGV2ZW50LgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBvbkRvY3VtZW50S2V5UHJlc3MoIGV2ZW50ICkgewoKCQkvLyBDaGVjayBpZiB0aGUgcHJlc3NlZCBrZXkgaXMgcXVlc3Rpb24gbWFyawoJCWlmKCBldmVudC5zaGlmdEtleSAmJiBldmVudC5jaGFyQ29kZSA9PT0gNjMgKSB7CgkJCXRvZ2dsZUhlbHAoKTsKCQl9CgoJfQoKCS8qKgoJICogSGFuZGxlciBmb3IgdGhlIGRvY3VtZW50IGxldmVsICdrZXlkb3duJyBldmVudC4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gb25Eb2N1bWVudEtleURvd24oIGV2ZW50ICkgewoKCQkvLyBJZiB0aGVyZSdzIGEgY29uZGl0aW9uIHNwZWNpZmllZCBhbmQgaXQgcmV0dXJucyBmYWxzZSwKCQkvLyBpZ25vcmUgdGhpcyBldmVudAoJCWlmKCB0eXBlb2YgY29uZmlnLmtleWJvYXJkQ29uZGl0aW9uID09PSAnZnVuY3Rpb24nICYmIGNvbmZpZy5rZXlib2FyZENvbmRpdGlvbihldmVudCkgPT09IGZhbHNlICkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCS8vIFNob3J0aGFuZAoJCXZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTsKCgkJLy8gUmVtZW1iZXIgaWYgYXV0by1zbGlkaW5nIHdhcyBwYXVzZWQgc28gd2UgY2FuIHRvZ2dsZSBpdAoJCXZhciBhdXRvU2xpZGVXYXNQYXVzZWQgPSBhdXRvU2xpZGVQYXVzZWQ7CgoJCW9uVXNlcklucHV0KCBldmVudCApOwoKCQkvLyBJcyB0aGVyZSBhIGZvY3VzZWQgZWxlbWVudCB0aGF0IGNvdWxkIGJlIHVzaW5nIHRoZSBrZXlib2FyZD8KCQl2YXIgYWN0aXZlRWxlbWVudElzQ0UgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY29udGVudEVkaXRhYmxlICE9PSAnaW5oZXJpdCc7CgkJdmFyIGFjdGl2ZUVsZW1lbnRJc0lucHV0ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUgJiYgL2lucHV0fHRleHRhcmVhL2kudGVzdCggZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lICk7CgkJdmFyIGFjdGl2ZUVsZW1lbnRJc05vdGVzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTmFtZSAmJiAvc3BlYWtlci1ub3Rlcy9pLnRlc3QoIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NOYW1lKTsKCgkJLy8gV2hpdGVsaXN0IHNwZWNpZmljIG1vZGlmaWVkICsga2V5Y29kZSBjb21iaW5hdGlvbnMKCQl2YXIgcHJldlNsaWRlU2hvcnRjdXQgPSBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXlDb2RlID09PSAzMjsKCQl2YXIgZmlyc3RTbGlkZVNob3J0Y3V0ID0gZXZlbnQuc2hpZnRLZXkgJiYga2V5Q29kZSA9PT0gMzc7CgkJdmFyIGxhc3RTbGlkZVNob3J0Y3V0ID0gZXZlbnQuc2hpZnRLZXkgJiYga2V5Q29kZSA9PT0gMzk7CgoJCS8vIFByZXZlbnQgYWxsIG90aGVyIGV2ZW50cyB3aGVuIGEgbW9kaWZpZXIgaXMgcHJlc3NlZAoJCXZhciB1bnVzZWRNb2RpZmllciA9IAkhcHJldlNsaWRlU2hvcnRjdXQgJiYgIWZpcnN0U2xpZGVTaG9ydGN1dCAmJiAhbGFzdFNsaWRlU2hvcnRjdXQgJiYKCQkJCQkJCQkoIGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKTsKCgkJLy8gRGlzcmVnYXJkIHRoZSBldmVudCBpZiB0aGVyZSdzIGEgZm9jdXNlZCBlbGVtZW50IG9yIGEKCQkvLyBrZXlib2FyZCBtb2RpZmllciBrZXkgaXMgcHJlc2VudAoJCWlmKCBhY3RpdmVFbGVtZW50SXNDRSB8fCBhY3RpdmVFbGVtZW50SXNJbnB1dCB8fCBhY3RpdmVFbGVtZW50SXNOb3RlcyB8fCB1bnVzZWRNb2RpZmllciApIHJldHVybjsKCgkJLy8gV2hpbGUgcGF1c2VkIG9ubHkgYWxsb3cgcmVzdW1lIGtleWJvYXJkIGV2ZW50czsgJ2InLCAndicsICcuJwoJCXZhciByZXN1bWVLZXlDb2RlcyA9IFs2Niw4NiwxOTAsMTkxXTsKCQl2YXIga2V5OwoKCQkvLyBDdXN0b20ga2V5IGJpbmRpbmdzIGZvciB0b2dnbGVQYXVzZSBzaG91bGQgYmUgYWJsZSB0byByZXN1bWUKCQlpZiggdHlwZW9mIGNvbmZpZy5rZXlib2FyZCA9PT0gJ29iamVjdCcgKSB7CgkJCWZvcigga2V5IGluIGNvbmZpZy5rZXlib2FyZCApIHsKCQkJCWlmKCBjb25maWcua2V5Ym9hcmRba2V5XSA9PT0gJ3RvZ2dsZVBhdXNlJyApIHsKCQkJCQlyZXN1bWVLZXlDb2Rlcy5wdXNoKCBwYXJzZUludCgga2V5LCAxMCApICk7CgkJCQl9CgkJCX0KCQl9CgoJCWlmKCBpc1BhdXNlZCgpICYmIHJlc3VtZUtleUNvZGVzLmluZGV4T2YoIGtleUNvZGUgKSA9PT0gLTEgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFVzZSBsaW5lYXIgbmF2aWdhdGlvbiBpZiB3ZSdyZSBjb25maWd1cmVkIHRvIE9SIGlmCgkJLy8gdGhlIHByZXNlbnRhdGlvbiBpcyBvbmUtZGltZW5zaW9uYWwKCQl2YXIgdXNlTGluZWFyTW9kZSA9IGNvbmZpZy5uYXZpZ2F0aW9uTW9kZSA9PT0gJ2xpbmVhcicgfHwgIWhhc0hvcml6b250YWxTbGlkZXMoKSB8fCAhaGFzVmVydGljYWxTbGlkZXMoKTsKCgkJdmFyIHRyaWdnZXJlZCA9IGZhbHNlOwoKCQkvLyAxLiBVc2VyIGRlZmluZWQga2V5IGJpbmRpbmdzCgkJaWYoIHR5cGVvZiBjb25maWcua2V5Ym9hcmQgPT09ICdvYmplY3QnICkgewoKCQkJZm9yKCBrZXkgaW4gY29uZmlnLmtleWJvYXJkICkgewoKCQkJCS8vIENoZWNrIGlmIHRoaXMgYmluZGluZyBtYXRjaGVzIHRoZSBwcmVzc2VkIGtleQoJCQkJaWYoIHBhcnNlSW50KCBrZXksIDEwICkgPT09IGtleUNvZGUgKSB7CgoJCQkJCXZhciB2YWx1ZSA9IGNvbmZpZy5rZXlib2FyZFsga2V5IF07CgoJCQkJCS8vIENhbGxiYWNrIGZ1bmN0aW9uCgkJCQkJaWYoIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCQkJdmFsdWUuYXBwbHkoIG51bGwsIFsgZXZlbnQgXSApOwoJCQkJCX0KCQkJCQkvLyBTdHJpbmcgc2hvcnRjdXRzIHRvIHJldmVhbC5qcyBBUEkKCQkJCQllbHNlIGlmKCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBSZXZlYWxbIHZhbHVlIF0gPT09ICdmdW5jdGlvbicgKSB7CgkJCQkJCVJldmVhbFsgdmFsdWUgXS5jYWxsKCk7CgkJCQkJfQoKCQkJCQl0cmlnZ2VyZWQgPSB0cnVlOwoKCQkJCX0KCgkJCX0KCgkJfQoKCQkvLyAyLiBSZWdpc3RlcmVkIGN1c3RvbSBrZXkgYmluZGluZ3MKCQlpZiggdHJpZ2dlcmVkID09PSBmYWxzZSApIHsKCgkJCWZvcigga2V5IGluIHJlZ2lzdGVyZWRLZXlCaW5kaW5ncyApIHsKCgkJCQkvLyBDaGVjayBpZiB0aGlzIGJpbmRpbmcgbWF0Y2hlcyB0aGUgcHJlc3NlZCBrZXkKCQkJCWlmKCBwYXJzZUludCgga2V5LCAxMCApID09PSBrZXlDb2RlICkgewoKCQkJCQl2YXIgYWN0aW9uID0gcmVnaXN0ZXJlZEtleUJpbmRpbmdzWyBrZXkgXS5jYWxsYmFjazsKCgkJCQkJLy8gQ2FsbGJhY2sgZnVuY3Rpb24KCQkJCQlpZiggdHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCQkJYWN0aW9uLmFwcGx5KCBudWxsLCBbIGV2ZW50IF0gKTsKCQkJCQl9CgkJCQkJLy8gU3RyaW5nIHNob3J0Y3V0cyB0byByZXZlYWwuanMgQVBJCgkJCQkJZWxzZSBpZiggdHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIFJldmVhbFsgYWN0aW9uIF0gPT09ICdmdW5jdGlvbicgKSB7CgkJCQkJCVJldmVhbFsgYWN0aW9uIF0uY2FsbCgpOwoJCQkJCX0KCgkJCQkJdHJpZ2dlcmVkID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gMy4gU3lzdGVtIGRlZmluZWQga2V5IGJpbmRpbmdzCgkJaWYoIHRyaWdnZXJlZCA9PT0gZmFsc2UgKSB7CgoJCQkvLyBBc3N1bWUgdHJ1ZSBhbmQgdHJ5IHRvIHByb3ZlIGZhbHNlCgkJCXRyaWdnZXJlZCA9IHRydWU7CgoJCQkvLyBQLCBQQUdFIFVQCgkJCWlmKCBrZXlDb2RlID09PSA4MCB8fCBrZXlDb2RlID09PSAzMyApIHsKCQkJCW5hdmlnYXRlUHJldigpOwoJCQl9CgkJCS8vIE4sIFBBR0UgRE9XTgoJCQllbHNlIGlmKCBrZXlDb2RlID09PSA3OCB8fCBrZXlDb2RlID09PSAzNCApIHsKCQkJCW5hdmlnYXRlTmV4dCgpOwoJCQl9CgkJCS8vIEgsIExFRlQKCQkJZWxzZSBpZigga2V5Q29kZSA9PT0gNzIgfHwga2V5Q29kZSA9PT0gMzcgKSB7CgkJCQlpZiggZmlyc3RTbGlkZVNob3J0Y3V0ICkgewoJCQkJCXNsaWRlKCAwICk7CgkJCQl9CgkJCQllbHNlIGlmKCAhaXNPdmVydmlldygpICYmIHVzZUxpbmVhck1vZGUgKSB7CgkJCQkJbmF2aWdhdGVQcmV2KCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQluYXZpZ2F0ZUxlZnQoKTsKCQkJCX0KCQkJfQoJCQkvLyBMLCBSSUdIVAoJCQllbHNlIGlmKCBrZXlDb2RlID09PSA3NiB8fCBrZXlDb2RlID09PSAzOSApIHsKCQkJCWlmKCBsYXN0U2xpZGVTaG9ydGN1dCApIHsKCQkJCQlzbGlkZSggTnVtYmVyLk1BWF9WQUxVRSApOwoJCQkJfQoJCQkJZWxzZSBpZiggIWlzT3ZlcnZpZXcoKSAmJiB1c2VMaW5lYXJNb2RlICkgewoJCQkJCW5hdmlnYXRlTmV4dCgpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbmF2aWdhdGVSaWdodCgpOwoJCQkJfQoJCQl9CgkJCS8vIEssIFVQCgkJCWVsc2UgaWYoIGtleUNvZGUgPT09IDc1IHx8IGtleUNvZGUgPT09IDM4ICkgewoJCQkJaWYoICFpc092ZXJ2aWV3KCkgJiYgdXNlTGluZWFyTW9kZSApIHsKCQkJCQluYXZpZ2F0ZVByZXYoKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCW5hdmlnYXRlVXAoKTsKCQkJCX0KCQkJfQoJCQkvLyBKLCBET1dOCgkJCWVsc2UgaWYoIGtleUNvZGUgPT09IDc0IHx8IGtleUNvZGUgPT09IDQwICkgewoJCQkJaWYoICFpc092ZXJ2aWV3KCkgJiYgdXNlTGluZWFyTW9kZSApIHsKCQkJCQluYXZpZ2F0ZU5leHQoKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCW5hdmlnYXRlRG93bigpOwoJCQkJfQoJCQl9CgkJCS8vIEhPTUUKCQkJZWxzZSBpZigga2V5Q29kZSA9PT0gMzYgKSB7CgkJCQlzbGlkZSggMCApOwoJCQl9CgkJCS8vIEVORAoJCQllbHNlIGlmKCBrZXlDb2RlID09PSAzNSApIHsKCQkJCXNsaWRlKCBOdW1iZXIuTUFYX1ZBTFVFICk7CgkJCX0KCQkJLy8gU1BBQ0UKCQkJZWxzZSBpZigga2V5Q29kZSA9PT0gMzIgKSB7CgkJCQlpZiggaXNPdmVydmlldygpICkgewoJCQkJCWRlYWN0aXZhdGVPdmVydmlldygpOwoJCQkJfQoJCQkJaWYoIGV2ZW50LnNoaWZ0S2V5ICkgewoJCQkJCW5hdmlnYXRlUHJldigpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbmF2aWdhdGVOZXh0KCk7CgkJCQl9CgkJCX0KCQkJLy8gVFdPLVNQT1QsIFNFTUlDT0xPTiwgQiwgViwgUEVSSU9ELCBMT0dJVEVDSCBQUkVTRU5URVIgVE9PTFMgIkJMQUNLIFNDUkVFTiIgQlVUVE9OCgkJCWVsc2UgaWYoIGtleUNvZGUgPT09IDU4IHx8IGtleUNvZGUgPT09IDU5IHx8IGtleUNvZGUgPT09IDY2IHx8IGtleUNvZGUgPT09IDg2IHx8IGtleUNvZGUgPT09IDE5MCB8fCBrZXlDb2RlID09PSAxOTEgKSB7CgkJCQl0b2dnbGVQYXVzZSgpOwoJCQl9CgkJCS8vIEYKCQkJZWxzZSBpZigga2V5Q29kZSA9PT0gNzAgKSB7CgkJCQllbnRlckZ1bGxzY3JlZW4oKTsKCQkJfQoJCQkvLyBBCgkJCWVsc2UgaWYoIGtleUNvZGUgPT09IDY1ICkgewoJCQkJaWYgKCBjb25maWcuYXV0b1NsaWRlU3RvcHBhYmxlICkgewoJCQkJCXRvZ2dsZUF1dG9TbGlkZSggYXV0b1NsaWRlV2FzUGF1c2VkICk7CgkJCQl9CgkJCX0KCQkJZWxzZSB7CgkJCQl0cmlnZ2VyZWQgPSBmYWxzZTsKCQkJfQoKCQl9CgoJCS8vIElmIHRoZSBpbnB1dCByZXN1bHRlZCBpbiBhIHRyaWdnZXJlZCBhY3Rpb24gd2Ugc2hvdWxkIHByZXZlbnQKCQkvLyB0aGUgYnJvd3NlcnMgZGVmYXVsdCBiZWhhdmlvcgoJCWlmKCB0cmlnZ2VyZWQgKSB7CgkJCWV2ZW50LnByZXZlbnREZWZhdWx0ICYmIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJfQoJCS8vIEVTQyBvciBPIGtleQoJCWVsc2UgaWYgKCAoIGtleUNvZGUgPT09IDI3IHx8IGtleUNvZGUgPT09IDc5ICkgJiYgZmVhdHVyZXMudHJhbnNmb3JtczNkICkgewoJCQlpZiggZG9tLm92ZXJsYXkgKSB7CgkJCQljbG9zZU92ZXJsYXkoKTsKCQkJfQoJCQllbHNlIHsKCQkJCXRvZ2dsZU92ZXJ2aWV3KCk7CgkJCX0KCgkJCWV2ZW50LnByZXZlbnREZWZhdWx0ICYmIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJfQoKCQkvLyBJZiBhdXRvLXNsaWRpbmcgaXMgZW5hYmxlZCB3ZSBuZWVkIHRvIGN1ZSB1cAoJCS8vIGFub3RoZXIgdGltZW91dAoJCWN1ZUF1dG9TbGlkZSgpOwoKCX0KCgkvKioKCSAqIEhhbmRsZXIgZm9yIHRoZSAndG91Y2hzdGFydCcgZXZlbnQsIGVuYWJsZXMgc3VwcG9ydCBmb3IKCSAqIHN3aXBlIGFuZCBwaW5jaCBnZXN0dXJlcy4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCBldmVudCApIHsKCgkJaWYoIGlzU3dpcGVQcmV2ZW50ZWQoIGV2ZW50LnRhcmdldCApICkgcmV0dXJuIHRydWU7CgoJCXRvdWNoLnN0YXJ0WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsKCQl0b3VjaC5zdGFydFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7CgkJdG91Y2guc3RhcnRDb3VudCA9IGV2ZW50LnRvdWNoZXMubGVuZ3RoOwoKCX0KCgkvKioKCSAqIEhhbmRsZXIgZm9yIHRoZSAndG91Y2htb3ZlJyBldmVudC4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gb25Ub3VjaE1vdmUoIGV2ZW50ICkgewoKCQlpZiggaXNTd2lwZVByZXZlbnRlZCggZXZlbnQudGFyZ2V0ICkgKSByZXR1cm4gdHJ1ZTsKCgkJLy8gRWFjaCB0b3VjaCBzaG91bGQgb25seSB0cmlnZ2VyIG9uZSBhY3Rpb24KCQlpZiggIXRvdWNoLmNhcHR1cmVkICkgewoJCQlvblVzZXJJbnB1dCggZXZlbnQgKTsKCgkJCXZhciBjdXJyZW50WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsKCQkJdmFyIGN1cnJlbnRZID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRZOwoKCQkJLy8gVGhlcmUgd2FzIG9ubHkgb25lIHRvdWNoIHBvaW50LCBsb29rIGZvciBhIHN3aXBlCgkJCWlmKCBldmVudC50b3VjaGVzLmxlbmd0aCA9PT0gMSAmJiB0b3VjaC5zdGFydENvdW50ICE9PSAyICkgewoKCQkJCXZhciBkZWx0YVggPSBjdXJyZW50WCAtIHRvdWNoLnN0YXJ0WCwKCQkJCQlkZWx0YVkgPSBjdXJyZW50WSAtIHRvdWNoLnN0YXJ0WTsKCgkJCQlpZiggZGVsdGFYID4gdG91Y2gudGhyZXNob2xkICYmIE1hdGguYWJzKCBkZWx0YVggKSA+IE1hdGguYWJzKCBkZWx0YVkgKSApIHsKCQkJCQl0b3VjaC5jYXB0dXJlZCA9IHRydWU7CgkJCQkJbmF2aWdhdGVMZWZ0KCk7CgkJCQl9CgkJCQllbHNlIGlmKCBkZWx0YVggPCAtdG91Y2gudGhyZXNob2xkICYmIE1hdGguYWJzKCBkZWx0YVggKSA+IE1hdGguYWJzKCBkZWx0YVkgKSApIHsKCQkJCQl0b3VjaC5jYXB0dXJlZCA9IHRydWU7CgkJCQkJbmF2aWdhdGVSaWdodCgpOwoJCQkJfQoJCQkJZWxzZSBpZiggZGVsdGFZID4gdG91Y2gudGhyZXNob2xkICkgewoJCQkJCXRvdWNoLmNhcHR1cmVkID0gdHJ1ZTsKCQkJCQluYXZpZ2F0ZVVwKCk7CgkJCQl9CgkJCQllbHNlIGlmKCBkZWx0YVkgPCAtdG91Y2gudGhyZXNob2xkICkgewoJCQkJCXRvdWNoLmNhcHR1cmVkID0gdHJ1ZTsKCQkJCQluYXZpZ2F0ZURvd24oKTsKCQkJCX0KCgkJCQkvLyBJZiB3ZSdyZSBlbWJlZGRlZCwgb25seSBibG9jayB0b3VjaCBldmVudHMgaWYgdGhleSBoYXZlCgkJCQkvLyB0cmlnZ2VyZWQgYW4gYWN0aW9uCgkJCQlpZiggY29uZmlnLmVtYmVkZGVkICkgewoJCQkJCWlmKCB0b3VjaC5jYXB0dXJlZCB8fCBpc1ZlcnRpY2FsU2xpZGUoIGN1cnJlbnRTbGlkZSApICkgewoJCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCX0KCQkJCX0KCQkJCS8vIE5vdCBlbWJlZGRlZD8gQmxvY2sgdGhlbSBhbGwgdG8gYXZvaWQgbmVlZGxlc3MgdG9zc2luZwoJCQkJLy8gYXJvdW5kIG9mIHRoZSB2aWV3cG9ydCBpbiBpT1MKCQkJCWVsc2UgewoJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJCQl9CgoJCQl9CgkJfQoJCS8vIFRoZXJlJ3MgYSBidWcgd2l0aCBzd2lwaW5nIG9uIHNvbWUgQW5kcm9pZCBkZXZpY2VzIHVubGVzcwoJCS8vIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyBhbHdheXMgcHJldmVudGVkCgkJZWxzZSBpZiggVUEubWF0Y2goIC9hbmRyb2lkL2dpICkgKSB7CgkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJfQoKCX0KCgkvKioKCSAqIEhhbmRsZXIgZm9yIHRoZSAndG91Y2hlbmQnIGV2ZW50LgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBvblRvdWNoRW5kKCBldmVudCApIHsKCgkJdG91Y2guY2FwdHVyZWQgPSBmYWxzZTsKCgl9CgoJLyoqCgkgKiBDb252ZXJ0IHBvaW50ZXIgZG93biB0byB0b3VjaCBzdGFydC4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gb25Qb2ludGVyRG93biggZXZlbnQgKSB7CgoJCWlmKCBldmVudC5wb2ludGVyVHlwZSA9PT0gZXZlbnQuTVNQT0lOVEVSX1RZUEVfVE9VQ0ggfHwgZXZlbnQucG9pbnRlclR5cGUgPT09ICJ0b3VjaCIgKSB7CgkJCWV2ZW50LnRvdWNoZXMgPSBbeyBjbGllbnRYOiBldmVudC5jbGllbnRYLCBjbGllbnRZOiBldmVudC5jbGllbnRZIH1dOwoJCQlvblRvdWNoU3RhcnQoIGV2ZW50ICk7CgkJfQoKCX0KCgkvKioKCSAqIENvbnZlcnQgcG9pbnRlciBtb3ZlIHRvIHRvdWNoIG1vdmUuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IGV2ZW50CgkgKi8KCWZ1bmN0aW9uIG9uUG9pbnRlck1vdmUoIGV2ZW50ICkgewoKCQlpZiggZXZlbnQucG9pbnRlclR5cGUgPT09IGV2ZW50Lk1TUE9JTlRFUl9UWVBFX1RPVUNIIHx8IGV2ZW50LnBvaW50ZXJUeXBlID09PSAidG91Y2giICkgIHsKCQkJZXZlbnQudG91Y2hlcyA9IFt7IGNsaWVudFg6IGV2ZW50LmNsaWVudFgsIGNsaWVudFk6IGV2ZW50LmNsaWVudFkgfV07CgkJCW9uVG91Y2hNb3ZlKCBldmVudCApOwoJCX0KCgl9CgoJLyoqCgkgKiBDb252ZXJ0IHBvaW50ZXIgdXAgdG8gdG91Y2ggZW5kLgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBvblBvaW50ZXJVcCggZXZlbnQgKSB7CgoJCWlmKCBldmVudC5wb2ludGVyVHlwZSA9PT0gZXZlbnQuTVNQT0lOVEVSX1RZUEVfVE9VQ0ggfHwgZXZlbnQucG9pbnRlclR5cGUgPT09ICJ0b3VjaCIgKSAgewoJCQlldmVudC50b3VjaGVzID0gW3sgY2xpZW50WDogZXZlbnQuY2xpZW50WCwgY2xpZW50WTogZXZlbnQuY2xpZW50WSB9XTsKCQkJb25Ub3VjaEVuZCggZXZlbnQgKTsKCQl9CgoJfQoKCS8qKgoJICogSGFuZGxlcyBtb3VzZSB3aGVlbCBzY3JvbGxpbmcsIHRocm90dGxlZCB0byBhdm9pZCBza2lwcGluZwoJICogbXVsdGlwbGUgc2xpZGVzLgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VTY3JvbGwoIGV2ZW50ICkgewoKCQlpZiggRGF0ZS5ub3coKSAtIGxhc3RNb3VzZVdoZWVsU3RlcCA+IDYwMCApIHsKCgkJCWxhc3RNb3VzZVdoZWVsU3RlcCA9IERhdGUubm93KCk7CgoJCQl2YXIgZGVsdGEgPSBldmVudC5kZXRhaWwgfHwgLWV2ZW50LndoZWVsRGVsdGE7CgkJCWlmKCBkZWx0YSA+IDAgKSB7CgkJCQluYXZpZ2F0ZU5leHQoKTsKCQkJfQoJCQllbHNlIGlmKCBkZWx0YSA8IDAgKSB7CgkJCQluYXZpZ2F0ZVByZXYoKTsKCQkJfQoKCQl9CgoJfQoKCS8qKgoJICogQ2xpY2tpbmcgb24gdGhlIHByb2dyZXNzIGJhciByZXN1bHRzIGluIGEgbmF2aWdhdGlvbiB0byB0aGUKCSAqIGNsb3Nlc3QgYXBwcm94aW1hdGUgaG9yaXpvbnRhbCBzbGlkZSB1c2luZyB0aGlzIGVxdWF0aW9uOgoJICoKCSAqICggY2xpY2tYIC8gcHJlc2VudGF0aW9uV2lkdGggKSAqIG51bWJlck9mU2xpZGVzCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IGV2ZW50CgkgKi8KCWZ1bmN0aW9uIG9uUHJvZ3Jlc3NDbGlja2VkKCBldmVudCApIHsKCgkJb25Vc2VySW5wdXQoIGV2ZW50ICk7CgoJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgoJCXZhciBzbGlkZXNUb3RhbCA9IHRvQXJyYXkoIGRvbS53cmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoIEhPUklaT05UQUxfU0xJREVTX1NFTEVDVE9SICkgKS5sZW5ndGg7CgkJdmFyIHNsaWRlSW5kZXggPSBNYXRoLmZsb29yKCAoIGV2ZW50LmNsaWVudFggLyBkb20ud3JhcHBlci5vZmZzZXRXaWR0aCApICogc2xpZGVzVG90YWwgKTsKCgkJaWYoIGNvbmZpZy5ydGwgKSB7CgkJCXNsaWRlSW5kZXggPSBzbGlkZXNUb3RhbCAtIHNsaWRlSW5kZXg7CgkJfQoKCQlzbGlkZSggc2xpZGVJbmRleCApOwoKCX0KCgkvKioKCSAqIEV2ZW50IGhhbmRsZXIgZm9yIG5hdmlnYXRpb24gY29udHJvbCBidXR0b25zLgoJICovCglmdW5jdGlvbiBvbk5hdmlnYXRlTGVmdENsaWNrZWQoIGV2ZW50ICkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBvblVzZXJJbnB1dCgpOyBjb25maWcubmF2aWdhdGlvbk1vZGUgPT09ICdsaW5lYXInID8gbmF2aWdhdGVQcmV2KCkgOiBuYXZpZ2F0ZUxlZnQoKTsgfQoJZnVuY3Rpb24gb25OYXZpZ2F0ZVJpZ2h0Q2xpY2tlZCggZXZlbnQgKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9uVXNlcklucHV0KCk7IGNvbmZpZy5uYXZpZ2F0aW9uTW9kZSA9PT0gJ2xpbmVhcicgPyBuYXZpZ2F0ZU5leHQoKSA6IG5hdmlnYXRlUmlnaHQoKTsgfQoJZnVuY3Rpb24gb25OYXZpZ2F0ZVVwQ2xpY2tlZCggZXZlbnQgKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9uVXNlcklucHV0KCk7IG5hdmlnYXRlVXAoKTsgfQoJZnVuY3Rpb24gb25OYXZpZ2F0ZURvd25DbGlja2VkKCBldmVudCApIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgb25Vc2VySW5wdXQoKTsgbmF2aWdhdGVEb3duKCk7IH0KCWZ1bmN0aW9uIG9uTmF2aWdhdGVQcmV2Q2xpY2tlZCggZXZlbnQgKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9uVXNlcklucHV0KCk7IG5hdmlnYXRlUHJldigpOyB9CglmdW5jdGlvbiBvbk5hdmlnYXRlTmV4dENsaWNrZWQoIGV2ZW50ICkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBvblVzZXJJbnB1dCgpOyBuYXZpZ2F0ZU5leHQoKTsgfQoKCS8qKgoJICogSGFuZGxlciBmb3IgdGhlIHdpbmRvdyBsZXZlbCAnaGFzaGNoYW5nZScgZXZlbnQuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IFtldmVudF0KCSAqLwoJZnVuY3Rpb24gb25XaW5kb3dIYXNoQ2hhbmdlKCBldmVudCApIHsKCgkJcmVhZFVSTCgpOwoKCX0KCgkvKioKCSAqIEhhbmRsZXIgZm9yIHRoZSB3aW5kb3cgbGV2ZWwgJ3Jlc2l6ZScgZXZlbnQuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IFtldmVudF0KCSAqLwoJZnVuY3Rpb24gb25XaW5kb3dSZXNpemUoIGV2ZW50ICkgewoKCQlsYXlvdXQoKTsKCgl9CgoJLyoqCgkgKiBIYW5kbGUgZm9yIHRoZSB3aW5kb3cgbGV2ZWwgJ3Zpc2liaWxpdHljaGFuZ2UnIGV2ZW50LgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBbZXZlbnRdCgkgKi8KCWZ1bmN0aW9uIG9uUGFnZVZpc2liaWxpdHlDaGFuZ2UoIGV2ZW50ICkgewoKCQl2YXIgaXNIaWRkZW4gPSAgZG9jdW1lbnQud2Via2l0SGlkZGVuIHx8CgkJCQkJCWRvY3VtZW50Lm1zSGlkZGVuIHx8CgkJCQkJCWRvY3VtZW50LmhpZGRlbjsKCgkJLy8gSWYsIGFmdGVyIGNsaWNraW5nIGEgbGluayBvciBzaW1pbGFyIGFuZCB3ZSdyZSBjb21pbmcgYmFjaywKCQkvLyBmb2N1cyB0aGUgZG9jdW1lbnQuYm9keSB0byBlbnN1cmUgd2UgY2FuIHVzZSBrZXlib2FyZCBzaG9ydGN1dHMKCQlpZiggaXNIaWRkZW4gPT09IGZhbHNlICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkgKSB7CgkJCS8vIE5vdCBhbGwgZWxlbWVudHMgc3VwcG9ydCAuYmx1cigpIC0gU1ZHcyBhbW9uZyB0aGVtLgoJCQlpZiggdHlwZW9mIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1ciA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpOwoJCQl9CgkJCWRvY3VtZW50LmJvZHkuZm9jdXMoKTsKCQl9CgoJfQoKCS8qKgoJICogSW52b2tlZCB3aGVuIGEgc2xpZGUgaXMgYW5kIHdlJ3JlIGluIHRoZSBvdmVydmlldy4KCSAqCgkgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQKCSAqLwoJZnVuY3Rpb24gb25PdmVydmlld1NsaWRlQ2xpY2tlZCggZXZlbnQgKSB7CgoJCS8vIFRPRE8gVGhlcmUncyBhIGJ1ZyBoZXJlIHdoZXJlIHRoZSBldmVudCBsaXN0ZW5lcnMgYXJlIG5vdAoJCS8vIHJlbW92ZWQgYWZ0ZXIgZGVhY3RpdmF0aW5nIHRoZSBvdmVydmlldy4KCQlpZiggZXZlbnRzQXJlQm91bmQgJiYgaXNPdmVydmlldygpICkgewoJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKCQkJdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQ7CgoJCQl3aGlsZSggZWxlbWVudCAmJiAhZWxlbWVudC5ub2RlTmFtZS5tYXRjaCggL3NlY3Rpb24vZ2kgKSApIHsKCQkJCWVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CgkJCX0KCgkJCWlmKCBlbGVtZW50ICYmICFlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyggJ2Rpc2FibGVkJyApICkgewoKCQkJCWRlYWN0aXZhdGVPdmVydmlldygpOwoKCQkJCWlmKCBlbGVtZW50Lm5vZGVOYW1lLm1hdGNoKCAvc2VjdGlvbi9naSApICkgewoJCQkJCXZhciBoID0gcGFyc2VJbnQoIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCAnZGF0YS1pbmRleC1oJyApLCAxMCApLAoJCQkJCQl2ID0gcGFyc2VJbnQoIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCAnZGF0YS1pbmRleC12JyApLCAxMCApOwoKCQkJCQlzbGlkZSggaCwgdiApOwoJCQkJfQoKCQkJfQoJCX0KCgl9CgoJLyoqCgkgKiBIYW5kbGVzIGNsaWNrcyBvbiBsaW5rcyB0aGF0IGFyZSBzZXQgdG8gcHJldmlldyBpbiB0aGUKCSAqIGlmcmFtZSBvdmVybGF5LgoJICoKCSAqIEBwYXJhbSB7b2JqZWN0fSBldmVudAoJICovCglmdW5jdGlvbiBvblByZXZpZXdMaW5rQ2xpY2tlZCggZXZlbnQgKSB7CgoJCWlmKCBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQuaGFzQXR0cmlidXRlKCAnaHJlZicgKSApIHsKCQkJdmFyIHVybCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCAnaHJlZicgKTsKCQkJaWYoIHVybCApIHsKCQkJCXNob3dQcmV2aWV3KCB1cmwgKTsKCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJCX0KCQl9CgoJfQoKCS8qKgoJICogSGFuZGxlcyBjbGljayBvbiB0aGUgYXV0by1zbGlkaW5nIGNvbnRyb2xzIGVsZW1lbnQuCgkgKgoJICogQHBhcmFtIHtvYmplY3R9IFtldmVudF0KCSAqLwoJZnVuY3Rpb24gb25BdXRvU2xpZGVQbGF5ZXJDbGljayggZXZlbnQgKSB7CgoJCS8vIFJlcGxheQoJCWlmKCBSZXZlYWwuaXNMYXN0U2xpZGUoKSAmJiBjb25maWcubG9vcCA9PT0gZmFsc2UgKSB7CgkJCXNsaWRlKCAwLCAwICk7CgkJCXJlc3VtZUF1dG9TbGlkZSgpOwoJCX0KCQkvLyBSZXN1bWUKCQllbHNlIGlmKCBhdXRvU2xpZGVQYXVzZWQgKSB7CgkJCXJlc3VtZUF1dG9TbGlkZSgpOwoJCX0KCQkvLyBQYXVzZQoJCWVsc2UgewoJCQlwYXVzZUF1dG9TbGlkZSgpOwoJCX0KCgl9CgoKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQTEFZQkFDSyBDT01QT05FTlQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KCgoJLyoqCgkgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIHBsYXliYWNrIGNvbXBvbmVudCwgd2hpY2ggZGlzcGxheXMKCSAqIHBsYXkvcGF1c2UvcHJvZ3Jlc3MgY29udHJvbHMuCgkgKgoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIFRoZSBjb21wb25lbnQgd2lsbCBhcHBlbmQKCSAqIGl0c2VsZiB0byB0aGlzCgkgKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9ncmVzc0NoZWNrIEEgbWV0aG9kIHdoaWNoIHdpbGwgYmUKCSAqIGNhbGxlZCBmcmVxdWVudGx5IHRvIGdldCB0aGUgY3VycmVudCBwcm9ncmVzcyBvbiBhIHJhbmdlCgkgKiBvZiAwLTEKCSAqLwoJZnVuY3Rpb24gUGxheWJhY2soIGNvbnRhaW5lciwgcHJvZ3Jlc3NDaGVjayApIHsKCgkJLy8gQ29zbWV0aWNzCgkJdGhpcy5kaWFtZXRlciA9IDEwMDsKCQl0aGlzLmRpYW1ldGVyMiA9IHRoaXMuZGlhbWV0ZXIvMjsKCQl0aGlzLnRoaWNrbmVzcyA9IDY7CgoJCS8vIEZsYWdzIGlmIHdlIGFyZSBjdXJyZW50bHkgcGxheWluZwoJCXRoaXMucGxheWluZyA9IGZhbHNlOwoKCQkvLyBDdXJyZW50IHByb2dyZXNzIG9uIGEgMC0xIHJhbmdlCgkJdGhpcy5wcm9ncmVzcyA9IDA7CgoJCS8vIFVzZWQgdG8gbG9vcCB0aGUgYW5pbWF0aW9uIHNtb290aGx5CgkJdGhpcy5wcm9ncmVzc09mZnNldCA9IDE7CgoJCXRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwoJCXRoaXMucHJvZ3Jlc3NDaGVjayA9IHByb2dyZXNzQ2hlY2s7CgoJCXRoaXMuY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2NhbnZhcycgKTsKCQl0aGlzLmNhbnZhcy5jbGFzc05hbWUgPSAncGxheWJhY2snOwoJCXRoaXMuY2FudmFzLndpZHRoID0gdGhpcy5kaWFtZXRlcjsKCQl0aGlzLmNhbnZhcy5oZWlnaHQgPSB0aGlzLmRpYW1ldGVyOwoJCXRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gdGhpcy5kaWFtZXRlcjIgKyAncHgnOwoJCXRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9IHRoaXMuZGlhbWV0ZXIyICsgJ3B4JzsKCQl0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCAnMmQnICk7CgoJCXRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKCB0aGlzLmNhbnZhcyApOwoKCQl0aGlzLnJlbmRlcigpOwoKCX0KCgkvKioKCSAqIEBwYXJhbSB2YWx1ZQoJICovCglQbGF5YmFjay5wcm90b3R5cGUuc2V0UGxheWluZyA9IGZ1bmN0aW9uKCB2YWx1ZSApIHsKCgkJdmFyIHdhc1BsYXlpbmcgPSB0aGlzLnBsYXlpbmc7CgoJCXRoaXMucGxheWluZyA9IHZhbHVlOwoKCQkvLyBTdGFydCByZXBhaW50aW5nIGlmIHdlIHdlcmVuJ3QgYWxyZWFkeQoJCWlmKCAhd2FzUGxheWluZyAmJiB0aGlzLnBsYXlpbmcgKSB7CgkJCXRoaXMuYW5pbWF0ZSgpOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5yZW5kZXIoKTsKCQl9CgoJfTsKCglQbGF5YmFjay5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgewoKCQl2YXIgcHJvZ3Jlc3NCZWZvcmUgPSB0aGlzLnByb2dyZXNzOwoKCQl0aGlzLnByb2dyZXNzID0gdGhpcy5wcm9ncmVzc0NoZWNrKCk7CgoJCS8vIFdoZW4gd2UgbG9vcCwgb2Zmc2V0IHRoZSBwcm9ncmVzcyBzbyB0aGF0IGl0IGVhc2VzCgkJLy8gc21vb3RobHkgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgcmVzZXR0aW5nCgkJaWYoIHByb2dyZXNzQmVmb3JlID4gMC44ICYmIHRoaXMucHJvZ3Jlc3MgPCAwLjIgKSB7CgkJCXRoaXMucHJvZ3Jlc3NPZmZzZXQgPSB0aGlzLnByb2dyZXNzOwoJCX0KCgkJdGhpcy5yZW5kZXIoKTsKCgkJaWYoIHRoaXMucGxheWluZyApIHsKCQkJZmVhdHVyZXMucmVxdWVzdEFuaW1hdGlvbkZyYW1lTWV0aG9kLmNhbGwoIHdpbmRvdywgdGhpcy5hbmltYXRlLmJpbmQoIHRoaXMgKSApOwoJCX0KCgl9OwoKCS8qKgoJICogUmVuZGVycyB0aGUgY3VycmVudCBwcm9ncmVzcyBhbmQgcGxheWJhY2sgc3RhdGUuCgkgKi8KCVBsYXliYWNrLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKCgkJdmFyIHByb2dyZXNzID0gdGhpcy5wbGF5aW5nID8gdGhpcy5wcm9ncmVzcyA6IDAsCgkJCXJhZGl1cyA9ICggdGhpcy5kaWFtZXRlcjIgKSAtIHRoaXMudGhpY2tuZXNzLAoJCQl4ID0gdGhpcy5kaWFtZXRlcjIsCgkJCXkgPSB0aGlzLmRpYW1ldGVyMiwKCQkJaWNvblNpemUgPSAyODsKCgkJLy8gRWFzZSB0b3dhcmRzIDEKCQl0aGlzLnByb2dyZXNzT2Zmc2V0ICs9ICggMSAtIHRoaXMucHJvZ3Jlc3NPZmZzZXQgKSAqIDAuMTsKCgkJdmFyIGVuZEFuZ2xlID0gKCAtIE1hdGguUEkgLyAyICkgKyAoIHByb2dyZXNzICogKCBNYXRoLlBJICogMiApICk7CgkJdmFyIHN0YXJ0QW5nbGUgPSAoIC0gTWF0aC5QSSAvIDIgKSArICggdGhpcy5wcm9ncmVzc09mZnNldCAqICggTWF0aC5QSSAqIDIgKSApOwoKCQl0aGlzLmNvbnRleHQuc2F2ZSgpOwoJCXRoaXMuY29udGV4dC5jbGVhclJlY3QoIDAsIDAsIHRoaXMuZGlhbWV0ZXIsIHRoaXMuZGlhbWV0ZXIgKTsKCgkJLy8gU29saWQgYmFja2dyb3VuZCBjb2xvcgoJCXRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKCQl0aGlzLmNvbnRleHQuYXJjKCB4LCB5LCByYWRpdXMgKyA0LCAwLCBNYXRoLlBJICogMiwgZmFsc2UgKTsKCQl0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYmEoIDAsIDAsIDAsIDAuNCApJzsKCQl0aGlzLmNvbnRleHQuZmlsbCgpOwoKCQkvLyBEcmF3IHByb2dyZXNzIHRyYWNrCgkJdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpOwoJCXRoaXMuY29udGV4dC5hcmMoIHgsIHksIHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIGZhbHNlICk7CgkJdGhpcy5jb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMudGhpY2tuZXNzOwoJCXRoaXMuY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKCAyNTUsIDI1NSwgMjU1LCAwLjIgKSc7CgkJdGhpcy5jb250ZXh0LnN0cm9rZSgpOwoKCQlpZiggdGhpcy5wbGF5aW5nICkgewoJCQkvLyBEcmF3IHByb2dyZXNzIG9uIHRvcCBvZiB0cmFjawoJCQl0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7CgkJCXRoaXMuY29udGV4dC5hcmMoIHgsIHksIHJhZGl1cywgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGZhbHNlICk7CgkJCXRoaXMuY29udGV4dC5saW5lV2lkdGggPSB0aGlzLnRoaWNrbmVzczsKCQkJdGhpcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gJyNmZmYnOwoJCQl0aGlzLmNvbnRleHQuc3Ryb2tlKCk7CgkJfQoKCQl0aGlzLmNvbnRleHQudHJhbnNsYXRlKCB4IC0gKCBpY29uU2l6ZSAvIDIgKSwgeSAtICggaWNvblNpemUgLyAyICkgKTsKCgkJLy8gRHJhdyBwbGF5L3BhdXNlIGljb25zCgkJaWYoIHRoaXMucGxheWluZyApIHsKCQkJdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9ICcjZmZmJzsKCQkJdGhpcy5jb250ZXh0LmZpbGxSZWN0KCAwLCAwLCBpY29uU2l6ZSAvIDIgLSA0LCBpY29uU2l6ZSApOwoJCQl0aGlzLmNvbnRleHQuZmlsbFJlY3QoIGljb25TaXplIC8gMiArIDQsIDAsIGljb25TaXplIC8gMiAtIDQsIGljb25TaXplICk7CgkJfQoJCWVsc2UgewoJCQl0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7CgkJCXRoaXMuY29udGV4dC50cmFuc2xhdGUoIDQsIDAgKTsKCQkJdGhpcy5jb250ZXh0Lm1vdmVUbyggMCwgMCApOwoJCQl0aGlzLmNvbnRleHQubGluZVRvKCBpY29uU2l6ZSAtIDQsIGljb25TaXplIC8gMiApOwoJCQl0aGlzLmNvbnRleHQubGluZVRvKCAwLCBpY29uU2l6ZSApOwoJCQl0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gJyNmZmYnOwoJCQl0aGlzLmNvbnRleHQuZmlsbCgpOwoJCX0KCgkJdGhpcy5jb250ZXh0LnJlc3RvcmUoKTsKCgl9OwoKCVBsYXliYWNrLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKCB0eXBlLCBsaXN0ZW5lciApIHsKCQl0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UgKTsKCX07CgoJUGxheWJhY2sucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uKCB0eXBlLCBsaXN0ZW5lciApIHsKCQl0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UgKTsKCX07CgoJUGxheWJhY2sucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKCgkJdGhpcy5wbGF5aW5nID0gZmFsc2U7CgoJCWlmKCB0aGlzLmNhbnZhcy5wYXJlbnROb2RlICkgewoJCQl0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCggdGhpcy5jYW52YXMgKTsKCQl9CgoJfTsKCgoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwoKCglSZXZlYWwgPSB7CgkJVkVSU0lPTjogVkVSU0lPTiwKCgkJaW5pdGlhbGl6ZTogaW5pdGlhbGl6ZSwKCQljb25maWd1cmU6IGNvbmZpZ3VyZSwKCgkJc3luYzogc3luYywKCQlzeW5jU2xpZGU6IHN5bmNTbGlkZSwKCQlzeW5jRnJhZ21lbnRzOiBzeW5jRnJhZ21lbnRzLAoKCQkvLyBOYXZpZ2F0aW9uIG1ldGhvZHMKCQlzbGlkZTogc2xpZGUsCgkJbGVmdDogbmF2aWdhdGVMZWZ0LAoJCXJpZ2h0OiBuYXZpZ2F0ZVJpZ2h0LAoJCXVwOiBuYXZpZ2F0ZVVwLAoJCWRvd246IG5hdmlnYXRlRG93biwKCQlwcmV2OiBuYXZpZ2F0ZVByZXYsCgkJbmV4dDogbmF2aWdhdGVOZXh0LAoKCQkvLyBGcmFnbWVudCBtZXRob2RzCgkJbmF2aWdhdGVGcmFnbWVudDogbmF2aWdhdGVGcmFnbWVudCwKCQlwcmV2RnJhZ21lbnQ6IHByZXZpb3VzRnJhZ21lbnQsCgkJbmV4dEZyYWdtZW50OiBuZXh0RnJhZ21lbnQsCgoJCS8vIERlcHJlY2F0ZWQgYWxpYXNlcwoJCW5hdmlnYXRlVG86IHNsaWRlLAoJCW5hdmlnYXRlTGVmdDogbmF2aWdhdGVMZWZ0LAoJCW5hdmlnYXRlUmlnaHQ6IG5hdmlnYXRlUmlnaHQsCgkJbmF2aWdhdGVVcDogbmF2aWdhdGVVcCwKCQluYXZpZ2F0ZURvd246IG5hdmlnYXRlRG93biwKCQluYXZpZ2F0ZVByZXY6IG5hdmlnYXRlUHJldiwKCQluYXZpZ2F0ZU5leHQ6IG5hdmlnYXRlTmV4dCwKCgkJLy8gRm9yY2VzIGFuIHVwZGF0ZSBpbiBzbGlkZSBsYXlvdXQKCQlsYXlvdXQ6IGxheW91dCwKCgkJLy8gUmFuZG9taXplcyB0aGUgb3JkZXIgb2Ygc2xpZGVzCgkJc2h1ZmZsZTogc2h1ZmZsZSwKCgkJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgYXZhaWxhYmxlIHJvdXRlcyBhcyBib29sZWFucyAobGVmdC9yaWdodC90b3AvYm90dG9tKQoJCWF2YWlsYWJsZVJvdXRlczogYXZhaWxhYmxlUm91dGVzLAoKCQkvLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBhdmFpbGFibGUgZnJhZ21lbnRzIGFzIGJvb2xlYW5zIChwcmV2L25leHQpCgkJYXZhaWxhYmxlRnJhZ21lbnRzOiBhdmFpbGFibGVGcmFnbWVudHMsCgoJCS8vIFRvZ2dsZXMgYSBoZWxwIG92ZXJsYXkgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMKCQl0b2dnbGVIZWxwOiB0b2dnbGVIZWxwLAoKCQkvLyBUb2dnbGVzIHRoZSBvdmVydmlldyBtb2RlIG9uL29mZgoJCXRvZ2dsZU92ZXJ2aWV3OiB0b2dnbGVPdmVydmlldywKCgkJLy8gVG9nZ2xlcyB0aGUgImJsYWNrIHNjcmVlbiIgbW9kZSBvbi9vZmYKCQl0b2dnbGVQYXVzZTogdG9nZ2xlUGF1c2UsCgoJCS8vIFRvZ2dsZXMgdGhlIGF1dG8gc2xpZGUgbW9kZSBvbi9vZmYKCQl0b2dnbGVBdXRvU2xpZGU6IHRvZ2dsZUF1dG9TbGlkZSwKCgkJLy8gU3RhdGUgY2hlY2tzCgkJaXNPdmVydmlldzogaXNPdmVydmlldywKCQlpc1BhdXNlZDogaXNQYXVzZWQsCgkJaXNBdXRvU2xpZGluZzogaXNBdXRvU2xpZGluZywKCQlpc1NwZWFrZXJOb3RlczogaXNTcGVha2VyTm90ZXMsCgoJCS8vIFNsaWRlIHByZWxvYWRpbmcKCQlsb2FkU2xpZGU6IGxvYWRTbGlkZSwKCQl1bmxvYWRTbGlkZTogdW5sb2FkU2xpZGUsCgoJCS8vIEFkZHMgb3IgcmVtb3ZlcyBhbGwgaW50ZXJuYWwgZXZlbnQgbGlzdGVuZXJzIChzdWNoIGFzIGtleWJvYXJkKQoJCWFkZEV2ZW50TGlzdGVuZXJzOiBhZGRFdmVudExpc3RlbmVycywKCQlyZW1vdmVFdmVudExpc3RlbmVyczogcmVtb3ZlRXZlbnRMaXN0ZW5lcnMsCgoJCS8vIEZhY2lsaXR5IGZvciBwZXJzaXN0aW5nIGFuZCByZXN0b3JpbmcgdGhlIHByZXNlbnRhdGlvbiBzdGF0ZQoJCWdldFN0YXRlOiBnZXRTdGF0ZSwKCQlzZXRTdGF0ZTogc2V0U3RhdGUsCgoJCS8vIFByZXNlbnRhdGlvbiBwcm9ncmVzcwoJCWdldFNsaWRlUGFzdENvdW50OiBnZXRTbGlkZVBhc3RDb3VudCwKCgkJLy8gUHJlc2VudGF0aW9uIHByb2dyZXNzIG9uIHJhbmdlIG9mIDAtMQoJCWdldFByb2dyZXNzOiBnZXRQcm9ncmVzcywKCgkJLy8gUmV0dXJucyB0aGUgaW5kaWNlcyBvZiB0aGUgY3VycmVudCwgb3Igc3BlY2lmaWVkLCBzbGlkZQoJCWdldEluZGljZXM6IGdldEluZGljZXMsCgoJCS8vIFJldHVybnMgYW4gQXJyYXkgb2YgYWxsIHNsaWRlcwoJCWdldFNsaWRlczogZ2V0U2xpZGVzLAoKCQkvLyBSZXR1cm5zIGFuIEFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBhdHRyaWJ1dGVzIG9uCgkJLy8gdGhlIHNsaWRlcwoJCWdldFNsaWRlc0F0dHJpYnV0ZXM6IGdldFNsaWRlc0F0dHJpYnV0ZXMsCgoJCS8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBzbGlkZXMKCQlnZXRUb3RhbFNsaWRlczogZ2V0VG90YWxTbGlkZXMsCgoJCS8vIFJldHVybnMgdGhlIHNsaWRlIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBpbmRleAoJCWdldFNsaWRlOiBnZXRTbGlkZSwKCgkJLy8gUmV0dXJucyB0aGUgc2xpZGUgYmFja2dyb3VuZCBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgKCQlnZXRTbGlkZUJhY2tncm91bmQ6IGdldFNsaWRlQmFja2dyb3VuZCwKCgkJLy8gUmV0dXJucyB0aGUgc3BlYWtlciBub3RlcyBzdHJpbmcgZm9yIGEgc2xpZGUsIG9yIG51bGwKCQlnZXRTbGlkZU5vdGVzOiBnZXRTbGlkZU5vdGVzLAoKCQkvLyBSZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIGhvcml6b250YWwvdmVydGljYWwgc2xpZGVzIGluIHRoZSBkZWNrCgkJZ2V0SG9yaXpvbnRhbFNsaWRlczogZ2V0SG9yaXpvbnRhbFNsaWRlcywKCQlnZXRWZXJ0aWNhbFNsaWRlczogZ2V0VmVydGljYWxTbGlkZXMsCgoJCS8vIENoZWNrcyBpZiB0aGUgcHJlc2VudGF0aW9uIGNvbnRhaW5zIHR3byBvciBtb3JlCgkJLy8gaG9yaXpvbnRhbC92ZXJ0aWNhbCBzbGlkZXMKCQloYXNIb3Jpem9udGFsU2xpZGVzOiBoYXNIb3Jpem9udGFsU2xpZGVzLAoJCWhhc1ZlcnRpY2FsU2xpZGVzOiBoYXNWZXJ0aWNhbFNsaWRlcywKCgkJLy8gUmV0dXJucyB0aGUgcHJldmlvdXMgc2xpZGUgZWxlbWVudCwgbWF5IGJlIG51bGwKCQlnZXRQcmV2aW91c1NsaWRlOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIHByZXZpb3VzU2xpZGU7CgkJfSwKCgkJLy8gUmV0dXJucyB0aGUgY3VycmVudCBzbGlkZSBlbGVtZW50CgkJZ2V0Q3VycmVudFNsaWRlOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIGN1cnJlbnRTbGlkZTsKCQl9LAoKCQkvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHNjYWxlIG9mIHRoZSBwcmVzZW50YXRpb24gY29udGVudAoJCWdldFNjYWxlOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIHNjYWxlOwoJCX0sCgoJCS8vIFJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvYmplY3QKCQlnZXRDb25maWc6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gY29uZmlnOwoJCX0sCgoJCS8vIEhlbHBlciBtZXRob2QsIHJldHJpZXZlcyBxdWVyeSBzdHJpbmcgYXMgYSBrZXkvdmFsdWUgaGFzaAoJCWdldFF1ZXJ5SGFzaDogZnVuY3Rpb24oKSB7CgkJCXZhciBxdWVyeSA9IHt9OwoKCQkJbG9jYXRpb24uc2VhcmNoLnJlcGxhY2UoIC9bQS1aMC05XSs/PShbXHdcLiUtXSopL2dpLCBmdW5jdGlvbihhKSB7CgkJCQlxdWVyeVsgYS5zcGxpdCggJz0nICkuc2hpZnQoKSBdID0gYS5zcGxpdCggJz0nICkucG9wKCk7CgkJCX0gKTsKCgkJCS8vIEJhc2ljIGRlc2VyaWFsaXphdGlvbgoJCQlmb3IoIHZhciBpIGluIHF1ZXJ5ICkgewoJCQkJdmFyIHZhbHVlID0gcXVlcnlbIGkgXTsKCgkJCQlxdWVyeVsgaSBdID0gZGVzZXJpYWxpemUoIHVuZXNjYXBlKCB2YWx1ZSApICk7CgkJCX0KCgkJCXJldHVybiBxdWVyeTsKCQl9LAoKCQkvLyBSZXR1cm5zIHRoZSB0b3AtbGV2ZWwgRE9NIGVsZW1lbnQKCQlnZXRSZXZlYWxFbGVtZW50OiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIGRvbS53cmFwcGVyIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICcucmV2ZWFsJyApOwoJCX0sCgoJCS8vIFJldHVybnMgYSBoYXNoIHdpdGggYWxsIHJlZ2lzdGVyZWQgcGx1Z2lucwoJCWdldFBsdWdpbnM6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gcGx1Z2luczsKCQl9LAoKCQkvLyBSZXR1cm5zIHRydWUgaWYgd2UncmUgY3VycmVudGx5IG9uIHRoZSBmaXJzdCBzbGlkZQoJCWlzRmlyc3RTbGlkZTogZnVuY3Rpb24oKSB7CgkJCXJldHVybiAoIGluZGV4aCA9PT0gMCAmJiBpbmRleHYgPT09IDAgKTsKCQl9LAoKCQkvLyBSZXR1cm5zIHRydWUgaWYgd2UncmUgY3VycmVudGx5IG9uIHRoZSBsYXN0IHNsaWRlCgkJaXNMYXN0U2xpZGU6IGZ1bmN0aW9uKCkgewoJCQlpZiggY3VycmVudFNsaWRlICkgewoJCQkJLy8gRG9lcyB0aGlzIHNsaWRlIGhhdmUgYSBuZXh0IHNpYmxpbmc/CgkJCQlpZiggY3VycmVudFNsaWRlLm5leHRFbGVtZW50U2libGluZyApIHJldHVybiBmYWxzZTsKCgkJCQkvLyBJZiBpdCdzIHZlcnRpY2FsLCBkb2VzIGl0cyBwYXJlbnQgaGF2ZSBhIG5leHQgc2libGluZz8KCQkJCWlmKCBpc1ZlcnRpY2FsU2xpZGUoIGN1cnJlbnRTbGlkZSApICYmIGN1cnJlbnRTbGlkZS5wYXJlbnROb2RlLm5leHRFbGVtZW50U2libGluZyApIHJldHVybiBmYWxzZTsKCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoKCQkJcmV0dXJuIGZhbHNlOwoJCX0sCgoJCS8vIFJldHVybnMgdHJ1ZSBpZiB3ZSdyZSBvbiB0aGUgbGFzdCBzbGlkZSBpbiB0aGUgY3VycmVudAoJCS8vIHZlcnRpY2FsIHN0YWNrCgkJaXNMYXN0VmVydGljYWxTbGlkZTogZnVuY3Rpb24oKSB7CgkJCWlmKCBjdXJyZW50U2xpZGUgJiYgaXNWZXJ0aWNhbFNsaWRlKCBjdXJyZW50U2xpZGUgKSApIHsKCQkJCS8vIERvZXMgdGhpcyBzbGlkZSBoYXZlIGEgbmV4dCBzaWJsaW5nPwoJCQkJaWYoIGN1cnJlbnRTbGlkZS5uZXh0RWxlbWVudFNpYmxpbmcgKSByZXR1cm4gZmFsc2U7CgoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCgkJCXJldHVybiBmYWxzZTsKCQl9LAoKCQkvLyBDaGVja3MgaWYgcmV2ZWFsLmpzIGhhcyBiZWVuIGxvYWRlZCBhbmQgaXMgcmVhZHkgZm9yIHVzZQoJCWlzUmVhZHk6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gbG9hZGVkOwoJCX0sCgoJCS8vIEZvcndhcmQgZXZlbnQgYmluZGluZyB0byB0aGUgcmV2ZWFsIERPTSBlbGVtZW50CgkJYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlICkgewoJCQlpZiggJ2FkZEV2ZW50TGlzdGVuZXInIGluIHdpbmRvdyApIHsKCQkJCVJldmVhbC5nZXRSZXZlYWxFbGVtZW50KCkuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUgKTsKCQkJfQoJCX0sCgkJcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlICkgewoJCQlpZiggJ2FkZEV2ZW50TGlzdGVuZXInIGluIHdpbmRvdyApIHsKCQkJCVJldmVhbC5nZXRSZXZlYWxFbGVtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUgKTsKCQkJfQoJCX0sCgoJCS8vIEFkZHMvcmVtb3ZlcyBhIGN1c3RvbSBrZXkgYmluZGluZwoJCWFkZEtleUJpbmRpbmc6IGFkZEtleUJpbmRpbmcsCgkJcmVtb3ZlS2V5QmluZGluZzogcmVtb3ZlS2V5QmluZGluZywKCgkJLy8gQVBJIGZvciByZWdpc3RlcmluZyBhbmQgcmV0cmlldmluZyBwbHVnaW5zCgkJcmVnaXN0ZXJQbHVnaW46IHJlZ2lzdGVyUGx1Z2luLAoJCWhhc1BsdWdpbjogaGFzUGx1Z2luLAoJCWdldFBsdWdpbjogZ2V0UGx1Z2luLAoKCQkvLyBQcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXJzIGEga2V5Ym9hcmQgZXZlbnQKCQl0cmlnZ2VyS2V5OiBmdW5jdGlvbigga2V5Q29kZSApIHsKCQkJb25Eb2N1bWVudEtleURvd24oIHsga2V5Q29kZToga2V5Q29kZSB9ICk7CgkJfSwKCgkJLy8gUmVnaXN0ZXJzIGEgbmV3IHNob3J0Y3V0IHRvIGluY2x1ZGUgaW4gdGhlIGhlbHAgb3ZlcmxheQoJCXJlZ2lzdGVyS2V5Ym9hcmRTaG9ydGN1dDogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CgkJCWtleWJvYXJkU2hvcnRjdXRzW2tleV0gPSB2YWx1ZTsKCQl9Cgl9OwoKCXJldHVybiBSZXZlYWw7Cgp9KSk7Cg=="></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
// Optional reveal.js plugins
dependencies: [
{ src: 'https://revealjs.com/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'https://revealjs.com/plugin/zoom-js/zoom.js', async: true },
{ src: 'https://revealjs.com/plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>