-
Notifications
You must be signed in to change notification settings - Fork 0
/
Git.html
836 lines (836 loc) · 123 KB
/
Git.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
<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>Git使用</title>
<style>
body{
margin: 0;
}
#content-info{
width: auto;
margin: 0 auto;
text-align: center;
}
#author-info{
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
#title{
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
padding-top: 10px;
margin-bottom: 2px;
font-size: 34px;
color: #505050;
}
.text{
white-space:nowrap;
text-overflow: ellipsis;
display: inline-block;
margin-right: 20px;
margin-bottom: 2px;
font-size: 20px;
color: #8c8c8c;
}
#navBar{
width: auto;
height: auto;
position: fixed;
right:0;
bottom: 0;
background-color: #f0f3f4;
overflow-y: auto;
text-align: center;
}
#svg-container{
width: 100%;
overflow-x: scroll;
min-width: 0px;
margin: 0 10px;
}
#nav-thumbs{
overflow-y: scroll;
padding: 0 5px;
}
.nav-thumb{
position: relative;
margin: 10px auto;
}
.nav-thumb >p{
text-align: center;
font-size: 12px;
margin: 4px 0 0 0;
}
.nav-thumb >div{
position: relative;
display: inline-block;
border: 1px solid #c6cfd5;
}
.nav-thumb img{
display: block;
}
#main-content{
bottom: 0;
left: 0;
right: 0;
background-color: #d0cfd8;
display: flex;
height: auto;
flex-flow: row wrap;
text-align:center;
}
#svg-container >svg{
display: block;
margin:10px auto;
margin-bottom: 0;
}
#copyright{
bottom: 0;
left: 50%;
margin: 5px auto;
font-size: 16px;
color: #515151;
}
#copyright >a{
text-decoration: none;
color: #77C;
}
.number{
position: absolute;
top:0;
left:0;
border-top:22px solid #08a1ef;
border-right: 22px solid transparent;
}
.pagenum{
font-size: 12px;
color: #fff;
position: absolute;
top: -23px;
left: 2px;
}
#navBar::-webkit-scrollbar{
width: 8px;
background-color: #f5f5f5;
}
#navBar::-webkit-scrollbar-track{
-webkit-box-shadow: inset 0 0 4px rgba(0,0,0,.3);
border-radius: 8px;
background-color: #fff;
}
#navBar::-webkit-scrollbar-thumb{
border-radius: 8px;
-webkit-box-shadow: inset 0 0 4px rgba(0,0,0,.3);
background-color: #6b6b70;
}
#navBar::-webkit-scrollbar-thumb:hover{
background-color: #4a4a4f;
}
</style>
</head>
<body>
<div id="main-area">
<div id="content-info">
<div id="content-info">
<div id="title">Git使用</div>
</div>
<div id="author-info">
<div id="author-name" class="text">jie</div>
<div id="share-time" class="text">2020-07-11</div>
</div>
</div>
<div id="main-content">
<div id="svg-container"><svg xmlns:ev="http://www.w3.org/2001/xml-events" ed:name="Page-1" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRadio="xMinYMin meet" xmlns:ed="https://www.edrawsoft.cn/xml/2017/SVGExtensions/" xmlns="http://www.w3.org/2000/svg" height="1313" ed:vSpacing="30" width="1810" viewBox="0 0 1810 1313" ed:hSpacing="30" id="page1">
<style type="text/css"><![CDATA[
g[ed\:togtopicid],g[ed\:hyperlink],g[ed\:comment],g[ed\:note] {cursor:pointer;}
g[id] {-moz-user-select: none;-ms-user-select: none;user-select: none;}
svg text::selection,svg tspan::selection{background-color: #4285f4;color: #ffffff;fill: #ffffff;}
.st30 {fill:#ffffff;font-family:SimSun;font-size:10pt;font-weight:bold}
.st28 {fill:#ffffff;font-family:微软雅黑;font-size:10pt;font-weight:bold}
.st27 {fill:#ffffff;font-family:微软雅黑;font-size:10pt}
.st26 {fill:#ffffff;font-family:微软雅黑;font-size:12pt}
.st25 {fill:#ffffff;font-family:微软雅黑;font-size:14pt}
.st29 {font-weight:normal}
]]></style>
<defs>
<image height="344" width="400" id="image5" xlink:href="data:image/png;base64,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"/>
<pattern height="344" width="400" id="pat4" patternUnits="userSpaceOnUse">
<use xlink:href="#image5"/>
</pattern>
<linearGradient x1="0%" y1="0%" x2="0%" id="lg9" y2="100%">
<stop offset="0" stop-color="#ffffff"/>
<stop offset="0.25" stop-color="#f0f5f0"/>
<stop offset="0.75" stop-color="#e1ebe1"/>
<stop offset="1" stop-color="#c8d7c8"/>
</linearGradient>
</defs>
<rect y="0" fill="url(#pat4)" height="1313" x="0" width="1810"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="253" ed:type="summary" ed:idlist="253" transform="matrix(1,0,0,1,516,1134)" id="257"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="259" ed:type="summary" ed:idlist="259" transform="matrix(1,0,0,1,633,1167)" id="266"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="268" ed:type="summary" ed:idlist="268" transform="matrix(1,0,0,1,436,1200)" id="272"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="255" ed:type="summary" ed:idlist="255" transform="matrix(1,0,0,1,572,1265)" id="274"/>
<path d="M0.1,0C6,0,5.9,1.5,5.9,1.5L5.9,10.4C5.9,10.4,6.9,11.7,12,11.7C6.9,11.8,5.9,13,5.9,13L5.9,21.9C5.9,21.9,5.8,23.4,0,23.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="104" ed:type="summary" ed:idlist="104" transform="matrix(1,0,0,1,463,25)" id="278"/>
<path d="M0.1,0C6,0,5.9,1.5,5.9,1.5L5.9,10.4C5.9,10.4,6.9,11.7,12,11.7C6.9,11.8,5.9,13,5.9,13L5.9,21.9C5.9,21.9,5.8,23.4,0,23.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="115" ed:type="summary" ed:idlist="115" transform="matrix(1,0,0,1,645,58)" id="280"/>
<path d="M0.1,0C6,0,5.9,1.5,5.9,1.5L5.9,10.4C5.9,10.4,6.9,11.7,12,11.7C6.9,11.8,5.9,13,5.9,13L5.9,21.9C5.9,21.9,5.8,23.4,0,23.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="117" ed:type="summary" ed:idlist="117" transform="matrix(1,0,0,1,688,91)" id="282"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="247" ed:type="summary" ed:idlist="247" transform="matrix(1,0,0,1,590,903)" id="276"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="292" ed:type="summary" ed:idlist="292" transform="matrix(1,0,0,1,631,176)" id="294"/>
<path d="M0.1,0C6,0,5.9,1.4,5.9,1.4L5.9,10C5.9,10,6.9,11.2,12,11.2C6.9,11.3,5.9,12.4,5.9,12.4L5.9,21C5.9,21,5.8,22.4,0,22.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="337" ed:type="summary" ed:idlist="337" transform="matrix(1,0,0,1,428,1232)" id="343"/>
<path d="M-63.4,258.8C-63.5,259.9,-62.8,260.6,-62,260.6C-61.1,260.6,-60.4,259.9,-60.4,258.8C-60.4,256.5,-60.4,254.1,-60.4,251.8C-60.4,249.5,-60.3,247.1,-60.3,244.8C-60.3,242.5,-60.3,240.1,-60.2,237.8C-60.2,235.5,-60.2,233.2,-60.1,230.8C-60.1,228.5,-60.1,226.2,-60,223.8C-60,221.5,-59.9,219.2,-59.9,216.8C-59.8,214.5,-59.8,212.2,-59.8,209.8C-59.7,207.5,-59.6,205.2,-59.6,202.8C-59.5,200.5,-59.5,198.2,-59.4,195.8C-59.4,193.5,-59.3,191.2,-59.2,188.8C-59.2,186.5,-59.1,184.2,-59,181.9C-59,179.5,-58.9,177.2,-58.8,174.9C-58.7,172.5,-58.7,170.2,-58.6,167.9C-58.5,165.5,-58.4,163.2,-58.3,160.9C-58.2,158.5,-58.2,156.2,-58.1,153.9C-58,151.6,-57.9,149.2,-57.8,146.9C-57.7,144.6,-57.6,142.2,-57.5,139.9C-57.4,137.6,-57.3,135.2,-57.2,132.9C-57,130.6,-56.9,128.3,-56.8,125.9C-56.7,123.6,-56.6,121.3,-56.5,118.9C-56.3,116.6,-56.2,114.3,-56.1,111.9C-56,109.6,-55.8,107.3,-55.7,105C-55.6,102.6,-55.4,100.3,-55.3,98C-55.2,95.6,-55,93.3,-54.9,91C-54.7,88.7,-54.6,86.3,-54.4,84C-54.3,81.7,-54.1,79.4,-54,77C-53.8,74.7,-53.6,72.4,-53.5,70C-53.3,67.7,-53.1,65.4,-53,63.1C-52.8,60.7,-52.6,58.4,-52.4,56.1C-52.2,53.8,-52.1,51.4,-51.9,49.1C-51.7,46.8,-51.5,44.5,-51.3,42.1C-51.1,39.8,-50.9,37.5,-50.7,35.2C-50.5,32.8,-50.3,30.5,-50.1,28.2C-49.9,25.9,-49.7,23.6,-49.4,21.2C-49.2,18.9,-49,16.6,-48.8,14.3C-48.5,11.9,-48.3,9.6,-48.1,7.3C-47.8,5,-47.6,2.7,-47.4,0.3C-47.1,-2,-46.9,-4.3,-46.6,-6.6C-46.4,-8.9,-46.1,-11.2,-45.8,-13.6C-45.6,-15.9,-45.3,-18.2,-45,-20.5C-44.8,-22.8,-44.5,-25.1,-44.2,-27.5C-43.9,-29.8,-43.7,-32.1,-43.4,-34.4C-43.1,-36.7,-42.8,-39,-42.5,-41.3C-42.2,-43.7,-41.9,-46,-41.6,-48.3C-41.2,-50.6,-40.9,-52.9,-40.6,-55.2C-40.3,-57.5,-40,-59.8,-39.6,-62.1C-39.3,-64.4,-39,-66.8,-38.6,-69.1C-38.3,-71.4,-37.9,-73.7,-37.6,-76C-37.2,-78.3,-36.8,-80.6,-36.5,-82.9C-36.1,-85.2,-35.7,-87.5,-35.3,-89.8C-34.9,-92.1,-34.6,-94.4,-34.2,-96.7C-33.8,-99,-33.4,-101.3,-32.9,-103.6C-32.5,-105.9,-32.1,-108.2,-31.7,-110.5C-31.3,-112.8,-30.8,-115.1,-30.4,-117.3C-30,-119.6,-29.5,-121.9,-29,-124.2C-28.6,-126.5,-28.1,-128.8,-27.6,-131.1C-27.2,-133.3,-26.7,-135.6,-26.2,-137.9C-25.7,-140.2,-25.2,-142.5,-24.7,-144.7C-24.2,-147,-23.7,-149.3,-23.1,-151.6C-22.6,-153.8,-22.1,-156.1,-21.5,-158.4C-20.9,-160.6,-20.4,-162.9,-19.8,-165.2C-19.2,-167.4,-18.6,-169.7,-18.1,-171.9C-17.5,-174.2,-16.8,-176.4,-16.2,-178.7C-15.6,-180.9,-15,-183.2,-14.3,-185.4C-13.7,-187.6,-13,-189.9,-12.3,-192.1C-11.6,-194.3,-10.9,-196.6,-10.2,-198.8C-9.5,-201,-8.8,-203.2,-8,-205.4C-7.3,-207.6,-6.5,-209.8,-5.7,-212C-4.9,-214.2,-4.1,-216.4,-3.3,-218.6C-2.5,-220.8,-1.6,-222.9,-0.8,-225.1C0.1,-227.3,1,-229.4,1.9,-231.6C2.8,-233.7,3.8,-235.8,4.8,-238C5.7,-240.1,6.7,-242.2,7.8,-244.3C8.8,-246.4,9.9,-248.4,11,-250.5C12.1,-252.5,13.3,-254.6,14.4,-256.6C15.6,-258.6,16.9,-260.5,18.2,-262.5C19.4,-264.4,20.8,-266.4,22.2,-268.2C23.5,-270.1,25,-271.9,26.5,-273.7C28,-275.5,29.6,-277.2,31.2,-278.8C32.9,-280.5,34.6,-282,36.4,-283.5C38.3,-285,40.2,-286.3,42.1,-287.5C44.1,-288.8,46.2,-289.8,48.4,-290.7C50.5,-291.6,52.7,-292.3,55,-292.8C57.3,-293.2,59.7,-293.4,62.1,-293.5C59.7,-293.4,57.3,-293.2,55,-292.8C52.7,-292.4,50.5,-291.7,48.3,-290.8C46.2,-289.9,44.1,-288.8,42.1,-287.6C40.1,-286.4,38.2,-285.1,36.3,-283.6C34.5,-282.2,32.8,-280.6,31.1,-279C29.4,-277.3,27.9,-275.6,26.3,-273.8C24.8,-272.1,23.4,-270.2,22,-268.4C20.6,-266.5,19.2,-264.6,17.9,-262.6C16.6,-260.7,15.4,-258.7,14.2,-256.7C13,-254.7,11.8,-252.7,10.7,-250.6C9.6,-248.6,8.5,-246.5,7.4,-244.4C6.4,-242.4,5.4,-240.3,4.4,-238.1C3.4,-236,2.4,-233.9,1.5,-231.8C0.6,-229.6,-0.3,-227.5,-1.2,-225.3C-2.1,-223.1,-3,-221,-3.8,-218.8C-4.7,-216.6,-5.5,-214.4,-6.3,-212.2C-7.1,-210,-7.8,-207.8,-8.6,-205.6C-9.4,-203.4,-10.1,-201.2,-10.8,-199C-11.5,-196.8,-12.3,-194.5,-13,-192.3C-13.6,-190.1,-14.3,-187.8,-15,-185.6C-15.7,-183.4,-16.3,-181.1,-16.9,-178.9C-17.6,-176.6,-18.2,-174.4,-18.8,-172.1C-19.4,-169.9,-20,-167.6,-20.6,-165.4C-21.2,-163.1,-21.8,-160.8,-22.3,-158.6C-22.9,-156.3,-23.5,-154,-24,-151.8C-24.5,-149.5,-25.1,-147.2,-25.6,-144.9C-26.1,-142.7,-26.6,-140.4,-27.1,-138.1C-27.6,-135.8,-28.1,-133.6,-28.6,-131.3C-29.1,-129,-29.6,-126.7,-30.1,-124.4C-30.5,-122.1,-31,-119.8,-31.4,-117.5C-31.9,-115.3,-32.3,-113,-32.8,-110.7C-33.2,-108.4,-33.7,-106.1,-34.1,-103.8C-34.5,-101.5,-34.9,-99.2,-35.3,-96.9C-35.7,-94.6,-36.1,-92.3,-36.5,-90C-36.9,-87.7,-37.3,-85.4,-37.7,-83.1C-38.1,-80.8,-38.5,-78.5,-38.8,-76.2C-39.2,-73.9,-39.6,-71.6,-39.9,-69.3C-40.3,-67,-40.6,-64.6,-41,-62.3C-41.3,-60,-41.7,-57.7,-42,-55.4C-42.3,-53.1,-42.6,-50.8,-43,-48.5C-43.3,-46.2,-43.6,-43.9,-43.9,-41.5C-44.2,-39.2,-44.5,-36.9,-44.8,-34.6C-45.2,-32.3,-45.4,-30,-45.7,-27.7C-46,-25.3,-46.3,-23,-46.6,-20.7C-46.9,-18.4,-47.2,-16.1,-47.4,-13.7C-47.7,-11.4,-48,-9.1,-48.2,-6.8C-48.5,-4.5,-48.8,-2.2,-49,0.2C-49.3,2.5,-49.5,4.8,-49.8,7.1C-50,9.5,-50.3,11.8,-50.5,14.1C-50.8,16.4,-51,18.7,-51.2,21.1C-51.4,23.4,-51.7,25.7,-51.9,28C-52.1,30.4,-52.3,32.7,-52.6,35C-52.8,37.3,-53,39.7,-53.2,42C-53.4,44.3,-53.6,46.6,-53.8,49C-54,51.3,-54.2,53.6,-54.4,55.9C-54.6,58.3,-54.8,60.6,-54.9,62.9C-55.1,65.2,-55.3,67.6,-55.5,69.9C-55.7,72.2,-55.8,74.6,-56,76.9C-56.2,79.2,-56.4,81.5,-56.5,83.9C-56.7,86.2,-56.8,88.5,-57,90.9C-57.2,93.2,-57.3,95.5,-57.5,97.8C-57.6,100.2,-57.8,102.5,-57.9,104.8C-58.1,107.2,-58.2,109.5,-58.3,111.8C-58.5,114.1,-58.6,116.5,-58.8,118.8C-58.9,121.1,-59,123.5,-59.1,125.8C-59.3,128.1,-59.4,130.5,-59.5,132.8C-59.6,135.1,-59.8,137.5,-59.9,139.8C-60,142.1,-60.1,144.5,-60.2,146.8C-60.3,149.1,-60.4,151.4,-60.5,153.8C-60.6,156.1,-60.7,158.4,-60.8,160.8C-60.9,163.1,-61,165.4,-61.1,167.8C-61.2,170.1,-61.3,172.4,-61.4,174.8C-61.5,177.1,-61.6,179.4,-61.6,181.8C-61.7,184.1,-61.8,186.4,-61.9,188.8C-62,191.1,-62,193.4,-62.1,195.8C-62.2,198.1,-62.2,200.4,-62.3,202.8C-62.4,205.1,-62.4,207.4,-62.5,209.8C-62.6,212.1,-62.6,214.4,-62.7,216.8C-62.7,219.1,-62.8,221.4,-62.8,223.8C-62.9,226.1,-62.9,228.4,-63,230.8C-63,233.1,-63.1,235.4,-63.1,237.8C-63.2,240.1,-63.2,242.4,-63.2,244.8C-63.3,247.1,-63.3,249.4,-63.3,251.8C-63.4,254.1,-63.4,256.4,-63.4,258.8z" fill="#ffffff" stroke-linejoin="round" stroke="#ffffff" ed:parentid="101" ed:tosuperid="102" stroke-linecap="round" transform="matrix(1,0,0,1,144,363)" id="103"/>
<path d="M-13.5,16.4C1,16.4,-3.3,-16.4,13.5,-16.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="102" ed:tosuperid="104" stroke-linecap="round" transform="matrix(1,0,0,1,328,53)" id="105"/>
<path d="M-13.5,0C-2.7,0,5.4,-0,13.5,-0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="102" ed:tosuperid="115" stroke-linecap="round" transform="matrix(1,0,0,1,328,70)" id="116"/>
<path d="M-13.5,-16.4C1,-16.4,-3.3,16.4,13.5,16.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="102" ed:tosuperid="117" stroke-linecap="round" transform="matrix(1,0,0,1,328,86)" id="118"/>
<path d="M-60.2,-151.1C-60.2,-152.2,-60.9,-152.9,-61.7,-152.9C-62.5,-152.9,-63.2,-152.1,-63.2,-151C-63.1,-148.7,-63,-146.4,-63,-144C-62.9,-141.7,-62.8,-139.4,-62.7,-137C-62.6,-134.7,-62.5,-132.4,-62.4,-130C-62.3,-127.7,-62.2,-125.4,-62.1,-123C-62,-120.7,-61.9,-118.4,-61.7,-116C-61.6,-113.7,-61.5,-111.4,-61.3,-109C-61.2,-106.7,-61,-104.4,-60.9,-102.1C-60.7,-99.7,-60.6,-97.4,-60.4,-95.1C-60.2,-92.7,-60.1,-90.4,-59.9,-88.1C-59.7,-85.7,-59.5,-83.4,-59.3,-81.1C-59.1,-78.8,-58.9,-76.4,-58.7,-74.1C-58.5,-71.8,-58.3,-69.5,-58,-67.1C-57.8,-64.8,-57.6,-62.5,-57.3,-60.2C-57.1,-57.8,-56.8,-55.5,-56.6,-53.2C-56.3,-50.9,-56.1,-48.5,-55.8,-46.2C-55.5,-43.9,-55.2,-41.6,-54.9,-39.3C-54.6,-37,-54.3,-34.6,-54,-32.3C-53.7,-30,-53.4,-27.7,-53.1,-25.4C-52.7,-23.1,-52.4,-20.8,-52.1,-18.4C-51.7,-16.1,-51.4,-13.8,-51,-11.5C-50.6,-9.2,-50.3,-6.9,-49.9,-4.6C-49.5,-2.3,-49.1,0,-48.7,2.3C-48.3,4.6,-47.9,6.9,-47.4,9.2C-47,11.5,-46.6,13.8,-46.1,16.1C-45.7,18.4,-45.2,20.7,-44.7,23C-44.3,25.2,-43.8,27.5,-43.3,29.8C-42.8,32.1,-42.3,34.4,-41.7,36.6C-41.2,38.9,-40.7,41.2,-40.1,43.5C-39.6,45.7,-39,48,-38.4,50.3C-37.9,52.5,-37.3,54.8,-36.7,57.1C-36,59.3,-35.4,61.6,-34.8,63.8C-34.1,66.1,-33.5,68.3,-32.8,70.5C-32.1,72.8,-31.5,75,-30.7,77.2C-30,79.5,-29.3,81.7,-28.6,83.9C-27.8,86.1,-27.1,88.3,-26.3,90.5C-25.5,92.7,-24.7,94.9,-23.9,97.1C-23,99.3,-22.2,101.5,-21.3,103.6C-20.4,105.8,-19.5,108,-18.6,110.1C-17.7,112.2,-16.7,114.4,-15.8,116.5C-14.8,118.6,-13.8,120.7,-12.8,122.8C-11.7,124.9,-10.7,127,-9.6,129.1C-8.5,131.1,-7.3,133.2,-6.2,135.2C-5,137.2,-3.8,139.3,-2.6,141.2C-1.3,143.2,-0.1,145.2,1.3,147.1C2.6,149,3.9,150.9,5.3,152.8C6.8,154.7,8.2,156.5,9.7,158.3C11.2,160.1,12.8,161.8,14.4,163.5C16,165.2,17.7,166.9,19.4,168.4C21.1,170,22.9,171.5,24.8,172.9C26.6,174.4,28.5,175.7,30.5,177C32.5,178.2,34.5,179.4,36.6,180.4C38.7,181.5,40.8,182.4,43,183.2C45.2,184,47.4,184.7,49.7,185.2C52.1,185.7,54.6,186.1,56.7,186.3C58.7,186.5,60.4,186.5,62.1,186.6C60.4,186.5,58.7,186.5,56.7,186.3C54.6,186,52.1,185.6,49.8,185.1C47.4,184.6,45.2,183.9,43.1,183.1C40.9,182.3,38.8,181.3,36.7,180.3C34.6,179.2,32.6,178,30.6,176.8C28.7,175.5,26.8,174.1,25,172.7C23.1,171.3,21.4,169.7,19.7,168.2C17.9,166.6,16.3,164.9,14.7,163.2C13.1,161.5,11.6,159.8,10.1,158C8.6,156.2,7.2,154.4,5.8,152.5C4.4,150.6,3,148.7,1.7,146.8C0.4,144.8,-0.8,142.9,-2,140.9C-3.2,138.9,-4.4,136.9,-5.6,134.9C-6.7,132.8,-7.8,130.8,-8.9,128.7C-10,126.7,-11,124.6,-12,122.5C-13,120.4,-14,118.3,-15,116.1C-15.9,114,-16.9,111.9,-17.8,109.7C-18.7,107.6,-19.5,105.4,-20.4,103.3C-21.2,101.1,-22.1,98.9,-22.9,96.7C-23.7,94.5,-24.5,92.4,-25.2,90.2C-26,88,-26.8,85.7,-27.5,83.5C-28.2,81.3,-28.9,79.1,-29.6,76.9C-30.3,74.6,-31,72.4,-31.6,70.2C-32.3,67.9,-32.9,65.7,-33.5,63.5C-34.1,61.2,-34.8,59,-35.3,56.7C-35.9,54.4,-36.5,52.2,-37.1,49.9C-37.6,47.7,-38.2,45.4,-38.7,43.1C-39.2,40.9,-39.8,38.6,-40.3,36.3C-40.8,34,-41.3,31.8,-41.7,29.5C-42.2,27.2,-42.7,24.9,-43.1,22.6C-43.6,20.3,-44,18.1,-44.5,15.8C-44.9,13.5,-45.3,11.2,-45.7,8.9C-46.1,6.6,-46.5,4.3,-46.9,2C-47.3,-0.3,-47.7,-2.6,-48,-4.9C-48.4,-7.2,-48.8,-9.5,-49.1,-11.8C-49.5,-14.1,-49.8,-16.4,-50.1,-18.7C-50.5,-21,-50.8,-23.3,-51.1,-25.7C-51.4,-28,-51.7,-30.3,-52,-32.6C-52.3,-34.9,-52.5,-37.2,-52.8,-39.5C-53.1,-41.8,-53.4,-44.2,-53.6,-46.5C-53.9,-48.8,-54.1,-51.1,-54.4,-53.4C-54.6,-55.7,-54.8,-58.1,-55.1,-60.4C-55.3,-62.7,-55.5,-65,-55.7,-67.3C-55.9,-69.7,-56.1,-72,-56.3,-74.3C-56.5,-76.6,-56.7,-79,-56.9,-81.3C-57,-83.6,-57.2,-85.9,-57.4,-88.3C-57.5,-90.6,-57.7,-92.9,-57.8,-95.2C-58,-97.6,-58.1,-99.9,-58.3,-102.2C-58.4,-104.5,-58.5,-106.9,-58.7,-109.2C-58.8,-111.5,-58.9,-113.9,-59,-116.2C-59.1,-118.5,-59.2,-120.8,-59.3,-123.2C-59.4,-125.5,-59.5,-127.8,-59.6,-130.2C-59.7,-132.5,-59.7,-134.8,-59.8,-137.1C-59.9,-139.5,-60,-141.8,-60,-144.1C-60.1,-146.5,-60.1,-148.8,-60.2,-151.1z" fill="#ffffff" stroke-linejoin="round" stroke="#ffffff" ed:parentid="101" ed:tosuperid="127" stroke-linecap="round" transform="matrix(1,0,0,1,144,843)" id="128"/>
<path d="M-13.5,28.9C3.3,28.9,-8.7,-28.9,13.5,-28.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="127" ed:tosuperid="131" stroke-linecap="round" transform="matrix(1,0,0,1,344,1001)" id="132"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="131" ed:tosuperid="133" stroke-linecap="round" transform="matrix(1,0,0,1,472,972)" id="134"/>
<path d="M-13.5,14.4C0.6,14.4,-2.3,-14.4,13.5,-14.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="127" ed:tosuperid="135" stroke-linecap="round" transform="matrix(1,0,0,1,344,1015)" id="136"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="135" ed:tosuperid="137" stroke-linecap="round" transform="matrix(1,0,0,1,519,1001)" id="138"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="127" ed:tosuperid="139" stroke-linecap="round" transform="matrix(1,0,0,1,344,1030)" id="140"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="139" ed:tosuperid="141" stroke-linecap="round" transform="matrix(1,0,0,1,519,1030)" id="142"/>
<path d="M-13.5,-14.4C0.6,-14.4,-2.3,14.4,13.5,14.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="127" ed:tosuperid="143" stroke-linecap="round" transform="matrix(1,0,0,1,344,1044)" id="144"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="143" ed:tosuperid="145" stroke-linecap="round" transform="matrix(1,0,0,1,539,1059)" id="146"/>
<path d="M-13.5,-28.9C3.3,-28.9,-8.7,28.9,13.5,28.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="127" ed:tosuperid="147" stroke-linecap="round" transform="matrix(1,0,0,1,344,1059)" id="148"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="147" ed:tosuperid="149" stroke-linecap="round" transform="matrix(1,0,0,1,523,1088)" id="150"/>
<path d="M-14.6,1.9C-15.7,1.8,-16.5,2.4,-16.5,3.3C-16.6,4.1,-15.9,4.8,-14.8,4.9C-12.5,5,-10.1,5,-7.8,5.1C-5.5,5.2,-3.1,5.3,-0.8,5.3C1.5,5.4,3.9,5.4,6.2,5.5C8.6,5.5,10.9,5.5,13.2,5.6C15.6,5.6,17.9,5.6,20.2,5.6C22.6,5.7,24.9,5.7,27.2,5.7C29.6,5.7,31.9,5.7,34.2,5.7C36.6,5.6,38.9,5.6,41.2,5.6C43.6,5.6,45.9,5.6,48.2,5.5C50.6,5.5,52.9,5.5,55.2,5.4C57.6,5.4,59.8,5.4,62.1,5.3C59.8,5.3,57.6,5.2,55.2,5.2C52.9,5.1,50.6,5.1,48.2,5C45.9,4.9,43.6,4.9,41.3,4.8C38.9,4.7,36.6,4.7,34.3,4.6C31.9,4.5,29.6,4.4,27.3,4.3C24.9,4.2,22.6,4.1,20.3,4C17.9,3.9,15.6,3.8,13.3,3.7C11,3.6,8.6,3.4,6.3,3.3C4,3.2,1.6,3,-0.7,2.9C-3,2.7,-5.3,2.6,-7.7,2.4C-10,2.2,-12.3,2,-14.6,1.9z" fill="#ffffff" stroke-linejoin="round" stroke="#ffffff" ed:parentid="101" ed:tosuperid="151" stroke-linecap="round" transform="matrix(1,0,0,1,144,662)" id="152"/>
<path d="M-13.5,124.6C5.4,124.6,-13.5,-124.6,13.5,-124.6" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="155" stroke-linecap="round" transform="matrix(1,0,0,1,344,543)" id="156"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="155" ed:tosuperid="159" stroke-linecap="round" transform="matrix(1,0,0,1,490,418)" id="160"/>
<path d="M-13.5,110.2C5.4,110.2,-13.5,-110.2,13.5,-110.2" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="163" stroke-linecap="round" transform="matrix(1,0,0,1,344,557)" id="164"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="163" ed:tosuperid="165" stroke-linecap="round" transform="matrix(1,0,0,1,443,447)" id="166"/>
<path d="M-13.5,95.7C5.4,95.7,-13.5,-95.7,13.5,-95.7" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="167" stroke-linecap="round" transform="matrix(1,0,0,1,344,572)" id="168"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="167" ed:tosuperid="169" stroke-linecap="round" transform="matrix(1,0,0,1,481,476)" id="170"/>
<path d="M-13.5,81.3C5.4,81.3,-13.5,-81.3,13.5,-81.3" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="171" stroke-linecap="round" transform="matrix(1,0,0,1,344,586)" id="172"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="171" ed:tosuperid="175" stroke-linecap="round" transform="matrix(1,0,0,1,468,505)" id="176"/>
<path d="M-13.5,66.8C5.4,66.8,-13.5,-66.8,13.5,-66.8" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="177" stroke-linecap="round" transform="matrix(1,0,0,1,344,600)" id="178"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="177" ed:tosuperid="179" stroke-linecap="round" transform="matrix(1,0,0,1,451,534)" id="180"/>
<path d="M-13.5,29.9C3.5,29.9,-9,-29.9,13.5,-29.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="181" stroke-linecap="round" transform="matrix(1,0,0,1,344,637)" id="182"/>
<path d="M-13.5,22.3C2.2,22.3,-6,-22.3,13.5,-22.3" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="181" ed:tosuperid="183" stroke-linecap="round" transform="matrix(1,0,0,1,447,585)" id="184"/>
<path d="M-13.5,-7C-1.1,-7,1.6,7,13.5,7" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="185" stroke-linecap="round" transform="matrix(1,0,0,1,344,674)" id="186"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="185" ed:tosuperid="187" stroke-linecap="round" transform="matrix(1,0,0,1,468,681)" id="188"/>
<path d="M-60.4,-241.4C-60.4,-242.5,-61.1,-243.2,-61.9,-243.2C-62.8,-243.2,-63.4,-242.5,-63.4,-241.4C-63.4,-239,-63.3,-236.7,-63.3,-234.4C-63.3,-232,-63.2,-229.7,-63.2,-227.4C-63.1,-225,-63.1,-222.7,-63,-220.4C-63,-218,-63,-215.7,-62.9,-213.4C-62.8,-211,-62.8,-208.7,-62.7,-206.4C-62.7,-204,-62.6,-201.7,-62.5,-199.4C-62.5,-197,-62.4,-194.7,-62.3,-192.4C-62.3,-190,-62.2,-187.7,-62.1,-185.4C-62.1,-183,-62,-180.7,-61.9,-178.4C-61.8,-176,-61.7,-173.7,-61.6,-171.4C-61.6,-169,-61.5,-166.7,-61.4,-164.4C-61.3,-162,-61.2,-159.7,-61.1,-157.4C-61,-155,-60.9,-152.7,-60.8,-150.4C-60.7,-148,-60.6,-145.7,-60.4,-143.4C-60.3,-141,-60.2,-138.7,-60.1,-136.4C-60,-134,-59.9,-131.7,-59.7,-129.4C-59.6,-127.1,-59.5,-124.7,-59.4,-122.4C-59.2,-120.1,-59.1,-117.7,-59,-115.4C-58.8,-113.1,-58.7,-110.7,-58.5,-108.4C-58.4,-106.1,-58.2,-103.7,-58.1,-101.4C-57.9,-99.1,-57.8,-96.8,-57.6,-94.4C-57.5,-92.1,-57.3,-89.8,-57.1,-87.4C-57,-85.1,-56.8,-82.8,-56.6,-80.5C-56.5,-78.1,-56.3,-75.8,-56.1,-73.5C-55.9,-71.1,-55.7,-68.8,-55.5,-66.5C-55.4,-64.2,-55.2,-61.8,-55,-59.5C-54.8,-57.2,-54.6,-54.9,-54.4,-52.5C-54.2,-50.2,-54,-47.9,-53.7,-45.6C-53.5,-43.2,-53.3,-40.9,-53.1,-38.6C-52.9,-36.3,-52.6,-33.9,-52.4,-31.6C-52.2,-29.3,-52,-27,-51.7,-24.6C-51.5,-22.3,-51.2,-20,-51,-17.7C-50.7,-15.4,-50.5,-13,-50.2,-10.7C-50,-8.4,-49.7,-6.1,-49.5,-3.8C-49.2,-1.4,-48.9,0.9,-48.6,3.2C-48.4,5.5,-48.1,7.8,-47.8,10.1C-47.5,12.5,-47.2,14.8,-46.9,17.1C-46.6,19.4,-46.3,21.7,-46,24C-45.7,26.4,-45.4,28.7,-45.1,31C-44.8,33.3,-44.4,35.6,-44.1,37.9C-43.8,40.2,-43.5,42.5,-43.1,44.9C-42.8,47.2,-42.4,49.5,-42.1,51.8C-41.7,54.1,-41.4,56.4,-41,58.7C-40.6,61,-40.3,63.3,-39.9,65.6C-39.5,67.9,-39.1,70.2,-38.7,72.5C-38.3,74.8,-37.9,77.1,-37.5,79.4C-37.1,81.7,-36.7,84,-36.3,86.3C-35.9,88.6,-35.4,90.9,-35,93.2C-34.6,95.5,-34.1,97.8,-33.7,100.1C-33.2,102.4,-32.8,104.7,-32.3,106.9C-31.8,109.2,-31.3,111.5,-30.9,113.8C-30.4,116.1,-29.9,118.4,-29.4,120.6C-28.9,122.9,-28.3,125.2,-27.8,127.5C-27.3,129.7,-26.8,132,-26.2,134.3C-25.7,136.6,-25.1,138.8,-24.6,141.1C-24,143.4,-23.4,145.6,-22.8,147.9C-22.2,150.1,-21.6,152.4,-21,154.6C-20.4,156.9,-19.8,159.2,-19.1,161.4C-18.5,163.6,-17.8,165.9,-17.2,168.1C-16.5,170.4,-15.8,172.6,-15.1,174.8C-14.4,177,-13.7,179.3,-13,181.5C-12.2,183.7,-11.5,185.9,-10.7,188.1C-10,190.3,-9.2,192.5,-8.4,194.7C-7.6,196.9,-6.8,199.1,-5.9,201.3C-5.1,203.5,-4.2,205.6,-3.3,207.8C-2.4,209.9,-1.5,212.1,-0.6,214.2C0.4,216.4,1.3,218.5,2.3,220.6C3.3,222.7,4.4,224.8,5.4,226.9C6.5,229,7.6,231,8.7,233.1C9.8,235.1,11,237.2,12.2,239.2C13.4,241.2,14.7,243.1,16,245.1C17.2,247,18.6,248.9,20,250.8C21.4,252.7,22.8,254.5,24.4,256.3C25.9,258.1,27.5,259.8,29.1,261.4C30.8,263.1,32.5,264.6,34.3,266.1C36.1,267.6,38,269,40,270.2C42,271.5,44.1,272.6,46.1,273.6C48.2,274.5,50.3,275.3,52.7,275.9C55.2,276.5,58,276.8,59.7,277C61.3,277.1,61.7,277.1,62.1,277.1C61.7,277.1,61.3,277.1,59.7,277C58,276.8,55.2,276.4,52.8,275.8C50.3,275.3,48.2,274.5,46.2,273.5C44.1,272.5,42,271.4,40,270.1C38.1,268.9,36.2,267.5,34.4,266C32.6,264.5,30.9,262.9,29.3,261.3C27.6,259.6,26.1,257.9,24.6,256.1C23,254.3,21.6,252.5,20.2,250.6C18.8,248.8,17.5,246.9,16.2,244.9C14.9,243,13.7,241,12.5,239C11.3,237,10.2,235,9,232.9C7.9,230.9,6.8,228.8,5.8,226.7C4.8,224.6,3.7,222.5,2.8,220.4C1.8,218.3,0.8,216.2,-0.1,214C-1,211.9,-1.9,209.7,-2.8,207.6C-3.7,205.4,-4.5,203.2,-5.4,201.1C-6.2,198.9,-7,196.7,-7.8,194.5C-8.6,192.3,-9.4,190.1,-10.1,187.9C-10.9,185.7,-11.6,183.5,-12.3,181.3C-13,179.1,-13.7,176.8,-14.4,174.6C-15.1,172.4,-15.8,170.1,-16.4,167.9C-17.1,165.7,-17.7,163.4,-18.4,161.2C-19,158.9,-19.6,156.7,-20.2,154.4C-20.8,152.2,-21.4,149.9,-22,147.7C-22.5,145.4,-23.1,143.1,-23.7,140.9C-24.2,138.6,-24.8,136.3,-25.3,134.1C-25.8,131.8,-26.3,129.5,-26.9,127.3C-27.4,125,-27.9,122.7,-28.4,120.4C-28.9,118.1,-29.3,115.9,-29.8,113.6C-30.3,111.3,-30.7,109,-31.2,106.7C-31.7,104.4,-32.1,102.1,-32.5,99.9C-33,97.6,-33.4,95.3,-33.8,93C-34.3,90.7,-34.7,88.4,-35.1,86.1C-35.5,83.8,-35.9,81.5,-36.3,79.2C-36.7,76.9,-37.1,74.6,-37.4,72.3C-37.8,70,-38.2,67.7,-38.6,65.4C-38.9,63.1,-39.3,60.8,-39.6,58.5C-40,56.2,-40.3,53.9,-40.7,51.6C-41,49.3,-41.4,47,-41.7,44.6C-42,42.3,-42.3,40,-42.6,37.7C-43,35.4,-43.3,33.1,-43.6,30.8C-43.9,28.5,-44.2,26.2,-44.5,23.8C-44.8,21.5,-45.1,19.2,-45.3,16.9C-45.6,14.6,-45.9,12.3,-46.2,10C-46.4,7.6,-46.7,5.3,-47,3C-47.2,0.7,-47.5,-1.6,-47.8,-4C-48,-6.3,-48.3,-8.6,-48.5,-10.9C-48.7,-13.2,-49,-15.5,-49.2,-17.9C-49.4,-20.2,-49.7,-22.5,-49.9,-24.8C-50.1,-27.2,-50.3,-29.5,-50.6,-31.8C-50.8,-34.1,-51,-36.4,-51.2,-38.8C-51.4,-41.1,-51.6,-43.4,-51.8,-45.7C-52,-48.1,-52.2,-50.4,-52.4,-52.7C-52.6,-55,-52.8,-57.4,-53,-59.7C-53.1,-62,-53.3,-64.3,-53.5,-66.7C-53.7,-69,-53.8,-71.3,-54,-73.6C-54.2,-76,-54.3,-78.3,-54.5,-80.6C-54.7,-82.9,-54.8,-85.3,-55,-87.6C-55.1,-89.9,-55.3,-92.2,-55.4,-94.6C-55.6,-96.9,-55.7,-99.2,-55.8,-101.6C-56,-103.9,-56.1,-106.2,-56.3,-108.5C-56.4,-110.9,-56.5,-113.2,-56.6,-115.5C-56.8,-117.9,-56.9,-120.2,-57,-122.5C-57.1,-124.8,-57.2,-127.2,-57.3,-129.5C-57.5,-131.8,-57.6,-134.2,-57.7,-136.5C-57.8,-138.8,-57.9,-141.2,-58,-143.5C-58.1,-145.8,-58.2,-148.1,-58.3,-150.5C-58.4,-152.8,-58.4,-155.1,-58.5,-157.5C-58.6,-159.8,-58.7,-162.1,-58.8,-164.5C-58.9,-166.8,-58.9,-169.1,-59,-171.5C-59.1,-173.8,-59.2,-176.1,-59.2,-178.4C-59.3,-180.8,-59.4,-183.1,-59.4,-185.4C-59.5,-187.8,-59.6,-190.1,-59.6,-192.4C-59.7,-194.8,-59.7,-197.1,-59.8,-199.4C-59.8,-201.8,-59.9,-204.1,-59.9,-206.4C-60,-208.8,-60,-211.1,-60,-213.4C-60.1,-215.8,-60.1,-218.1,-60.2,-220.4C-60.2,-222.7,-60.2,-225.1,-60.3,-227.4C-60.3,-229.7,-60.3,-232.1,-60.3,-234.4C-60.4,-236.7,-60.4,-239.1,-60.4,-241.4z" fill="#ffffff" stroke-linejoin="round" stroke="#ffffff" ed:parentid="101" ed:tosuperid="189" stroke-linecap="round" transform="matrix(1,0,0,1,144,934)" id="190"/>
<path d="M-13.5,-21.5C2,-21.5,-5.7,21.5,13.5,21.5" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="191" stroke-linecap="round" transform="matrix(1,0,0,1,344,689)" id="192"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="191" ed:tosuperid="193" stroke-linecap="round" transform="matrix(1,0,0,1,463,710)" id="194"/>
<path d="M-13.5,-35.9C4.3,-35.9,-10.9,35.9,13.5,35.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="195" stroke-linecap="round" transform="matrix(1,0,0,1,344,703)" id="196"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="195" ed:tosuperid="197" stroke-linecap="round" transform="matrix(1,0,0,1,451,739)" id="198"/>
<path d="M-13.5,-50.4C5.4,-50.4,-13.4,50.4,13.5,50.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="199" stroke-linecap="round" transform="matrix(1,0,0,1,344,718)" id="200"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="199" ed:tosuperid="201" stroke-linecap="round" transform="matrix(1,0,0,1,516,768)" id="202"/>
<path d="M-13.5,-64.8C5.4,-64.8,-13.5,64.8,13.5,64.8" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="203" stroke-linecap="round" transform="matrix(1,0,0,1,344,732)" id="204"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="203" ed:tosuperid="205" stroke-linecap="round" transform="matrix(1,0,0,1,519,797)" id="206"/>
<path d="M-13.5,-79.3C5.4,-79.3,-13.5,79.3,13.5,79.3" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="207" stroke-linecap="round" transform="matrix(1,0,0,1,344,747)" id="208"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="207" ed:tosuperid="209" stroke-linecap="round" transform="matrix(1,0,0,1,444,826)" id="210"/>
<path d="M-13.5,-93.7C5.4,-93.7,-13.5,93.7,13.5,93.7" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="211" stroke-linecap="round" transform="matrix(1,0,0,1,344,761)" id="212"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="211" ed:tosuperid="215" stroke-linecap="round" transform="matrix(1,0,0,1,475,855)" id="216"/>
<path d="M-13.5,-108.2C5.4,-108.2,-13.5,108.2,13.5,108.2" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="217" stroke-linecap="round" transform="matrix(1,0,0,1,344,775)" id="218"/>
<path d="M-13.5,-123.6C5.4,-123.6,-13.5,123.6,13.5,123.6" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="151" ed:tosuperid="247" stroke-linecap="round" transform="matrix(1,0,0,1,344,791)" id="248"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="217" ed:tosuperid="249" stroke-linecap="round" transform="matrix(1,0,0,1,432,884)" id="250"/>
<path d="M-13.5,32.9C3.9,32.9,-10.1,-32.9,13.5,-32.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="189" ed:tosuperid="253" stroke-linecap="round" transform="matrix(1,0,0,1,344,1178)" id="254"/>
<path d="M-13.5,-32.9C3.9,-32.9,-10.1,32.9,13.5,32.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="189" ed:tosuperid="255" stroke-linecap="round" transform="matrix(1,0,0,1,344,1244)" id="256"/>
<path d="M-13.5,16.4C1,16.4,-3.3,-16.4,13.5,-16.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="189" ed:tosuperid="259" stroke-linecap="round" transform="matrix(1,0,0,1,344,1194)" id="260"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="189" ed:tosuperid="268" stroke-linecap="round" transform="matrix(1,0,0,1,344,1211)" id="269"/>
<path d="M-63.2,162.7C-63.3,163.8,-62.6,164.5,-61.8,164.6C-60.9,164.6,-60.3,163.9,-60.2,162.8C-60.2,160.5,-60.1,158.1,-60.1,155.8C-60,153.5,-60,151.1,-59.9,148.8C-59.9,146.5,-59.8,144.1,-59.7,141.8C-59.6,139.5,-59.6,137.2,-59.5,134.8C-59.4,132.5,-59.3,130.2,-59.2,127.8C-59.1,125.5,-59,123.2,-58.9,120.9C-58.8,118.5,-58.7,116.2,-58.6,113.9C-58.5,111.5,-58.3,109.2,-58.2,106.9C-58.1,104.6,-57.9,102.2,-57.8,99.9C-57.6,97.6,-57.5,95.2,-57.3,92.9C-57.2,90.6,-57,88.3,-56.9,85.9C-56.7,83.6,-56.5,81.3,-56.3,79C-56.1,76.6,-56,74.3,-55.8,72C-55.6,69.7,-55.4,67.4,-55.2,65C-54.9,62.7,-54.7,60.4,-54.5,58.1C-54.3,55.8,-54.1,53.4,-53.8,51.1C-53.6,48.8,-53.3,46.5,-53.1,44.2C-52.8,41.8,-52.6,39.5,-52.3,37.2C-52,34.9,-51.8,32.6,-51.5,30.3C-51.2,28,-50.9,25.6,-50.6,23.3C-50.3,21,-50,18.7,-49.7,16.4C-49.4,14.1,-49,11.8,-48.7,9.5C-48.4,7.2,-48,4.9,-47.7,2.6C-47.3,0.3,-46.9,-2.1,-46.6,-4.4C-46.2,-6.7,-45.8,-9,-45.4,-11.2C-45,-13.5,-44.6,-15.8,-44.2,-18.1C-43.8,-20.4,-43.4,-22.7,-43,-25C-42.5,-27.3,-42.1,-29.6,-41.6,-31.9C-41.2,-34.2,-40.7,-36.4,-40.2,-38.7C-39.7,-41,-39.2,-43.3,-38.7,-45.6C-38.2,-47.8,-37.7,-50.1,-37.2,-52.4C-36.7,-54.7,-36.1,-56.9,-35.6,-59.2C-35,-61.4,-34.5,-63.7,-33.9,-66C-33.3,-68.2,-32.7,-70.5,-32.1,-72.7C-31.5,-75,-30.8,-77.2,-30.2,-79.5C-29.6,-81.7,-28.9,-83.9,-28.2,-86.2C-27.5,-88.4,-26.8,-90.6,-26.1,-92.8C-25.4,-95.1,-24.7,-97.3,-23.9,-99.5C-23.2,-101.7,-22.4,-103.9,-21.6,-106.1C-20.8,-108.3,-20,-110.5,-19.2,-112.6C-18.4,-114.8,-17.5,-117,-16.6,-119.1C-15.8,-121.3,-14.8,-123.4,-13.9,-125.6C-13,-127.7,-12,-129.8,-11,-131.9C-10.1,-134.1,-9,-136.2,-8,-138.2C-7,-140.3,-5.9,-142.4,-4.8,-144.4C-3.7,-146.5,-2.5,-148.5,-1.3,-150.5C-0.2,-152.5,1.1,-154.5,2.3,-156.5C3.6,-158.4,4.9,-160.4,6.2,-162.3C7.6,-164.2,9,-166,10.4,-167.9C11.9,-169.7,13.4,-171.5,14.9,-173.2C16.5,-175,18.1,-176.6,19.7,-178.3C21.4,-179.9,23.1,-181.5,24.9,-183C26.7,-184.5,28.5,-185.9,30.4,-187.2C32.4,-188.5,34.3,-189.8,36.4,-190.9C38.4,-192,40.6,-193,42.7,-193.9C44.9,-194.7,47,-195.4,49.3,-196C51.6,-196.6,54.1,-197.1,56.2,-197.3C58.4,-197.6,60.2,-197.6,62.1,-197.7C60.2,-197.6,58.4,-197.6,56.2,-197.4C54.1,-197.1,51.6,-196.7,49.3,-196.1C47,-195.6,44.8,-194.8,42.7,-194C40.5,-193.1,38.4,-192.1,36.3,-191C34.2,-189.9,32.2,-188.7,30.3,-187.4C28.4,-186.1,26.5,-184.7,24.7,-183.2C22.9,-181.7,21.2,-180.1,19.5,-178.5C17.8,-176.9,16.2,-175.2,14.6,-173.5C13,-171.7,11.5,-170,10.1,-168.1C8.6,-166.3,7.2,-164.5,5.8,-162.6C4.5,-160.7,3.1,-158.7,1.9,-156.8C0.6,-154.8,-0.7,-152.8,-1.9,-150.8C-3.1,-148.8,-4.2,-146.8,-5.4,-144.7C-6.5,-142.7,-7.6,-140.6,-8.6,-138.6C-9.7,-136.5,-10.7,-134.4,-11.7,-132.3C-12.7,-130.2,-13.7,-128,-14.7,-125.9C-15.6,-123.8,-16.5,-121.6,-17.4,-119.5C-18.3,-117.3,-19.2,-115.1,-20.1,-113C-20.9,-110.8,-21.7,-108.6,-22.6,-106.4C-23.4,-104.2,-24.2,-102,-24.9,-99.8C-25.7,-97.6,-26.4,-95.4,-27.2,-93.2C-27.9,-91,-28.6,-88.7,-29.3,-86.5C-30,-84.3,-30.7,-82,-31.3,-79.8C-32,-77.5,-32.6,-75.3,-33.3,-73.1C-33.9,-70.8,-34.5,-68.6,-35.1,-66.3C-35.7,-64,-36.3,-61.8,-36.9,-59.5C-37.5,-57.2,-38,-55,-38.6,-52.7C-39.1,-50.4,-39.6,-48.2,-40.2,-45.9C-40.7,-43.6,-41.2,-41.3,-41.7,-39C-42.2,-36.8,-42.7,-34.5,-43.1,-32.2C-43.6,-29.9,-44.1,-27.6,-44.5,-25.3C-45,-23,-45.4,-20.7,-45.8,-18.4C-46.3,-16.1,-46.7,-13.8,-47.1,-11.5C-47.5,-9.2,-47.9,-6.9,-48.3,-4.6C-48.7,-2.3,-49.1,-0,-49.4,2.3C-49.8,4.6,-50.2,6.9,-50.5,9.2C-50.9,11.5,-51.2,13.8,-51.6,16.1C-51.9,18.4,-52.2,20.8,-52.5,23.1C-52.9,25.4,-53.2,27.7,-53.5,30C-53.8,32.3,-54.1,34.6,-54.4,37C-54.6,39.3,-54.9,41.6,-55.2,43.9C-55.5,46.2,-55.7,48.6,-56,50.9C-56.2,53.2,-56.5,55.5,-56.7,57.9C-57,60.2,-57.2,62.5,-57.4,64.8C-57.6,67.1,-57.9,69.5,-58.1,71.8C-58.3,74.1,-58.5,76.5,-58.7,78.8C-58.9,81.1,-59.1,83.4,-59.3,85.8C-59.5,88.1,-59.6,90.4,-59.8,92.7C-60,95.1,-60.2,97.4,-60.3,99.7C-60.5,102.1,-60.6,104.4,-60.8,106.7C-60.9,109.1,-61.1,111.4,-61.2,113.7C-61.3,116.1,-61.5,118.4,-61.6,120.7C-61.7,123,-61.8,125.4,-62,127.7C-62.1,130,-62.2,132.4,-62.3,134.7C-62.4,137,-62.5,139.4,-62.6,141.7C-62.7,144,-62.7,146.4,-62.8,148.7C-62.9,151.1,-63,153.4,-63,155.7C-63.1,158.1,-63.2,160.4,-63.2,162.7z" fill="#ffffff" stroke-linejoin="round" stroke="#ffffff" ed:parentid="101" ed:tosuperid="284" stroke-linecap="round" transform="matrix(1,0,0,1,144,459)" id="285"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="295" ed:tosuperid="290" stroke-linecap="round" transform="matrix(1,0,0,1,755,188)" id="291"/>
<path d="M-13.5,36.9C4.4,36.9,-11.2,-36.9,13.5,-36.9" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="284" ed:tosuperid="292" stroke-linecap="round" transform="matrix(1,0,0,1,417,224)" id="293"/>
<path d="M-13.5,8.4C-0.7,8.4,0.8,-8.4,13.5,-8.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="284" ed:tosuperid="296" stroke-linecap="round" transform="matrix(1,0,0,1,417,253)" id="297"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="296" ed:tosuperid="298" stroke-linecap="round" transform="matrix(1,0,0,1,532,245)" id="299"/>
<path d="M-13.5,-6.6C-1.2,-6.6,1.8,6.6,13.5,6.6" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="284" ed:tosuperid="300" stroke-linecap="round" transform="matrix(1,0,0,1,417,268)" id="301"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="300" ed:tosuperid="302" stroke-linecap="round" transform="matrix(1,0,0,1,677,274)" id="303"/>
<path d="M-13.5,-21.5C2,-21.5,-5.7,21.5,13.5,21.5" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="284" ed:tosuperid="308" stroke-linecap="round" transform="matrix(1,0,0,1,417,283)" id="309"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="308" ed:tosuperid="312" stroke-linecap="round" transform="matrix(1,0,0,1,641,304)" id="313"/>
<path d="M-13.5,-43.5C5,-43.5,-12.6,43.5,13.5,43.5" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="284" ed:tosuperid="314" stroke-linecap="round" transform="matrix(1,0,0,1,417,305)" id="315"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="314" ed:tosuperid="316" stroke-linecap="round" transform="matrix(1,0,0,1,558,348)" id="317"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="316" ed:tosuperid="318" stroke-linecap="round" transform="matrix(1,0,0,1,754,348)" id="319"/>
<path d="M-13.5,0C-2.7,0,5.4,0,13.5,0" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="318" ed:tosuperid="320" stroke-linecap="round" transform="matrix(1,0,0,1,854,348)" id="321"/>
<path d="M-13.5,7.2C-1,7.2,1.5,-7.2,13.5,-7.2" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="320" ed:tosuperid="324" stroke-linecap="round" transform="matrix(1,0,0,1,1388,341)" id="325"/>
<path d="M-13.5,-7.2C-1,-7.2,1.5,7.2,13.5,7.2" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="320" ed:tosuperid="330" stroke-linecap="round" transform="matrix(1,0,0,1,1388,355)" id="331"/>
<path d="M-13.5,-16.4C1,-16.4,-3.3,16.4,13.5,16.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="189" ed:tosuperid="337" stroke-linecap="round" transform="matrix(1,0,0,1,344,1227)" id="338"/>
<path d="M-13.5,-7.4C-1,-7.4,1.3,7.4,13.5,7.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="181" ed:tosuperid="339" stroke-linecap="round" transform="matrix(1,0,0,1,447,615)" id="340"/>
<path d="M-13.5,-22.3C2.2,-22.3,-6,22.3,13.5,22.3" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="181" ed:tosuperid="341" stroke-linecap="round" transform="matrix(1,0,0,1,447,630)" id="342"/>
<path d="M-13.5,7.4C-1,7.4,1.3,-7.4,13.5,-7.4" stroke-linejoin="round" fill="none" stroke="#ffffff" ed:parentid="181" ed:tosuperid="345" stroke-linecap="round" transform="matrix(1,0,0,1,447,600)" id="346"/>
<g ed:width="122.408" ed:topictype="mainidea" transform="matrix(1,0,0,1,21,609)" ed:height="95.91030000000001" ed:layout="rightmap" id="101">
<path d="M49.2,4.2C50.1,26.1,60.6,16.4,68.4,4C68.9,11.7,72.7,32.3,91.6,0C76.6,38,100.8,22.5,106.4,18.6C94.1,30.5,104.2,28.3,108.7,26.9C94.8,39.4,115.7,52.9,122.4,57.8C103,48.2,108.5,58.6,112,62.9C97.7,53.6,104.8,66.5,107.1,70.7C99.8,65,93.2,61.2,98.3,70.1C90.6,61.3,96,77,106,89.7C84.4,67.7,91.1,84.4,92.5,87.5C84.7,76.4,86.6,82,87.3,85C76.6,72.4,76.1,74.8,78.1,78.6C71.9,75.5,75.1,85.7,76.6,90.8C70.3,80.6,67.5,82,68,86.7C65.2,78.5,60.7,84.2,60.1,85.1C59,73.6,53.2,77.7,46.1,95.9C53.7,65.9,45.7,77.8,44.7,78.9C46.2,65.9,32.9,79.3,30.8,81.6C31.6,76.3,26.1,83.2,25,84.5C25,76.8,19.1,85.3,17.4,86.5C23.7,76.7,19.9,76.9,18.9,76.9C30.7,63.2,21.5,64,14.7,66C28.3,57.4,17.4,59.3,8.8,61.9C19.8,57.3,16.4,56.2,12.6,56.1C26,43.6,18.4,35.8,0,33.4C30.8,35.4,18.4,19.3,10.9,12C39.4,33,32,19.5,30.8,16.7C40.8,25.9,31.8,11.6,28.5,6.2C40.4,21.8,48,20.6,49.2,4.2z" fill="#c4b1ad" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st25">
<tspan style="white-space:pre" y="52" x="29">Git使用</tspan>
</text>
</g>
<g ed:width="107.912" ed:parentid="101" transform="matrix(1,0,0,1,206,51)" ed:height="37.6" id="102">
<path d="M9.4,0L98.5,0L107.9,18.8L98.5,37.6L9.4,37.6L0,18.8L9.4,0z" fill="#f78181" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st26">
<tspan style="white-space:pre" y="23.8" x="21">1.初始化</tspan>
</text>
</g>
<g ed:width="116.8" ed:parentid="102" transform="matrix(1,0,0,1,341,25)" ed:height="23.4" id="104">
<path d="M0,0L116.8,0L116.8,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">git init [项目名]</tspan>
</text>
</g>
<g ed:width="298.4" ed:parentid="102" transform="matrix(1,0,0,1,341,58)" ed:height="23.4" id="115">
<path d="M0,0L298.4,0L298.4,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">git config -- global user.name "your name"</tspan>
</text>
</g>
<g ed:width="341.6" ed:parentid="102" transform="matrix(1,0,0,1,341,91)" ed:height="23.4" id="117">
<path d="M0,0L341.6,0L341.6,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">git config--global user.email "you@domain.com"</tspan>
</text>
</g>
<g ed:width="123.912" ed:parentid="101" transform="matrix(1,0,0,1,206,1011)" ed:height="37.6" id="127">
<path d="M9.4,0L114.5,0L123.9,18.8L114.5,37.6L9.4,37.6L0,18.8L9.4,0z" fill="#dda3cf" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st26">
<tspan style="white-space:pre" y="23.8" x="21">4.分支操作</tspan>
</text>
</g>
<g ed:width="101.4" ed:parentid="127" transform="matrix(1,0,0,1,357,961)" ed:height="22.4" id="131">
<path d="M0,0L101.4,0L101.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git branch -a</tspan>
</text>
</g>
<g ed:width="127.8" ed:parentid="131" transform="matrix(1,0,0,1,486,961)" ed:height="22.4" id="133">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">列出本地所有分支</tspan>
</text>
</g>
<g ed:width="147.8" ed:parentid="127" transform="matrix(1,0,0,1,357,990)" ed:height="22.4" id="135">
<path d="M0,0L147.8,0L147.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git switch -c [name]</tspan>
</text>
</g>
<g ed:width="177.4" ed:parentid="135" transform="matrix(1,0,0,1,532,990)" ed:height="22.4" id="137">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">创建一个新的name的分支</tspan>
</text>
</g>
<g ed:width="147.8" ed:parentid="127" transform="matrix(1,0,0,1,357,1018)" ed:height="22.4" id="139">
<path d="M0,0L147.8,0L147.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git switch -c [name]</tspan>
</text>
</g>
<g ed:width="73.40000000000001" ed:parentid="139" transform="matrix(1,0,0,1,532,1018)" ed:height="22.4" id="141">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">切换分支</tspan>
</text>
</g>
<g ed:width="167.8" ed:parentid="127" transform="matrix(1,0,0,1,357,1047)" ed:height="22.4" id="143">
<path d="M0,0L167.8,0L167.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git merge [from name]</tspan>
</text>
</g>
<g ed:width="195" ed:parentid="143" transform="matrix(1,0,0,1,552,1047)" ed:height="22.4" id="145">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">将name 分支与当前分支合并</tspan>
</text>
</g>
<g ed:width="152.6" ed:parentid="127" transform="matrix(1,0,0,1,357,1076)" ed:height="22.4" id="147">
<path d="M0,0L152.6,0L152.6,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git branch -d [name]</tspan>
</text>
</g>
<g ed:width="109.4" ed:parentid="147" transform="matrix(1,0,0,1,537,1076)" ed:height="22.4" id="149">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">删除name分支</tspan>
</text>
</g>
<g ed:width="123.912" ed:parentid="101" transform="matrix(1,0,0,1,206,648)" ed:height="37.6" id="151">
<path d="M9.4,0L114.5,0L123.9,18.8L114.5,37.6L9.4,37.6L0,18.8L9.4,0z" fill="#ffcd55" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st26">
<tspan style="white-space:pre" y="23.8" x="21">3.本地操作</tspan>
</text>
</g>
<g ed:width="118.8" ed:parentid="151" transform="matrix(1,0,0,1,357,407)" ed:height="22.4" id="155">
<path d="M0,0L118.8,0L118.8,22.4L0,22.4L0,0z" fill="#696969"/>
<g transform="translate(9,3.8)">
<use transform="translate(0,0)" xlink:href="#star3"/>
</g>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="29">git add [file]</tspan>
</text>
</g>
<symbol id="star3">
<image height="16" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNEMzM2QTM3NEZFMjExRTc4RDY1RDY3NTVGMDlFMjk2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNEMzM2QTM4NEZFMjExRTc4RDY1RDY3NTVGMDlFMjk2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0QzMzZBMzU0RkUyMTFFNzhENjVENjc1NUYwOUUyOTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0QzMzZBMzY0RkUyMTFFNzhENjVENjc1NUYwOUUyOTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6U7HANAAAESklEQVR42uSbWUgVYRTHv3s1NZebhZYtYqWGWhaR2ErRSiUtVERED9KD9BQUlRAtBGZFEQSRPfRQ0YNEVBQ9FEkREREI7dpGBS22mes119v/MOfhYnmd+WYfD/wYdO7Mne8/5ztzzpnv+kJXhJ2WC2rsvAC/jd9dCh6CdyDKrouItul757MAAaaTty0DxQMOgaFhf/vAh4EyBdaBnD68cYPVF+OzIQi+Btl97HsPxnvZA+aCtAj7h4BlXhbgCEiKsH8YKPeqAHkgX8Xn0sFsLwpAdz9BxefIC8q8JkAqWKw2MIPJKr3FNQLQ3Y/R8HmKEwe89BgMSRzTxJ7w0e0ecBD0SBxHHrPfCx4QBIMlj20Do8Fvt3rAFp2VXshsLzDbA+rACJ3n6OHp0O02D1gJEg04D02DvW70gOdgokHn6gCxbvKAGZzSGmXtYJubPKAKLDD4nJ/AfaG00Z4yv+wSgNwxI4xxQmlwZvJji6J3ikne9YeJ420Ni1LNojwzQoBArwHSwHK4WTGSi5ogR+ZBIJ5zeLuMBG/hbYCzx8fgAXjCwnyNJAANYjsoAgX87G7jE8bqSGTstg4eB42Puk3fwDVwE9SGC1DLQSteeN96OKhS46WMGpHXwQSbXdhK87NHU7WZ5udsbSBaF8UGmgI+yWrNzUZToBIU+znQzesrSnrQ6NFJrfni8EzwHtgF6j0+eHoF95YbLf+kwhfAHg+LQDnLF9Gr19i7FqgAhz0oQjePaayaYugoOGlmF8aGLJHm/XAt1SB1Yc6CRo+IkChTDlNqfFEo3Vm3GqXCSXr6ASXgBmh24eCbuUpt1dsQ2ciBMeiiwVPAK+SoL/QKILhwcIsn/BTKK/ZatYWBWlsPLjk8MP4Am8AjLZWRFtsMzoMGh975rVzrC7MEEPwlFQ7LE+r50V0pUxvL2G6eDl0OEYBWnZ2SbQ7oKSyiHSKA9IoSPQLkOGgKTLFDgCwHCZBhhwBjHCQAtcTzrBQgQ9iwrjeC+YTkmiJZATK50HBStTfVSgHoDVGMwzxglpUCpPZXZtpguVYKUCSc9yIlIHNT/FaqbbK1yQRCGQFoRXeCAwWIsUqAfFbbaUbv+6ZbJYAR63Wor1DNW6OKqgIrBCgU+tYLUAJVx70FuuBkrubo/WRIpwDZVggwTfLigsxOoawyuRy2b59QFmWc4QRLVgh6AZJutgBZEhfVyQ0LCp6nI3y2hMW5Cj5LCNGqtSbQKsAo8F3jPL8llB9BHFN5DHV31oCFfGyTBiEoD0gxU4A4zgLV3Ama56vBcsnC6RVYCmaC2yqFiNP6iNYqQKwKd6c5XM6ufNeAyP4SLOFcv6ofISg7jTdTgKgIU6CBXTZFmPPLrxdC+dnNHHBH/H9BR7vWKlVmoSS9L1wbJl4ju2upQXdcrU0C57gyTeb/dWqtUmVXip4Ai8AbcFwoK0zsslVgh1BWqK5gT1FtfwUYAN0E6f+FyjlHAAAAAElFTkSuQmCC"/>
</symbol>
<g ed:width="155" ed:parentid="155" transform="matrix(1,0,0,1,503,407)" ed:height="22.4" id="159">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">将文件保存在暂存区域</tspan>
</text>
</g>
<g ed:width="72.59999999999999" ed:parentid="151" transform="matrix(1,0,0,1,357,436)" ed:height="22.4" id="163">
<path d="M0,0L72.6,0L72.6,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git add .</tspan>
</text>
</g>
<g ed:width="182.2" ed:parentid="163" transform="matrix(1,0,0,1,457,436)" ed:height="22.4" id="165">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">将所有文件保存在暂存区域</tspan>
</text>
</g>
<g ed:width="110" ed:parentid="151" transform="matrix(1,0,0,1,357,465)" ed:height="22.4" id="167">
<path d="M0,0L110,0L110,22.4L0,22.4L0,0z" fill="#696969"/>
<g transform="translate(9,3.8)">
<use transform="translate(0,0)" xlink:href="#star3"/>
</g>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="29">git commit</tspan>
</text>
</g>
<g ed:width="195.8" ed:parentid="167" transform="matrix(1,0,0,1,494,465)" ed:height="22.4" id="169">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">将暂存区的修改保存到代码库</tspan>
</text>
</g>
<g ed:width="97.2" ed:parentid="151" transform="matrix(1,0,0,1,357,493)" ed:height="22.4" id="171">
<path d="M0,0L97.2,0L97.2,22.4L0,22.4L0,0z" fill="#696969"/>
<g transform="translate(9,3.8)">
<use transform="translate(0,0)" xlink:href="#star3"/>
</g>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="29">git status</tspan>
</text>
</g>
<g ed:width="305.4" ed:parentid="171" transform="matrix(1,0,0,1,482,493)" ed:height="22.4" id="175">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">查看当前状态, 列出所有新修改, 暂存区文件情况</tspan>
</text>
</g>
<g ed:width="79.8" ed:parentid="151" transform="matrix(1,0,0,1,357,522)" ed:height="22.4" id="177">
<path d="M0,0L79.8,0L79.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git log -n</tspan>
</text>
</g>
<g ed:width="176.6" ed:parentid="177" transform="matrix(1,0,0,1,464,522)" ed:height="22.4" id="179">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">显示最近n次 commit记录</tspan>
</text>
</g>
<g ed:width="76.59999999999999" ed:parentid="151" transform="matrix(1,0,0,1,357,596)" ed:height="22.4" id="181">
<path d="M0,0L76.6,0L76.6,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git reset </tspan>
</text>
</g>
<g ed:width="197.4" ed:parentid="181" transform="matrix(1,0,0,1,461,551)" ed:height="23.2" id="183">
<text class="st28">
<tspan style="white-space:pre" y="16.5" x="9">-hard commit_id</tspan>
<tspan style="white-space:pre" class="st29"> : 回滚版本</tspan>
</text>
</g>
<g ed:width="97.40000000000001" ed:parentid="151" transform="matrix(1,0,0,1,357,670)" ed:height="22.4" id="185">
<path d="M0,0L97.4,0L97.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git diff [file]</tspan>
</text>
</g>
<g ed:width="168.6" ed:parentid="185" transform="matrix(1,0,0,1,482,670)" ed:height="22.4" id="187">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">查看工作区和缓存区差别</tspan>
</text>
</g>
<g ed:width="123.912" ed:parentid="101" transform="matrix(1,0,0,1,206,1192)" ed:height="37.6" id="189">
<path d="M9.4,0L114.5,0L123.9,18.8L114.5,37.6L9.4,37.6L0,18.8L9.4,0z" fill="#a284dd" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st26">
<tspan style="white-space:pre" y="23.8" x="21">5.远程操作</tspan>
</text>
</g>
<g ed:width="92.59999999999999" ed:parentid="151" transform="matrix(1,0,0,1,357,699)" ed:height="22.4" id="191">
<path d="M0,0L92.6,0L92.6,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git rm [file]</tspan>
</text>
</g>
<g ed:width="168.6" ed:parentid="191" transform="matrix(1,0,0,1,477,699)" ed:height="22.4" id="193">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">删除工作区和暂存区文件</tspan>
</text>
</g>
<g ed:width="79.8" ed:parentid="151" transform="matrix(1,0,0,1,357,728)" ed:height="22.4" id="195">
<path d="M0,0L79.8,0L79.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git reflog</tspan>
</text>
</g>
<g ed:width="141.4" ed:parentid="195" transform="matrix(1,0,0,1,464,728)" ed:height="22.4" id="197">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">记录你所有操作记录</tspan>
</text>
</g>
<g ed:width="145.4" ed:parentid="151" transform="matrix(1,0,0,1,357,757)" ed:height="22.4" id="199">
<path d="M0,0L145.4,0L145.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git checkout --[file]</tspan>
</text>
</g>
<g ed:width="141.4" ed:parentid="199" transform="matrix(1,0,0,1,530,757)" ed:height="22.4" id="201">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">把工作区修改撤销掉</tspan>
</text>
</g>
<g ed:width="148.6" ed:parentid="151" transform="matrix(1,0,0,1,357,786)" ed:height="22.4" id="203">
<path d="M0,0L148.6,0L148.6,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git reset HEAD [file]</tspan>
</text>
</g>
<g ed:width="141.4" ed:parentid="203" transform="matrix(1,0,0,1,533,786)" ed:height="22.4" id="205">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">把暂存区修改撤销掉</tspan>
</text>
</g>
<g ed:width="73.40000000000001" ed:parentid="151" transform="matrix(1,0,0,1,357,815)" ed:height="22.4" id="207">
<path d="M0,0L73.4,0L73.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git stash</tspan>
</text>
</g>
<g ed:width="209.4" ed:parentid="207" transform="matrix(1,0,0,1,458,815)" ed:height="22.4" id="209">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">把工作区修改内容保存到贮藏区</tspan>
</text>
</g>
<g ed:width="103.8" ed:parentid="151" transform="matrix(1,0,0,1,357,843)" ed:height="22.4" id="211">
<path d="M0,0L103.8,0L103.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git stash pop</tspan>
</text>
</g>
<g ed:width="182.2" ed:parentid="211" transform="matrix(1,0,0,1,488,843)" ed:height="22.4" id="215">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">将贮藏区内容恢复到工作区</tspan>
</text>
</g>
<g ed:width="61.4" ed:parentid="151" transform="matrix(1,0,0,1,357,872)" ed:height="22.4" id="217">
<path d="M0,0L61.4,0L61.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git tag</tspan>
</text>
</g>
<g ed:width="227.8" ed:parentid="151" transform="matrix(1,0,0,1,357,903)" ed:height="22.4" id="247">
<path d="M0,0L227.8,0L227.8,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git tag -a <版本号> -m message</tspan>
</text>
</g>
<g ed:width="162.2" ed:parentid="217" transform="matrix(1,0,0,1,446,872)" ed:height="22.4" id="249">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">列出代码库中所有的tag</tspan>
</text>
</g>
<g ed:width="153.2" ed:parentid="189" transform="matrix(1,0,0,1,357,1134)" ed:height="22.4" id="253">
<path d="M0,0L153.2,0L153.2,22.4L0,22.4L0,0z" fill="#696969"/>
<g transform="translate(9,3.8)">
<use transform="translate(0,0)" xlink:href="#star3"/>
</g>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="28">git clone [项目url]</tspan>
</text>
</g>
<g ed:width="209.2" ed:parentid="189" transform="matrix(1,0,0,1,357,1265)" ed:height="22.4" id="255">
<path d="M0,0L209.2,0L209.2,22.4L0,22.4L0,0z" fill="#696969"/>
<g transform="translate(9,3.8)">
<use transform="translate(0,0)" xlink:href="#star3"/>
</g>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="29">git push [remote] [branch]</tspan>
</text>
</g>
<g ed:width="257.8" ed:parentid="257" transform="matrix(1,0,0,1,537,1132)" ed:height="26.4" ed:layout="rightmap" id="258">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">从远程代码库下载整个代码库和历史记录</tspan>
</text>
</g>
<g ed:width="270.2" ed:parentid="189" transform="matrix(1,0,0,1,357,1167)" ed:height="22.4" id="259">
<path d="M0,0L270.2,0L270.2,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git remote add <remote name> <url></tspan>
</text>
</g>
<g ed:width="108.2" ed:parentid="266" transform="matrix(1,0,0,1,654,1165)" ed:height="26.4" ed:layout="rightmap" id="267">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">链接一个远程库</tspan>
</text>
</g>
<g ed:width="73.40000000000001" ed:parentid="189" transform="matrix(1,0,0,1,357,1200)" ed:height="22.4" id="268">
<path d="M0,0L73.4,0L73.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git fetch</tspan>
</text>
</g>
<g ed:width="199.4" ed:parentid="272" transform="matrix(1,0,0,1,457,1198)" ed:height="26.4" ed:layout="rightmap" id="273">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">将会被加入到commit和tags中</tspan>
</text>
</g>
<g ed:width="308.2" ed:parentid="274" transform="matrix(1,0,0,1,593,1263)" ed:height="26.4" ed:layout="rightmap" id="275">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">将当前代码库推送到远程remote库的branch分支</tspan>
</text>
</g>
<g ed:width="121.8" ed:parentid="278" transform="matrix(1,0,0,1,484,24)" ed:height="26.4" ed:layout="rightmap" id="279">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">创建一个本地仓库</tspan>
</text>
</g>
<g ed:width="261" ed:parentid="280" transform="matrix(1,0,0,1,666,56)" ed:height="26.4" ed:layout="rightmap" id="281">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">设置名字, 将会被加入到commit和tags中</tspan>
</text>
</g>
<g ed:width="269.8" ed:parentid="282" transform="matrix(1,0,0,1,709,89)" ed:height="26.4" ed:layout="rightmap" id="283">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">设置email, 将会被加入到commit和tags中</tspan>
</text>
</g>
<g ed:width="108.2" ed:parentid="276" transform="matrix(1,0,0,1,611,901)" ed:height="26.4" ed:layout="rightmap" id="277">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">新增一个版本号</tspan>
</text>
</g>
<g ed:width="197.512" ed:parentid="101" transform="matrix(1,0,0,1,206,242)" ed:height="37.6" id="284">
<path d="M9.4,0L188.1,0L197.5,18.8L188.1,37.6L9.4,37.6L0,18.8L9.4,0z" fill="#5fb7f1" stroke-linejoin="round" stroke="#ffffff"/>
<text class="st26">
<tspan style="white-space:pre" y="23.8" x="21">2.SSH连接(Window)</tspan>
</text>
</g>
<g ed:width="123.8" ed:parentid="295" transform="matrix(1,0,0,1,769,149)" ed:height="77.59999999999999" id="290">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">名称是其中一个</tspan>
<tspan style="white-space:pre" y="34.9" x="9">id_rsa.pub</tspan>
<tspan style="white-space:pre" y="53.3" x="9">id_ecdsa.pub</tspan>
<tspan style="white-space:pre" y="71.7" x="9">id_ed25519.pub</tspan>
</text>
</g>
<g ed:width="195.4" ed:parentid="284" transform="matrix(1,0,0,1,431,176)" ed:height="22.4" id="292">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">1.检查本地是否存在SSH密钥</tspan>
</text>
</g>
<g ed:width="89.2" ed:parentid="294" transform="matrix(1,0,0,1,652,174)" ed:height="27.4" ed:layout="rightmap" id="295">
<path d="M0,0L89.2,0L89.2,27.4L0,27.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="19" x="6">ls -al ~/.ssh</tspan>
</text>
</g>
<g ed:width="87.40000000000001" ed:parentid="284" transform="matrix(1,0,0,1,431,233)" ed:height="22.4" id="296">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">2.创建密钥</tspan>
</text>
</g>
<g ed:width="392" ed:parentid="296" transform="matrix(1,0,0,1,545,233)" ed:height="23.4" id="298">
<path d="M0,0L392,0L392,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">ssh-keygen -t rsa -b 4096 -C "your_email@example.com"</tspan>
</text>
</g>
<g ed:width="233" ed:parentid="284" transform="matrix(1,0,0,1,431,263)" ed:height="22.4" id="300">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">3.确保SSH-agent(SSH代理)在运行</tspan>
</text>
</g>
<g ed:width="147.2" ed:parentid="300" transform="matrix(1,0,0,1,691,263)" ed:height="23.4" id="302">
<path d="M0,0L147.2,0L147.2,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">eval $(ssh-agent -s)</tspan>
</text>
</g>
<g ed:width="196.2" ed:parentid="284" transform="matrix(1,0,0,1,431,293)" ed:height="22.4" id="308">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">4.将SSH钥添加到SSH-agent</tspan>
</text>
</g>
<g ed:width="158.4" ed:parentid="308" transform="matrix(1,0,0,1,654,293)" ed:height="23.4" id="312">
<path d="M0,0L158.4,0L158.4,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">ssh-add ~/.ssh/id_rsa</tspan>
</text>
</g>
<g ed:width="113.8" ed:parentid="284" transform="matrix(1,0,0,1,431,337)" ed:height="22.4" id="314">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">5.测试SSH连接</tspan>
</text>
</g>
<g ed:width="168.8" ed:parentid="314" transform="matrix(1,0,0,1,572,336)" ed:height="23.4" id="316">
<path d="M0,0L168.8,0L168.8,23.4L0,23.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="17" x="9">ssh -T git@github.com</tspan>
</text>
</g>
<g ed:width="73.40000000000001" ed:parentid="316" transform="matrix(1,0,0,1,768,337)" ed:height="22.4" id="318">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">出现错误</tspan>
</text>
</g>
<g ed:width="507" ed:parentid="318" transform="matrix(1,0,0,1,868,339)" ed:height="19.2" id="320">
<text class="st30">
<tspan style="white-space:pre" y="15.7" x="9">ssh: connect to host github.com port 22: Connection timed out</tspan>
</text>
</g>
<g ed:width="261.4" ed:parentid="320" transform="matrix(1,0,0,1,1402,323)" ed:height="22.4" id="324">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">尝试 ping github.com 是否能正常连接 </tspan>
</text>
</g>
<g ed:width="387.2" ed:parentid="320" transform="matrix(1,0,0,1,1402,351)" ed:height="22.4" id="330">
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">不能正常连接, ping查询, 将本机能连接的ip添加到HOSTS</tspan>
</text>
<g ed:hyperlink="[
 {
 "desc": "Ping查询",
 "link": "https://tools.ipip.net/ping.php"
 }
]
">
<use transform="translate(362,4)" xlink:href="#hyperlink"/>
</g>
</g>
<symbol id="hyperlink">
<image height="16" width="16" xlink:href="data:image/png;base64,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"/>
</symbol>
<g ed:width="65.40000000000001" ed:parentid="189" transform="matrix(1,0,0,1,357,1232)" ed:height="22.4" id="337">
<path d="M0,0L65.4,0L65.4,22.4L0,22.4L0,0z" fill="#696969"/>
<text class="st27">
<tspan style="white-space:pre" y="16.5" x="9">git pull</tspan>
</text>
</g>
<g ed:width="337.8" ed:parentid="343" transform="matrix(1,0,0,1,449,1230)" ed:height="26.4" ed:layout="rightmap" id="344">
<text class="st27">
<tspan style="white-space:pre" y="18.5" x="6">从远程库拉去代码到当前分支和他的upstream merge</tspan>
</text>
</g>
<g ed:width="149.4" ed:parentid="181" transform="matrix(1,0,0,1,461,611)" ed:height="23.2" id="339">
<text class="st28">
<tspan style="white-space:pre" y="16.5" x="9">-soft</tspan>
<tspan style="white-space:pre" class="st29"> :取消了commit</tspan>
</text>
</g>
<g ed:width="346.2" ed:parentid="181" transform="matrix(1,0,0,1,461,640)" ed:height="23.2" id="341">
<text class="st28">
<tspan style="white-space:pre" y="16.5" x="9">-hard</tspan>
<tspan style="white-space:pre" class="st29"> :取消了commit ,取消了add,取消源文件修改</tspan>
</text>
</g>
<g ed:width="303" ed:parentid="181" transform="matrix(1,0,0,1,461,581)" ed:height="23.2" id="345">
<text class="st28">
<tspan style="white-space:pre" y="16.5" x="9">-mixed</tspan>
<tspan style="white-space:pre" class="st29">(默认) :取消了commit ,取消了add</tspan>
</text>
</g>
<symbol id="plus">
<path d="M11,6C11,8.8,8.8,11,6,11C3.2,11,1,8.8,1,6C1,3.2,3.2,1,6,1C8.8,1,11,3.2,11,6z" fill="url(#lg9)"/>
<path d="M11,6C11,8.8,8.8,11,6,11C3.2,11,1,8.8,1,6C1,3.2,3.2,1,6,1C8.8,1,11,3.2,11,6zM3,6L9,6M6,3L6,9" fill="none" stroke="#46a000" stroke-width="0.7"/>
</symbol>
<symbol id="minus">
<path d="M11,6C11,8.8,8.8,11,6,11C3.2,11,1,8.8,1,6C1,3.2,3.2,1,6,1C8.8,1,11,3.2,11,6z" fill="url(#lg9)"/>
<path d="M11,6C11,8.8,8.8,11,6,11C3.2,11,1,8.8,1,6C1,3.2,3.2,1,6,1C8.8,1,11,3.2,11,6zM3,6L9,6" fill="none" stroke="#46a000" stroke-width="0.7"/>
</symbol>
<g ed:togtopicid="101" transform="translate(144,651)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="102" transform="translate(315,64)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="127" transform="translate(331,1024)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="131" transform="translate(460,966)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="135" transform="translate(506,995)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="139" transform="translate(506,1024)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="143" transform="translate(526,1053)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="147" transform="translate(511,1082)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="151" transform="translate(331,661)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="155" transform="translate(477,412)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="163" transform="translate(431,441)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="167" transform="translate(468,470)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="171" transform="translate(456,499)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="177" transform="translate(438,528)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="181" transform="translate(435,601)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="185" transform="translate(456,675)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="189" transform="translate(331,1205)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="191" transform="translate(451,704)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="195" transform="translate(438,733)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="199" transform="translate(504,762)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="203" transform="translate(507,791)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="207" transform="translate(432,820)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="211" transform="translate(462,849)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="217" transform="translate(420,878)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="284" transform="translate(405,255)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="295" transform="translate(743,182)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="296" transform="translate(519,239)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="300" transform="translate(665,268)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="308" transform="translate(628,298)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="314" transform="translate(546,342)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="316" transform="translate(742,342)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="318" transform="translate(842,342)">
<use xlink:href="#minus"/>
</g>
<g ed:togtopicid="320" transform="translate(1376,342)">
<use xlink:href="#minus"/>
</g>
</svg>
</div>
<div id="copyright">Created With <a href="https://www.edrawsoft.com/" target="_blank" title="edrawsoft">MindMaster</a></div>
</div>
</div>
<script>eval(atob('dmFyIG11YT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDsNCnZhciB1YT0obXVhLmluZGV4T2YoJ3J2OjExJykrbXVhLmluZGV4T2YoJ01TSUUnKSk+PTA7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnLWNvbnRhaW5lcicpLm9uY29udGV4dG1lbnUgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KfQ0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N2Zy1jb250YWluZXInKS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgIGlmKGV2ZW50LndoaWNoID09Myl7DQogICAgICAgIHRoaXMuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOw0KICAgICAgICB0aGlzLm9ubW91c2Vtb3ZlID0gZnVuY3Rpb24gKGV2KSB7DQogICAgICAgICAgICB0aGlzLnNjcm9sbEJ5KC0oZXYubW92ZW1lbnRYKSwgMCk7DQogICAgICAgICAgICB3aW5kb3cuc2Nyb2xsQnkoMCwtKGV2Lm1vdmVtZW50WSkpDQogICAgICAgIH0NCiAgICAgICAgdGhpcy5vbm1vdXNldXAgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLnN0eWxlLmN1cnNvciA9ICBudWxsOw0KICAgICAgICAgICAgdGhpcy5vbm1vdXNldXAgPSBudWxsOw0KICAgICAgICAgICAgdGhpcy5vbm1vdXNlbW92ZSA9IG51bGw7DQogICAgICAgIH0NCiAgICB9DQp9DQpOdW1iZXIucHJvdG90eXBlLnRvc3VpdHN2Zz1mdW5jdGlvbiAoKSB7DQogICAgdmFyIG51bT10aGlzLnZhbHVlT2YoKTsNCiAgICBpZihudW0lMT09PTApew0KICAgICAgICByZXR1cm4gbnVtKzAuNQ0KICAgIH1lbHNlIHJldHVybiBudW07DQp9Ow0KTnVtYmVyLnByb3RvdHlwZS5wbHVzej1mdW5jdGlvbigpIHsNCiAgICB2YXIgbnVtPXRoaXMudmFsdWVPZigpOw0KICAgIHJldHVybiBudW08MTA/JzAnK251bTpudW07DQp9Ow0KZnVuY3Rpb24gcGFyc2VEYXRlKG51bSkgew0KICAgIHZhciBkYXRlID0gbmV3IERhdGUobnVtKTsNCiAgICB2YXIgWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJzsNCiAgICB2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkrMSkucGx1c3ooKSArICctJzsNCiAgICB2YXIgRCA9IGRhdGUuZ2V0RGF0ZSgpLnBsdXN6KCkgKyAnICc7DQogICAgdmFyIGggPSBkYXRlLmdldEhvdXJzKCkucGx1c3ooKSArICc6JzsNCiAgICB2YXIgbW0gPSBkYXRlLmdldE1pbnV0ZXMoKS5wbHVzeigpICsgJzonOw0KICAgIHZhciBzID0gZGF0ZS5nZXRTZWNvbmRzKCkucGx1c3ooKTsNCiAgICByZXR1cm4gWStNK0QraCttbStzOw0KfQ0KLy8tLXByZWRlZmluZWQNCi8vY29tbWVudC0tDQp2YXIgY29tbWVudHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZz5nW2VkXFw6Y29tbWVudF0nKTsNCmZ1bmN0aW9uIGdldGN3aChwb3B1cCkgew0KICAgIGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N2ZycpWzBdLmFwcGVuZENoaWxkKHBvcHVwKTsNCiAgICB2YXIgdz1wb3B1cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsNCiAgICB2YXIgaD1wb3B1cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7DQogICAgcmV0dXJuIFt3LGhdDQp9DQpmb3IodmFyIGk9MDtpPGNvbW1lbnRzLmxlbmd0aDtpKyspew0KICAgIHZhciBwb3B1cD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywnZycpOw0KICAgIHZhciBwb3B1cFI9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgdmFyIGhvdmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgdmFyIG9saW5lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgaG92ZXIuc2V0QXR0cmlidXRlKCdmaWxsJywnI2NkY2RmZicpOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgneCcsJzAnKTsNCiAgICBob3Zlci5zZXRBdHRyaWJ1dGUoJ3knLCcwJyk7DQogICAgaG92ZXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCcxNicpOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCcxNicpOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywnMC42Jyk7DQogICAgaG92ZXIuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLGNvbW1lbnRzW2ldLnF1ZXJ5U2VsZWN0b3IoJ3VzZScpLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykpOw0KICAgIGhvdmVyLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgIGNvbW1lbnRzW2ldLmFwcGVuZENoaWxkKGhvdmVyKTsNCiAgICB2YXIgYT1KU09OLnBhcnNlKGNvbW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgnZWQ6Y29tbWVudCcpKTsNCiAgICB2YXIgaGVpZ2h0PTA7DQogICAgdmFyIGNhcnI9W107DQogICAgZm9yKHZhciBqPTA7ajxhLmxlbmd0aDtqKyspew0KICAgICAgICB2YXIgc3RhbXA9TnVtYmVyKGFbal0uRGF0ZSkqMTAwMDsNCiAgICAgICAgdmFyIHRpbWU9cGFyc2VEYXRlKHN0YW1wKTsNCiAgICAgICAgdmFyIG5hbWU9YVtqXS5OYW1lOw0KICAgICAgICB2YXIgbWVzc2FnZT1hW2pdLk1lc3NhZ2U7DQogICAgICAgIHZhciBtZXNzYWdlQXJyPW1lc3NhZ2Uuc3BsaXQoL1xuLyk7DQogICAgICAgIHZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdnJyk7DQogICAgICAgIHZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIHZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIHZhciBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIG4uc2V0QXR0cmlidXRlKCd4Jyw1KTsNCiAgICAgICAgbi5zZXRBdHRyaWJ1dGUoJ3knLDEyKTsNCiAgICAgICAgbi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCcjMDA2ZWZmJyk7DQogICAgICAgIG4udGV4dENvbnRlbnQ9bmFtZSsnOiAnOw0KICAgICAgICBuLnNldEF0dHJpYnV0ZSgnZm9udC1zaXplJywnMTInKTsNCiAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3gnLDIwMCk7DQogICAgICAgIHQuc2V0QXR0cmlidXRlKCd5JywxMik7DQogICAgICAgIHQuc2V0QXR0cmlidXRlKCdmaWxsJywnIzk2OTY5NicpOw0KICAgICAgICB0LnRleHRDb250ZW50PXRpbWU7DQogICAgICAgIHQuc2V0QXR0cmlidXRlKCdmb250LXNpemUnLCcxMCcpOw0KICAgICAgICBtLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywndHJhbnNsYXRlKDIwLDI3KScpOw0KICAgICAgICBtLnNldEF0dHJpYnV0ZSgnZm9udC1zaXplJywnMTInKTsNCiAgICAgICAgZm9yKHZhciBrPTA7azxtZXNzYWdlQXJyLmxlbmd0aDtrKyspew0KICAgICAgICAgICAgdmFyIHRzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0c3BhbicpOw0KICAgICAgICAgICAgdHMuc2V0QXR0cmlidXRlKCd4JywnMCcpOw0KICAgICAgICAgICAgdHMuc2V0QXR0cmlidXRlKCd5JyxrKjE2KTsNCiAgICAgICAgICAgIHRzLnRleHRDb250ZW50PW1lc3NhZ2VBcnJba107DQogICAgICAgICAgICBtLmFwcGVuZENoaWxkKHRzKTsNCiAgICAgICAgfQ0KICAgICAgICBvLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywndHJhbnNsYXRlKDAsJytoZWlnaHQrJyknKTsNCiAgICAgICAgby5hcHBlbmRDaGlsZChuKTsNCiAgICAgICAgby5hcHBlbmRDaGlsZCh0KTsNCiAgICAgICAgby5hcHBlbmRDaGlsZChtKTsNCiAgICAgICAgY2Fyci5wdXNoKG8pOw0KICAgICAgICBwb3B1cC5hcHBlbmRDaGlsZChvKTsNCiAgICAgICAgaGVpZ2h0PShtZXNzYWdlQXJyLmxlbmd0aCsxKSoxNitoZWlnaHQ7DQogICAgfQ0KICAgIHZhciB3YXJyPWdldGN3aChwb3B1cCk7DQogICAgb2xpbmUuc2V0QXR0cmlidXRlKCd4JywnMCcpOw0KICAgIG9saW5lLnNldEF0dHJpYnV0ZSgneScsJzAnKTsNCiAgICB2YXIgb3c9d2FyclswXSsxMC41Ow0KICAgIHZhciBvaD13YXJyWzFdKzM7DQogICAgb2xpbmUuc2V0QXR0cmlidXRlKCd3aWR0aCcsb3cpOw0KICAgIG9saW5lLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxvaCk7DQogICAgb2xpbmUuc2V0QXR0cmlidXRlKCdmaWxsJywnd2hpdGUnKTsNCiAgICBvbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsJyM2NTY1NjUnKTsNCiAgICBwb3B1cC5hcHBlbmRDaGlsZChvbGluZSk7DQogICAgdmFyIGw9Y2Fyci5sZW5ndGg7DQogICAgd2hpbGUobC0tKXsNCiAgICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoY2FycltsXSk7DQogICAgfQ0KICAgIHBvcHVwLm9ubW91c2VvdmVyPWZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5PSdibG9jayc7DQogICAgfTsNCiAgICBwb3B1cC5vbm1vdXNlb3V0PWZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgIH07DQogICAgdmFyIGNzPWNvbW1lbnRzW2ldLnF1ZXJ5U2VsZWN0b3IoJ3VzZScpLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykubWF0Y2goL1woKFxTKnxcUypcc1xTKilcKS8pWzFdLnNwbGl0KC8gfCwvKTsNCiAgICB2YXIgcHM9Y29tbWVudHNbaV0ucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpOw0KICAgIGlmKHBzLnN1YnN0cigwLDIpID09ICd0cicpew0KICAgICAgICB2YXIgcHBzID0gcHMubWF0Y2goL1woKFxTKnxcUypcc1xTKilcKS8pWzFdLnNwbGl0KC8gfCwvKTsNCiAgICAgICAgdmFyIHg9cGFyc2VGbG9hdChjc1swXSkrcGFyc2VGbG9hdChwcHNbMF0pOw0KICAgICAgICB2YXIgeT1wYXJzZUZsb2F0KHBwc1sxXSk7DQogICAgICAgIHg9eC50b3N1aXRzdmcoKTsNCiAgICAgICAgeT15LnRvc3VpdHN2ZygpOw0KICAgICAgICB2YXIgdHJzdHIgPSAndHJhbnNsYXRlKCcreCsnLCcreSsnKSc7DQogICAgfQ0KICAgIGVsc2UgaWYocHMuc3Vic3RyKDAsMikgPT0gJ21hJyl7DQogICAgICAgIHZhciBwcHMgPSBwcy5tYXRjaCgvKFwtP1xkKyhcLlxkKyk/KVtcLCBdKFwtP1xkKyhcLlxkKyk/KVtcLCBdKFwtP1xkKyhcLlxkKyk/KVtcLCBdKFwtP1xkKyhcLlxkKyk/KVtcLCBdKFwtP1xkKyhcLlxkKyk/KVtcLCBdKFwtP1xkKyhcLlxkKyk/KVwpJC8pOw0KICAgICAgICB2YXIgbWFBcnIgPSBbcGFyc2VGbG9hdChwcHNbMV0pLHBhcnNlRmxvYXQocHBzWzNdKSxwYXJzZUZsb2F0KHBwc1s1XSkscGFyc2VGbG9hdChwcHNbN10pLHBhcnNlRmxvYXQocHBzWzldKSxwYXJzZUZsb2F0KHBwc1sxMV0pXTsNCiAgICAgICAgaWYobWFBcnJbMV0gPT0gMCl7DQogICAgICAgICAgICB2YXIgeCA9IHBhcnNlRmxvYXQoY3NbMF0pOw0KICAgICAgICAgICAgdmFyIHk9IHBhcnNlRmxvYXQoY3NbMV0pKzE2Ow0KICAgICAgICAgICAgdmFyIHgxID0geCAqIG1hQXJyWzBdICsgeSAqIG1hQXJyWzJdICsgbWFBcnJbNF07DQogICAgICAgICAgICB2YXIgeTEgPSB4ICogbWFBcnJbMV0gKyB5ICogbWFBcnJbM10gKyBtYUFycls1XTsNCiAgICAgICAgICAgIHgxPXgxLnRvc3VpdHN2ZygpOw0KICAgICAgICAgICAgeTE9eTEudG9zdWl0c3ZnKCk7DQogICAgICAgICAgICB2YXIgdHJzdHIgPSAgJ3RyYW5zbGF0ZSgnK3gxKycsJyt5MSsnKSc7DQogICAgICAgIH1lbHNlew0KICAgICAgICAgICAgdmFyIHggPSBwYXJzZUZsb2F0KGNzWzBdKSsxNjsNCiAgICAgICAgICAgIHZhciB5ID0gcGFyc2VGbG9hdChjc1sxXSkrMTY7DQogICAgICAgICAgICB2YXIgeDEgPSB4ICogbWFBcnJbMF0gKyB5ICogbWFBcnJbMl0gKyBtYUFycls0XTsNCiAgICAgICAgICAgIHZhciB5MSA9IHggKiBtYUFyclsxXSArIHkgKiBtYUFyclszXSArIG1hQXJyWzVdOw0KICAgICAgICAgICAgeCA9IHBhcnNlRmxvYXQoY3NbMF0pKzE2Ow0KICAgICAgICAgICAgeSA9IHBhcnNlRmxvYXQoY3NbMV0pOw0KICAgICAgICAgICAgdmFyIHgyID0geCAqIG1hQXJyWzBdICsgeSAqIG1hQXJyWzJdICsgbWFBcnJbNF07DQogICAgICAgICAgICB2YXIgeTIgPSB4ICogbWFBcnJbMV0gKyB5ICogbWFBcnJbM10gKyBtYUFycls1XTsNCiAgICAgICAgICAgIHZhciBmeCA9IHgxPHgyP3gxLnRvc3VpdHN2ZygpOiB4Mi50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgIHZhciBmeSA9IHkxPnkyP3kxLnRvc3VpdHN2ZygpOiB5Mi50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgIHZhciBvZmZ5ID0gTWF0aC5hYnMoeTEteTIpOw0KICAgICAgICAgICAgdmFyIHRyc3RyID0gICd0cmFuc2xhdGUoJytmeCsnLCcrZnkrJyknOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxvZmZ5LnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCcxNicpOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgneScsKC1vZmZ5KS50b1N0cmluZygpKTsNCiAgICAgICAgICAgIHBvcHVwUi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCd0cmFuc3BhcmVudCcpOw0KICAgICAgICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQocG9wdXBSKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBwb3B1cC5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsdHJzdHIpOw0KICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgnY29tbWVudCcsJycpOw0KICAgIHBvcHVwLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgnZWQ6Y29tbWVudGlkJyxjb21tZW50c1tpXS5wYXJlbnROb2RlLmlkKTsNCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3ZnLWNvbnRhaW5lciA+IHN2ZycpLmFwcGVuZENoaWxkKHBvcHVwKTsNCiAgICBjb21tZW50c1tpXS5vbm1vdXNlb3Zlcj1mdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBjb21tZW50aWQ9dGhpcy5wYXJlbnROb2RlLmlkOw0KICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3JlY3QnKS5zdHlsZS5kaXNwbGF5PSdibG9jayc7DQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImdbZWRcXDpjb21tZW50aWQ9JyIrY29tbWVudGlkKyInXVtjb21tZW50XSIpLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzsNCiAgICB9Ow0KICAgIGNvbW1lbnRzW2ldLm9ubW91c2VvdXQ9ZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgY29tbWVudGlkPXRoaXMucGFyZW50Tm9kZS5pZDsNCi8vICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7DQogICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcigncmVjdCcpLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJnW2VkXFw6Y29tbWVudGlkPSciK2NvbW1lbnRpZCsiJ11bY29tbWVudF0iKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICB9DQp9DQovLy0tY29tbWVudA0KLy9ub3RlLS0NCmlmKCF1YSl7DQogICAgdmFyIG5vdGVzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2c+Z1tlZFxcOm5vdGVdJyk7DQogICAgZnVuY3Rpb24gZ2V0d2gocyxwKSB7DQogICAgICAgIHZhciBtYWlucD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgbWFpbnAuc3R5bGUuY3NzVGV4dD1zOw0KICAgICAgICBtYWlucC5zdHlsZS5kaXNwbGF5PSdpbmxpbmUtYmxvY2snOw0KCQltYWlucC5zdHlsZS5tYXhXaWR0aCA9ICc0MDBweCc7DQoJCW1haW5wLnN0eWxlLndvcmRCcmVhayA9ICdicmVhay1hbGwnOw0KICAgICAgICBtYWlucC5pbm5lckhUTUw9cDsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtYWlucCk7DQogICAgICAgIHZhciB3PW1haW5wLmNsaWVudFdpZHRoOw0KICAgICAgICB2YXIgaD1tYWlucC5jbGllbnRIZWlnaHQ7DQogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFpbnApOw0KICAgICAgICByZXR1cm4gW3csaF0NCiAgICB9DQogICAgZm9yKHZhciBpPTA7aTxub3Rlcy5sZW5ndGg7aSsrKXsNCiAgICAgICAgdmFyIGE9bm90ZXNbaV0uZ2V0QXR0cmlidXRlKCdlZDpub3RlJyk7DQoJCXZhciBub3RlTG9jayA9IG5vdGVzW2ldLmdldEF0dHJpYnV0ZSgnZWQ6bm90ZWxvY2snKTsNCiAgICAgICAgaWYobm90ZUxvY2sgPT0gJ3RydWUnKXsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICAgIHZhciBtYWlucD1hLm1hdGNoKC88Ym9keVtePl0qPiguKik8XC9ib2R5Pi8pWzFdOw0KICAgICAgICB2YXIgbWFpbnM9YS5tYXRjaCgvc3R5bGU9IiguKj8pIi8pWzFdOw0KICAgICAgICB2YXIgb3V0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdnJyk7DQogICAgICAgIHZhciBvbGluZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywncmVjdCcpOw0KICAgICAgICB2YXIgcG9wdXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsJ2ZvcmVpZ25PYmplY3QnKTsNCiAgICAgICAgdmFyIHBvcHVwUj0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsJ3JlY3QnKTsNCiAgICAgICAgdmFyIGhvdmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnZmlsbCcsJyNjZGNkZmYnKTsNCiAgICAgICAgaG92ZXIuc2V0QXR0cmlidXRlKCd4JywnMCcpOw0KICAgICAgICBob3Zlci5zZXRBdHRyaWJ1dGUoJ3knLCcwJyk7DQogICAgICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywnMTYnKTsNCiAgICAgICAgaG92ZXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsJzE2Jyk7DQogICAgICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywnMC42Jyk7DQogICAgICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyxub3Rlc1tpXS5xdWVyeVNlbGVjdG9yKCd1c2UnKS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpKTsNCiAgICAgICAgaG92ZXIuc3R5bGUuZGlzcGxheT0nbm9uZSc7DQogICAgICAgIG5vdGVzW2ldLmFwcGVuZENoaWxkKGhvdmVyKTsNCiAgICAgICAgcG9wdXAuc3R5bGUuY3NzVGV4dD1tYWluczsNCiAgICAgICAgcG9wdXAuaW5uZXJIVE1MPW1haW5wOw0KICAgICAgICB2YXIgd2g9Z2V0d2gobWFpbnMsbWFpbnApOw0KICAgICAgICBwb3B1cC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3aFswXSk7DQogICAgICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx3aFsxXSk7DQogICAgICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywndHJhbnNsYXRlKDgsNCknKTsNCgkJcG9wdXAuc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLWFsbCc7DQogICAgICAgIHBvcHVwLnN0eWxlLnRleHRBbGlnbj0nbGVmdCc7DQogICAgICAgIG9saW5lLnNldEF0dHJpYnV0ZSgneCcsJzAnKTsNCiAgICAgICAgb2xpbmUuc2V0QXR0cmlidXRlKCd5JywnMCcpOw0KICAgICAgICBvbGluZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3aFswXSsxNik7DQogICAgICAgIG9saW5lLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx3aFsxXSs4KTsNCiAgICAgICAgb2xpbmUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCcjYTI3YTAwJyk7DQogICAgICAgIG9saW5lLnNldEF0dHJpYnV0ZSgnZmlsbCcsJyNmZmU3OWQnKTsNCiAgICAgICAgb3V0LmFwcGVuZENoaWxkKG9saW5lKTsNCiAgICAgICAgb3V0LmFwcGVuZENoaWxkKHBvcHVwKTsNCiAgICAgICAgb3V0LnNldEF0dHJpYnV0ZSgnbm90ZScsJycpOw0KICAgICAgICBvdXQuc3R5bGUuZGlzcGxheT0nbm9uZSc7DQogICAgICAgIG91dC5zZXRBdHRyaWJ1dGUoJ2VkOm5vdGVpZCcsbm90ZXNbaV0ucGFyZW50Tm9kZS5pZCk7DQogICAgICAgIG91dC5vbm1vdXNlb3Zlcj1mdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzsNCiAgICAgICAgfTsNCiAgICAgICAgb3V0Lm9ubW91c2VvdXQ9ZnVuY3Rpb24gKCkgew0KLy8gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24gPyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlUmFuZ2Uod2luZG93LmdldFNlbGVjdGlvbigpLnJlKTpkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTsNCg0KICAgICAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICAgICAgfTsNCiAgICAgICAgdmFyIGNzPW5vdGVzW2ldLnF1ZXJ5U2VsZWN0b3IoJ3VzZScpLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykubWF0Y2goL1woKFxTKnxcUypcc1xTKilcKS8pWzFdLnNwbGl0KC8gfCwvKTsNCiAgICAgICAgdmFyIHBzPW5vdGVzW2ldLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nKTsNCiAgICAgICAgaWYocHMuc3Vic3RyKDAsMikgPT0gJ3RyJyl7DQogICAgICAgICAgICB2YXIgcHBzID0gcHMubWF0Y2goL1woKFxTKnxcUypcc1xTKilcKS8pWzFdLnNwbGl0KC8gfCwvKTsNCiAgICAgICAgICAgIHZhciB4PXBhcnNlRmxvYXQoY3NbMF0pK3BhcnNlRmxvYXQocHBzWzBdKTsNCiAgICAgICAgICAgIHZhciB5PXBhcnNlRmxvYXQocHBzWzFdKTsNCiAgICAgICAgICAgIHg9eC50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgIHk9eS50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgIHZhciB0cnN0ciA9ICd0cmFuc2xhdGUoJyt4KycsJyt5KycpJzsNCiAgICAgICAgfWVsc2UgaWYocHMuc3Vic3RyKDAsMikgPT0gJ21hJyl7DQogICAgICAgICAgICB2YXIgcHBzID0gcHMubWF0Y2goLyhcLT9cZCsoXC5cZCspPylbXCwgXShcLT9cZCsoXC5cZCspPylbXCwgXShcLT9cZCsoXC5cZCspPylbXCwgXShcLT9cZCsoXC5cZCspPylbXCwgXShcLT9cZCsoXC5cZCspPylbXCwgXShcLT9cZCsoXC5cZCspPylcKSQvKTsNCiAgICAgICAgICAgIHZhciBtYUFyciA9IFtwYXJzZUZsb2F0KHBwc1sxXSkscGFyc2VGbG9hdChwcHNbM10pLHBhcnNlRmxvYXQocHBzWzVdKSxwYXJzZUZsb2F0KHBwc1s3XSkscGFyc2VGbG9hdChwcHNbOV0pLHBhcnNlRmxvYXQocHBzWzExXSldOw0KICAgICAgICAgICAgaWYobWFBcnJbMV0gPT0gMCl7DQogICAgICAgICAgICAgICAgdmFyIHggPSBwYXJzZUZsb2F0KGNzWzBdKTsNCiAgICAgICAgICAgICAgICB2YXIgeSA9IHBhcnNlRmxvYXQoY3NbMV0pKzE2Ow0KICAgICAgICAgICAgICAgIHZhciB4MSA9IHggKiBtYUFyclswXSArIHkgKiBtYUFyclsyXSArIG1hQXJyWzRdOw0KICAgICAgICAgICAgICAgIHZhciB5MSA9IHggKiBtYUFyclsxXSArIHkgKiBtYUFyclszXSArIG1hQXJyWzVdOw0KICAgICAgICAgICAgICAgIHgxPXgxLnRvc3VpdHN2ZygpOw0KICAgICAgICAgICAgICAgIHkxPXkxLnRvc3VpdHN2ZygpOw0KICAgICAgICAgICAgICAgIHZhciB0cnN0ciA9ICAndHJhbnNsYXRlKCcreDErJywnK3kxKycpJzsNCiAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgIHZhciB4ID0gcGFyc2VGbG9hdChjc1swXSkrMTY7DQogICAgICAgICAgICAgICAgdmFyIHkgPSBwYXJzZUZsb2F0KGNzWzFdKSsxNjsNCiAgICAgICAgICAgICAgICB2YXIgeDEgPSB4ICogbWFBcnJbMF0gKyB5ICogbWFBcnJbMl0gKyBtYUFycls0XTsNCiAgICAgICAgICAgICAgICB2YXIgeTEgPSB4ICogbWFBcnJbMV0gKyB5ICogbWFBcnJbM10gKyBtYUFycls1XTsNCiAgICAgICAgICAgICAgICB4ID0gcGFyc2VGbG9hdChjc1swXSkrMTY7DQogICAgICAgICAgICAgICAgeSA9IHBhcnNlRmxvYXQoY3NbMV0pOw0KICAgICAgICAgICAgICAgIHZhciB4MiA9IHggKiBtYUFyclswXSArIHkgKiBtYUFyclsyXSArIG1hQXJyWzRdOw0KICAgICAgICAgICAgICAgIHZhciB5MiA9IHggKiBtYUFyclsxXSArIHkgKiBtYUFyclszXSArIG1hQXJyWzVdOw0KICAgICAgICAgICAgICAgIHZhciBmeCA9IHgxPHgyP3gxLnRvc3VpdHN2ZygpOiB4Mi50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgICAgICB2YXIgZnkgPSB5MT55Mj95MS50b3N1aXRzdmcoKTogeTIudG9zdWl0c3ZnKCk7DQoJCQkJdmFyIG9mZnkgPSBNYXRoLmFicyh5MS15Mik7CQkJCQkJCQkJCSAgDQogICAgICAgICAgICAgICAgdmFyIHRyc3RyID0gICd0cmFuc2xhdGUoJytmeCsnLCcrZnkrJyknOw0KICAgICAgICAgICAgICAgIHBvcHVwUi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsb2ZmeS50b1N0cmluZygpKTsNCiAgICAgICAgICAgICAgICBwb3B1cFIuc2V0QXR0cmlidXRlKCd3aWR0aCcsJzE2Jyk7DQogICAgICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgneScsKC1vZmZ5KS50b1N0cmluZygpKTsNCiAgICAgICAgICAgICAgICBwb3B1cFIuc2V0QXR0cmlidXRlKCdmaWxsJywndHJhbnNwYXJlbnQnKTsNCiAgICAgICAgICAgICAgICBwb3B1cC5hcHBlbmRDaGlsZChwb3B1cFIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIG91dC5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsdHJzdHIpOw0KICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3ZnLWNvbnRhaW5lciA+IHN2ZycpLmFwcGVuZENoaWxkKG91dCk7DQogICAgICAgIG5vdGVzW2ldLm9ubW91c2VvdmVyPWZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBub3RlaWQ9dGhpcy5wYXJlbnROb2RlLmlkOw0KICAgICAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKCdyZWN0Jykuc3R5bGUuZGlzcGxheT0nYmxvY2snOw0KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZ1tlZFxcOm5vdGVpZD0nIitub3RlaWQrIiddW25vdGVdIikuc3R5bGUuZGlzcGxheT0nYmxvY2snOw0KICAgICAgICB9Ow0KICAgICAgICBub3Rlc1tpXS5vbm1vdXNlb3V0PWZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBub3RlaWQ9dGhpcy5wYXJlbnROb2RlLmlkOw0KLy8gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsNCiAgICAgICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcigncmVjdCcpLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZ1tlZFxcOm5vdGVpZD0nIitub3RlaWQrIiddW25vdGVdIikuc3R5bGUuZGlzcGxheT0nbm9uZSc7DQogICAgICAgIH0NCiAgICB9DQp9ZWxzZXsNCiAgICBjb25zb2xlLmxvZygn5oqx5q2J77yMSUXmtY/op4jlmajkuI3mlK/mjIFub3Rl6Kej5p6Q77yM6K+35L2/55So5YW25LuW5YaF5qC45rWP6KeI5Zmo44CC6LCi6LCi77yBJykNCn0NCi8vLS1ub3RlDQovL2h5cGVybGluay0tDQp2YXIgbGlua3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZz5nW2VkXFw6aHlwZXJsaW5rXScpOw0KZnVuY3Rpb24gZ2V0bWF4bGVuKGFycixicnIpIHsNCiAgICB2YXIgbD0wOw0KICAgIHZhciBsbD0wOw0KICAgIGZvcih2YXIgaj0wO2o8YXJyLmxlbmd0aDtqKyspew0KICAgICAgICB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywndGV4dCcpOw0KICAgICAgICBpZighaXNOYU4obGlua2FycltqXSkpew0KICAgICAgICAgICAgZS50ZXh0Q29udGVudD0nUGFnZS0nK2FycltqXTsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgICBlLnRleHRDb250ZW50PWFycltqXTsNCiAgICAgICAgfQ0KICAgICAgICBlLnN0eWxlLmZvbnRTaXplPScxMnB4JzsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3ZnJylbMF0uYXBwZW5kQ2hpbGQoZSk7DQogICAgICAgIHZhciBldz1lLmdldEJCb3goKS53aWR0aDsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3ZnJylbMF0ucmVtb3ZlQ2hpbGQoZSk7DQogICAgICAgIHZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIGgudGV4dENvbnRlbnQ9YnJyW2pdOw0KICAgICAgICBoLnN0eWxlLmZvbnRTaXplPScxMnB4JzsNCiAgICAgICAgaC5zdHlsZS5mb250V2VpZ2h0PSdib2xkJzsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3ZnJylbMF0uYXBwZW5kQ2hpbGQoaCk7DQogICAgICAgIHZhciBodz1oLmdldEJCb3goKS53aWR0aDsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3ZnJylbMF0ucmVtb3ZlQ2hpbGQoaCk7DQogICAgICAgIGw9ZXc+aHc/ZXc6aHc7DQogICAgICAgIGxsPWw+bGw/bDpsbDsNCiAgICB9DQogICAgcmV0dXJuIGxsOw0KfQ0KZm9yKHZhciBpPTA7aTxsaW5rcy5sZW5ndGg7aSsrKXsNCiAgICB2YXIgcG9wdXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsJ2cnKTsNCiAgICB2YXIgcG9wdXBSPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywncmVjdCcpOw0KICAgIHZhciBob3Zlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywncmVjdCcpOw0KICAgIHZhciBkZXNjYXJyPVtdOw0KICAgIHZhciBsaW5rYXJyPVtdOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnZmlsbCcsJyNjZGNkZmYnKTsNCiAgICBob3Zlci5zZXRBdHRyaWJ1dGUoJ3gnLCcwJyk7DQogICAgaG92ZXIuc2V0QXR0cmlidXRlKCd5JywnMCcpOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywnMTYnKTsNCiAgICBob3Zlci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywnMTYnKTsNCiAgICBob3Zlci5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsJzAuNicpOw0KICAgIGhvdmVyLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyxsaW5rc1tpXS5xdWVyeVNlbGVjdG9yKCd1c2UnKS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpKTsNCiAgICBob3Zlci5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICBsaW5rc1tpXS5hcHBlbmRDaGlsZChob3Zlcik7DQogICAgLy8gY29uc29sZS5sb2cobGlua3NbaV0uZ2V0QXR0cmlidXRlKCdlZDpoeXBlcmxpbmsnKSk7DQogICAgdmFyIGE9SlNPTi5wYXJzZShsaW5rc1tpXS5nZXRBdHRyaWJ1dGUoJ2VkOmh5cGVybGluaycpKTsNCiAgICB2YXIgY3M9bGlua3NbaV0ucXVlcnlTZWxlY3RvcigndXNlJykuZ2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nKS5tYXRjaCgvXCgoXFMqfFxTKlxzXFMqKVwpLylbMV0uc3BsaXQoLyB8LC8pOw0KICAgIHZhciBwcz1saW5rc1tpXS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyk7DQogICAgaWYocHMuc3Vic3RyKDAsMikgPT0gJ3RyJyl7DQogICAgICAgIHZhciBwcHMgPSBwcy5tYXRjaCgvXCgoXFMqfFxTKlxzXFMqKVwpLylbMV0uc3BsaXQoLyB8LC8pOw0KICAgICAgICB2YXIgeD1wYXJzZUZsb2F0KGNzWzBdKStwYXJzZUZsb2F0KHBwc1swXSk7DQogICAgICAgIHZhciB5PXBhcnNlRmxvYXQocHBzWzFdKTsNCiAgICAgICAgeD14LnRvc3VpdHN2ZygpOw0KICAgICAgICB5PXkudG9zdWl0c3ZnKCk7DQogICAgICAgIHZhciB0cnN0ciA9ICd0cmFuc2xhdGUoJyt4KycsJyt5KycpJzsNCiAgICB9ZWxzZSBpZihwcy5zdWJzdHIoMCwyKSA9PSAnbWEnKXsNCiAgICAgICAgdmFyIHBwcyA9IHBzLm1hdGNoKC8oXC0/XGQrKFwuXGQrKT8pW1wsIF0oXC0/XGQrKFwuXGQrKT8pW1wsIF0oXC0/XGQrKFwuXGQrKT8pW1wsIF0oXC0/XGQrKFwuXGQrKT8pW1wsIF0oXC0/XGQrKFwuXGQrKT8pW1wsIF0oXC0/XGQrKFwuXGQrKT8pXCkkLyk7DQogICAgICAgIHZhciBtYUFyciA9IFtwYXJzZUZsb2F0KHBwc1sxXSkscGFyc2VGbG9hdChwcHNbM10pLHBhcnNlRmxvYXQocHBzWzVdKSxwYXJzZUZsb2F0KHBwc1s3XSkscGFyc2VGbG9hdChwcHNbOV0pLHBhcnNlRmxvYXQocHBzWzExXSldOw0KICAgICAgICBpZihtYUFyclsxXSA9PSAwKXsNCiAgICAgICAgICAgIHZhciB4ID0gcGFyc2VGbG9hdChjc1swXSk7DQogICAgICAgICAgICB2YXIgeSA9IHBhcnNlRmxvYXQoY3NbMV0pKzE2Ow0KICAgICAgICAgICAgdmFyIHgxID0geCAqIG1hQXJyWzBdICsgeSAqIG1hQXJyWzJdICsgbWFBcnJbNF07DQogICAgICAgICAgICB2YXIgeTEgPSB4ICogbWFBcnJbMV0gKyB5ICogbWFBcnJbM10gKyBtYUFycls1XTsNCiAgICAgICAgICAgIHgxPXgxLnRvc3VpdHN2ZygpOw0KICAgICAgICAgICAgeTE9eTEudG9zdWl0c3ZnKCk7DQogICAgICAgICAgICB2YXIgdHJzdHIgPSAgJ3RyYW5zbGF0ZSgnK3gxKycsJyt5MSsnKSc7DQogICAgICAgIH1lbHNlew0KICAgICAgICAgICAgdmFyIHggPSBwYXJzZUZsb2F0KGNzWzBdKSsxNjsNCiAgICAgICAgICAgIHZhciB5ID0gcGFyc2VGbG9hdChjc1sxXSkrMTY7DQogICAgICAgICAgICB2YXIgeDEgPSB4ICogbWFBcnJbMF0gKyB5ICogbWFBcnJbMl0gKyBtYUFycls0XTsNCiAgICAgICAgICAgIHZhciB5MSA9IHggKiBtYUFyclsxXSArIHkgKiBtYUFyclszXSArIG1hQXJyWzVdOw0KICAgICAgICAgICAgeCA9IHBhcnNlRmxvYXQoY3NbMF0pKzE2Ow0KICAgICAgICAgICAgeSA9IHBhcnNlRmxvYXQoY3NbMV0pOw0KICAgICAgICAgICAgdmFyIHgyID0geCAqIG1hQXJyWzBdICsgeSAqIG1hQXJyWzJdICsgbWFBcnJbNF07DQogICAgICAgICAgICB2YXIgeTIgPSB4ICogbWFBcnJbMV0gKyB5ICogbWFBcnJbM10gKyBtYUFycls1XTsNCiAgICAgICAgICAgIHZhciBmeCA9IHgxPHgyP3gxLnRvc3VpdHN2ZygpOiB4Mi50b3N1aXRzdmcoKTsNCiAgICAgICAgICAgIHZhciBmeSA9IHkxPnkyP3kxLnRvc3VpdHN2ZygpOiB5Mi50b3N1aXRzdmcoKTsNCgkJCXZhciBvZmZ5ID0gTWF0aC5hYnMoeTEteTIpOwkJCQkJCQkJCQkgIA0KICAgICAgICAgICAgdmFyIHRyc3RyID0gICd0cmFuc2xhdGUoJytmeCsnLCcrZnkrJyknOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxvZmZ5LnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCcxNicpOw0KICAgICAgICAgICAgcG9wdXBSLnNldEF0dHJpYnV0ZSgneScsKC1vZmZ5KS50b1N0cmluZygpKTsNCiAgICAgICAgICAgIHBvcHVwUi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCd0cmFuc3BhcmVudCcpOw0KICAgICAgICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQocG9wdXBSKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICB2YXIgYWw9YS5sZW5ndGg7DQogICAgZm9yKHZhciBqPTA7ajxhbDtqKyspew0KICAgICAgICBsaW5rYXJyLnB1c2goYVtqXS5saW5rKTsNCiAgICAgICAgZGVzY2Fyci5wdXNoKGFbal0uZGVzYyk7DQogICAgfQ0KICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyx0cnN0cik7DQogICAgdmFyIG1heD1nZXRtYXhsZW4obGlua2FycixkZXNjYXJyKTsNCiAgICBmb3IodmFyIGs9MDtrPGFsO2srKyl7DQogICAgICAgIHZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdhJyk7DQogICAgICAgIHZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgICAgIHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIHZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCd0ZXh0Jyk7DQogICAgICAgIGlmKGlzTmFOKGxpbmthcnJba10pKXsNCiAgICAgICAgICAgIGMuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInhsaW5rIiwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKTsNCiAgICAgICAgICAgIGMuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCAiaHJlZiIsIGxpbmthcnJba10pOw0KICAgICAgICAgICAgYy5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsJ19ibGFuaycpOw0KICAgICAgICAgICAgZS50ZXh0Q29udGVudD1saW5rYXJyW2tdOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgIGUudGV4dENvbnRlbnQ9J1BhZ2UtJytsaW5rYXJyW2tdOw0KICAgICAgICAgICAgYy5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAieGxpbmsiLCAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpOw0KICAgICAgICAgICAgYy5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsICJocmVmIiwgIiMiK2xpbmthcnJba10pOw0KICAgICAgICB9DQogICAgICAgIGQuc2V0QXR0cmlidXRlKCd3aWR0aCcsbWF4KzEwKTsNCiAgICAgICAgZC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsJzMzJyk7DQogICAgICAgIGQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCcjOTk5OTk5Jyk7DQogICAgICAgIGQuc2V0QXR0cmlidXRlKCdmaWxsJywnd2hpdGUnKTsNCiAgICAgICAgZC5zZXRBdHRyaWJ1dGUoJ3knLDMzKmspOw0KICAgICAgICBmLnRleHRDb250ZW50PWRlc2NhcnJba107DQogICAgICAgIGYuc3R5bGUuZm9udFNpemU9JzEycHgnOw0KICAgICAgICBmLnN0eWxlLmZvbnRXZWlnaHQ9J2JvbGQnOw0KICAgICAgICBmLnNldEF0dHJpYnV0ZSgneCcsNSk7DQogICAgICAgIGYuc2V0QXR0cmlidXRlKCd5JywzMyprKzEyKTsNCiAgICAgICAgZS5zdHlsZS5mb250U2l6ZT0nMTJweCc7DQogICAgICAgIGUuc2V0QXR0cmlidXRlKCd5JywzMyprKzI4KTsNCiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3gnLDUpOw0KICAgICAgICBjLmFwcGVuZENoaWxkKGQpOw0KICAgICAgICBjLmFwcGVuZENoaWxkKGYpOw0KICAgICAgICBjLmFwcGVuZENoaWxkKGUpOw0KICAgICAgICBjLm9ubW91c2VvdmVyPWZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcigncmVjdCcpLnN0eWxlLmZpbGw9JyNlMWUxZmYnDQogICAgICAgIH07DQogICAgICAgIGMub25tb3VzZW91dD1mdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3JlY3QnKS5zdHlsZS5maWxsPSd3aGl0ZScNCiAgICAgICAgfTsNCiAgICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYyk7DQogICAgfQ0KICAgIHBvcHVwLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgIHBvcHVwLnNldEF0dHJpYnV0ZSgnaHlwZXJsaW5rJywnJyk7DQogICAgcG9wdXAuc2V0QXR0cmlidXRlKCdlZDpsaW5raWQnLGxpbmtzW2ldLnBhcmVudE5vZGUuaWQpOw0KICAgIHBvcHVwLm9ubW91c2VvdmVyPWZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5PSdibG9jayc7DQogICAgfTsNCiAgICBwb3B1cC5vbmNsaWNrPWZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICB9Ow0KICAgIHBvcHVwLm9ubW91c2VvdXQ9ZnVuY3Rpb24gKCkgew0KICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KICAgIH07DQogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3N2Zy1jb250YWluZXIgPiBzdmcnKS5hcHBlbmRDaGlsZChwb3B1cCk7DQogICAgbGlua3NbaV0ub25tb3VzZW92ZXI9ZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgbGlua2lkPXRoaXMucGFyZW50Tm9kZS5pZDsNCiAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKCdyZWN0Jykuc3R5bGUuZGlzcGxheT0nYmxvY2snOw0KICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJnW2VkXFw6bGlua2lkPSciK2xpbmtpZCsiJ11baHlwZXJsaW5rXSIpLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzsNCiAgICB9DQogICAgbGlua3NbaV0ub25tb3VzZW91dD1mdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBsaW5raWQ9dGhpcy5wYXJlbnROb2RlLmlkOw0KICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3JlY3QnKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZ1tlZFxcOmxpbmtpZD0nIitsaW5raWQrIiddW2h5cGVybGlua10iKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCiAgICB9DQp9DQovLy0taHlwZXJsaW5rDQovL2luaXRpYWxpemUtLQ0KdmFyIHNoYXBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2dbZWRcXDp0b2d0b3BpY2lkXScpOw0KdmFyIG1JZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdnW2VkXFw6dG9waWN0eXBlXScpOw0KdmFyIGRhdGFUcmVlPXt9Ow0KdmFyIGV4dHJhUmVsYT17fTsNCnZhciBjaGVja0lEPScnOw0KZm9yKHZhciBpPTA7aTxtSWQubGVuZ3RoO2krKyl7DQogICAgdmFyIHR5cGU9bUlkW2ldLmdldEF0dHJpYnV0ZSgnZWQ6dG9waWN0eXBlJyk7DQogICAgdmFyIHNpZD1tSWRbaV0uaWQ7DQogICAgaWYodHlwZSE9PSdjYWxsb3V0Jyl7DQogICAgICAgIGluaXQoc2lkLGRhdGFUcmVlKQ0KICAgIH0NCn0NCmZ1bmN0aW9uIGluaXQoaWQsIG9iaikgew0KICAgIHZhciBjaGlsZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJnW2VkXFw6cGFyZW50aWQ9JyIgKyBpZCArICInXTpub3QoW2VkXFw6dG9waWN0eXBlXSkiKTsNCiAgICB2YXIgY2FsbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJnW2VkXFw6cGFyZW50aWQ9JyIgKyBpZCArICInXVtlZFxcOnRvcGljdHlwZV0iKTsNCiAgICB2YXIgc3VtbWFyeSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInBhdGhbZWRcXDpwYXJlbnRpZCo9JyIgKyBpZCArICInXVtlZFxcOnR5cGU9J3N1bW1hcnknXSIpOw0KICAgIHZhciBib3VuZGFyeT0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicGF0aFtlZFxcOnBhcmVudGlkKj0nIiArIGlkICsgIiddW2VkXFw6dHlwZT0nYm91bmRhcnknXSIpOw0KICAgIHZhciByZWxhZnJvbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJnW2VkXFw6ZnJvbWlkKj0nIiArIGlkICsgIiddW2VkXFw6dHlwZT0ncmVsYXRpb24nXSIpOw0KICAgIHZhciByZWxhdG89ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZ1tlZFxcOnRvaWQqPSciICsgaWQgKyAiJ11bZWRcXDp0eXBlPSdyZWxhdGlvbiddIik7DQogICAgb2JqWyJtIiArIGlkXSA9IHt9Ow0KICAgIHZhciB0eXBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmdldEF0dHJpYnV0ZSgnZWQ6dG9waWN0eXBlJyk7DQogICAgdmFyIGl3PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5nZXRBdHRyaWJ1dGUoJ2VkOndpZHRoJyk7DQogICAgdmFyIGloPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5nZXRBdHRyaWJ1dGUoJ2VkOmhlaWdodCcpOw0KICAgIGlmICh0eXBlKSB7DQogICAgICAgIG9ialsibSIgKyBpZF0udHlwZSA9IHR5cGU7DQogICAgfQ0KICAgIGlmKGl3JiZpaCl7DQogICAgICAgIG9ialsibSIgKyBpZF0ud2lkdGggPWl3Ow0KICAgICAgICBvYmpbIm0iICsgaWRdLmhlaWdodCA9aWg7DQogICAgfQ0KICAgIGlmIChyZWxhZnJvbS5sZW5ndGggIT09IDApIHsNCiAgICAgICAgb2JqWyJtIiArIGlkXS5yZWxhZnJvbSA9IHt9Ow0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbGFmcm9tLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgaW5kZXhpZCA9IHJlbGFmcm9tW2ldLmlkOw0KICAgICAgICAgICAgdmFyIHRvaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbmRleGlkKS5nZXRBdHRyaWJ1dGUoJ2VkOnRvaWQnKTsNCiAgICAgICAgICAgIGlmIChleHRyYVJlbGFbaW5kZXhpZF0gPT09IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgIGV4dHJhUmVsYVtpbmRleGlkXSA9IHsNCiAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4aWQsDQogICAgICAgICAgICAgICAgICAgIGZyb21pZDogaWQsDQogICAgICAgICAgICAgICAgICAgIHRvaWQ6IHRvaWQsDQogICAgICAgICAgICAgICAgICAgIGlzQzogZmFsc2UNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgb2JqWyJtIiArIGlkXS5yZWxhZnJvbVtpbmRleGlkXT17fTsNCiAgICAgICAgICAgIG9ialsibSIgKyBpZF0ucmVsYWZyb20uZGlzcGxheT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnPydibG9jayc6J25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChyZWxhdG8ubGVuZ3RoICE9PSAwKSB7DQogICAgICAgIG9ialsibSIgKyBpZF0ucmVsYXRvID0ge307DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVsYXRvLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgaW5kZXhpZD1yZWxhdG9baV0uaWQ7DQogICAgICAgICAgICB2YXIgZnJvbWlkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGluZGV4aWQpLmdldEF0dHJpYnV0ZSgnZWQ6ZnJvbWlkJyk7DQogICAgICAgICAgICBpZihleHRyYVJlbGFbaW5kZXhpZF0gPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgICAgZXh0cmFSZWxhW2luZGV4aWRdPXsNCiAgICAgICAgICAgICAgICAgICAgaWQ6aW5kZXhpZCwNCiAgICAgICAgICAgICAgICAgICAgZnJvbWlkOmZyb21pZCwNCiAgICAgICAgICAgICAgICAgICAgdG9pZDppZCwNCiAgICAgICAgICAgICAgICAgICAgaXNDOmZhbHNlDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9ialsibSIgKyBpZF0ucmVsYXRvW2luZGV4aWRdPXt9Ow0KICAgICAgICAgICAgb2JqWyJtIiArIGlkXS5yZWxhdG8uZGlzcGxheT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnPydibG9jayc6J25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChjaGlsZHMubGVuZ3RoICE9PSAwKSB7DQogICAgICAgIG9ialsibSIgKyBpZF0uY2hpbGQgPSB7fTsNCiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImdbZWRcXDp0b2d0b3BpY2lkPSciICsgaWQgKyAiJ10iKSkgew0KICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZ1tlZFxcOnRvZ3RvcGljaWQ9JyIgKyBpZCArICInXSIpLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKCd4bGluazpocmVmJykpOw0KICAgICAgICAgICAgdmFyIHRvZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImdbZWRcXDp0b2d0b3BpY2lkPSciICsgaWQgKyAiJ10iKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndXNlJylbMF0uZ2V0QXR0cmlidXRlKCd4bGluazpocmVmJykuc2xpY2UoMSk7DQogICAgICAgICAgICBvYmpbIm0iICsgaWRdLnRvZ3R5cGUgPSB0b2c7DQogICAgICAgIH0NCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIHZhciBjaWQgPSBjaGlsZHNbaV0uaWQ7DQogICAgICAgICAgICBpbml0KGNpZCwgb2JqWyJtIiArIGlkXS5jaGlsZCk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGNhbGxzLmxlbmd0aCAhPT0gMCkgew0KICAgICAgICBvYmpbIm0iICsgaWRdLmNhbGwgPSB7fTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxscy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgdmFyIGNpZCA9IGNhbGxzW2ldLmlkOw0KICAgICAgICAgICAgaW5pdChjaWQsIG9ialsibSIgKyBpZF0uY2FsbCk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGJvdW5kYXJ5Lmxlbmd0aCAhPT0gMCkgew0KICAgICAgICBvYmpbIm0iICsgaWRdLmJvdW5kYXJ5ID0ge307DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm91bmRhcnkubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIHZhciBjaWQgPWJvdW5kYXJ5W2ldLmlkOw0KICAgICAgICAgICAgaW5pdChjaWQsIG9ialsibSIgKyBpZF0uYm91bmRhcnkpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChzdW1tYXJ5Lmxlbmd0aCAhPT0gMCkgew0KICAgICAgICBvYmpbIm0iICsgaWRdLnN1bW1hcnkgPSB7fTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdW1tYXJ5Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgY2lkID0gc3VtbWFyeVtpXS5pZDsNCiAgICAgICAgICAgIGluaXQoY2lkLCBvYmpbIm0iICsgaWRdLnN1bW1hcnkpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KLy8tLWluaXRpYWxpemUNCi8vdG9nZ2xlZGlzcGxheS0tDQp2YXIgY2hhaW5BcnI9W107DQpmdW5jdGlvbiBnZXRjaGFpbihpZCl7DQogICAgY2hhaW5BcnIudW5zaGlmdCgnbScraWQpOw0KICAgIHZhciBwYXJlbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmdldEF0dHJpYnV0ZSgnZWQ6cGFyZW50aWQnKTsNCiAgICBpZighcGFyZW50KXsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCglpZihwYXJlbnQubWF0Y2goL1wsLykpew0KICAgICAgICBwYXJlbnQgPSBwYXJlbnQubWF0Y2goL1xkKyg/PVwsKS8pWzBdDQogICAgfQ0KICAgIGdldGNoYWluKHBhcmVudCk7DQp9DQpmdW5jdGlvbiBnZXRvYmooaWQpIHsNCiAgICBjaGFpbkFycj1bXTsNCiAgICBnZXRjaGFpbihpZCk7DQogICAgdmFyIG1haW49Y2hhaW5BcnJbMF07DQogICAgaWYoY2hhaW5BcnIubGVuZ3RoPjEpew0KICAgICAgICB2YXIgb2JqPWRhdGFUcmVlW21haW5dOw0KICAgICAgICAvLyBjb25zb2xlLmxvZyhjaGFpbkFycik7DQogICAgICAgIGZvcih2YXIgaT0xO2k8Y2hhaW5BcnIubGVuZ3RoO2krKykgew0KICAgICAgICAgICAgdmFyIGEgPSBjaGFpbkFycltpXTsNCiAgICAgICAgICAgIGZvcih2YXIgaj0wO2o8T2JqZWN0LmtleXMob2JqKS5sZW5ndGg7aisrKXsNCiAgICAgICAgICAgICAgICB2YXIgY29iaj0gb2JqW09iamVjdC5rZXlzKG9iailbal1dW2FdOw0KICAgICAgICAgICAgICAgIGlmKGNvYmopew0KICAgICAgICAgICAgICAgICAgICBvYmo9Y29iajsNCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG9iag0KICAgIH1lbHNlew0KICAgICAgICB2YXIgb2JqPWRhdGFUcmVlW21haW5dOw0KICAgICAgICByZXR1cm4gb2JqDQogICAgfQ0KDQp9DQpmb3IodmFyIGk9MDtpPHNoYXBlLmxlbmd0aDtpKyspew0KICAgIHNoYXBlW2ldLm9uY2xpY2s9ZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgaWQ9TnVtYmVyKHRoaXMuZ2V0QXR0cmlidXRlKCdlZDp0b2d0b3BpY2lkJykpOw0KICAgICAgICB2YXIgb2JqPWdldG9iaihpZCk7DQoNCiAgICAgICAgdmFyIHR5cGU9b2JqLnRvZ3R5cGU9PT0nbWludXMnPydwbHVzJzonbWludXMnOw0KICAgICAgICB2YXIgZGlzcGxheT1vYmoudG9ndHlwZT09PSdtaW51cyc/J25vbmUnOidibG9jayc7DQogICAgICAgIHRoaXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3VzZScpWzBdLnNldEF0dHJpYnV0ZSgneGxpbms6aHJlZicsJyMnK3R5cGUpOw0KICAgICAgICBvYmoudG9ndHlwZT10eXBlOw0KICAgICAgICBjaGVja0lEPW9iajsNCg0KICAgICAgICB1dGQob2JqLGlkLGRpc3BsYXkpOw0KICAgICAgICBleHRyYVJlbGFGaW4oKTsNCiAgICB9DQp9DQpmdW5jdGlvbiB1dGQob2JqLGlkLHNob3csb2MpIHsNCg0KICAgIHZhciBwc2hvdz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSE9PSAnbm9uZSc/J2Jsb2NrJzonbm9uZSc7DQogICAgaWYgKG9iai5yZWxhZnJvbSl7DQogICAgICAgIGlmKG9iai5yZWxhZnJvbS5kaXNwbGF5IT09IHBzaG93KXsNCiAgICAgICAgICAgIHZhciByZWxhZnJvbXM9T2JqZWN0LmtleXMob2JqLnJlbGFmcm9tKTsNCiAgICAgICAgICAgIHJlbGFmcm9tcy5zcGxpY2UocmVsYWZyb21zLmluZGV4T2YoJ2Rpc3BsYXknKSwxKTsNCiAgICAgICAgICAgIGZvcih2YXIgaz0wO2s8cmVsYWZyb21zLmxlbmd0aDtrKyspew0KICAgICAgICAgICAgICAgIHZhciBkPXJlbGFmcm9tc1trXTsNCiAgICAgICAgICAgICAgICBleHRyYVJlbGFbZF0uaXNDPXRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvYmoucmVsYWZyb20uZGlzcGxheSA9IHBzaG93Ow0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChvYmoucmVsYXRvKXsNCiAgICAgICAgaWYob2JqLnJlbGF0by5kaXNwbGF5IT09IHBzaG93KXsNCiAgICAgICAgICAgIHZhciByZWxhdG9zPU9iamVjdC5rZXlzKG9iai5yZWxhdG8pOw0KICAgICAgICAgICAgcmVsYXRvcy5zcGxpY2UocmVsYXRvcy5pbmRleE9mKCdkaXNwbGF5JyksMSk7DQogICAgICAgICAgICBmb3IodmFyIGs9MDtrPHJlbGF0b3MubGVuZ3RoO2srKyl7DQogICAgICAgICAgICAgICAgdmFyIGQ9cmVsYXRvc1trXTsNCiAgICAgICAgICAgICAgICBleHRyYVJlbGFbZF0uaXNDPXRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvYmoucmVsYXRvLmRpc3BsYXkgPSBwc2hvdzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZihvYmouY2FsbCl7DQogICAgICAgIHZhciBjYWxscz1PYmplY3Qua2V5cyhvYmouY2FsbCk7DQogICAgICAgIGlmKGNoZWNrSUQhPT1vYmopew0KICAgICAgICAgICAgZm9yKHZhciBpPTA7aSA8IGNhbGxzLmxlbmd0aDtpKyspew0KICAgICAgICAgICAgICAgIHZhciBhPWNhbGxzW2ldLnNsaWNlKDEpOw0KICAgICAgICAgICAgICAgIHZhciBiPW9iai5jYWxsW2NhbGxzW2ldXTsNCiAgICAgICAgICAgICAgICB2YXIgYz1iLnRvZ3R5cGU7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkuc3R5bGUuZGlzcGxheT1zaG93Ow0KICAgICAgICAgICAgICAgIGlmIChiLnJlbGFmcm9tJiYhYyl7DQogICAgICAgICAgICAgICAgICAgIGlmKGIucmVsYWZyb20uZGlzcGxheSE9PSBzaG93KXsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWxhZnJvbXM9T2JqZWN0LmtleXMoYi5yZWxhZnJvbSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZWxhZnJvbXMuc3BsaWNlKHJlbGFmcm9tcy5pbmRleE9mKCdkaXNwbGF5JyksMSk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGs9MDtrPHJlbGFmcm9tcy5sZW5ndGg7aysrKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZD1yZWxhZnJvbXNba107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWxhW2RdLmlzQz10cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYi5yZWxhZnJvbS5kaXNwbGF5ID0gc2hvdzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoYi5yZWxhdG8mJiFjKXsNCiAgICAgICAgICAgICAgICAgICAgaWYoYi5yZWxhdG8uZGlzcGxheSE9PSBzaG93KXsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWxhdG9zPU9iamVjdC5rZXlzKGIucmVsYXRvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0b3Muc3BsaWNlKHJlbGF0b3MuaW5kZXhPZignZGlzcGxheScpLDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBrPTA7azxyZWxhdG9zLmxlbmd0aDtrKyspew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkPXJlbGF0b3Nba107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWxhW2RdLmlzQz10cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYi5yZWxhdG8uZGlzcGxheSA9IHNob3c7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYoYyl7DQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImdbZWRcXDp0b2d0b3BpY2lkPSciK2ErIiddIikuc3R5bGUuZGlzcGxheT1zaG93Ow0KICAgICAgICAgICAgICAgICAgICBpZihjPT09J21pbnVzJyl7DQogICAgICAgICAgICAgICAgICAgICAgICB1dGQoYixhLHNob3cpDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKChiLmNhbGx8fGIuYm91bmRhcnl8fGIuc3VtbWFyeSkmJmM9PT0ncGx1cycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdyx0cnVlKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmKGIuY2FsbCYmIWMpIHsNCiAgICAgICAgICAgICAgICAgICAgdXRkKGIsYSxzaG93LHRydWUpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChiLnN1bW1hcnkmJiFjKSB7DQogICAgICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdykNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGIuYm91bmRhcnkmJiFjKSB7DQogICAgICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdykNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZihvYmouc3VtbWFyeSl7DQogICAgICAgIHZhciBzdW1tYXJ5cz1PYmplY3Qua2V5cyhvYmouc3VtbWFyeSk7DQogICAgICAgIGlmKChjaGVja0lEIT09b2JqJiYob2JqLnRvZ3R5cGU9PT0nbWludXMnfHwhb2JqLnRvZ3R5cGUpKXx8Y2hlY2tJRD09PW9iail7DQogICAgICAgICAgICBmb3IodmFyIGk9MDtpPHN1bW1hcnlzLmxlbmd0aDtpKyspew0KICAgICAgICAgICAgICAgIHZhciBhPXN1bW1hcnlzW2ldLnNsaWNlKDEpOw0KCQkJCXZhciBvc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKS5nZXRBdHRyaWJ1dGUoJ2VkOnBhcmVudGlkJyk7DQogICAgICAgICAgICAgICAgaWYob3NwLm1hdGNoKC9cLC8pKXsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG9zcGEgPSBvc3Auc3BsaXQoJywnKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG9zcEw9MDsNCg0KICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGo9MDtqPG9zcGEubGVuZ3RoO2orKyl7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihzaG93ID09ICdub25lJyl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3NwYVtqXSkuc3R5bGUuZGlzcGxheSAhPSAnbm9uZScpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwTCsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKS5zdHlsZS5kaXNwbGF5ICE9ICdub25lJyl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc3BMKys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmKG9zcEwgIT09IG9zcGEubGVuZ3RoKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHZhciBiPW9iai5zdW1tYXJ5W3N1bW1hcnlzW2ldXTsNCiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhKTsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKS5zdHlsZS5kaXNwbGF5PXNob3c7DQovLyAgICAgICAgICAgICAgICBpZihjKXsNCi8vICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJnW2VkXFw6dG9ndG9waWNpZD0nIithKyInXSIpLnN0eWxlLmRpc3BsYXk9c2hvdzsNCi8vICAgICAgICAgICAgICAgICAgICBpZihjPT09J21pbnVzJyl7DQovLyAgICAgICAgICAgICAgICAgICAgICAgIHV0ZChiLHNob3cpDQovLyAgICAgICAgICAgICAgICAgICAgfQ0KLy8gICAgICAgICAgICAgICAgICAgIGlmIChiLmNhbGwmJmM9PT0ncGx1cycpIHsNCi8vICAgICAgICAgICAgICAgICAgICAgICAgdXRkKGIsc2hvdyx0cnVlKQ0KLy8gICAgICAgICAgICAgICAgICAgIH0NCi8vICAgICAgICAgICAgICAgIH0NCi8vICAgICAgICAgICAgICAgIGlmKGIuY2FsbCYmIWMpIHsNCi8vICAgICAgICAgICAgICAgICAgICB1dGQoYixzaG93LHRydWUpDQovLyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYoT2JqZWN0LmtleXMoYikubGVuZ3RoIT09MCl7DQogICAgICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdykNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYob2JqLmJvdW5kYXJ5KXsNCiAgICAgICAgdmFyIGJvdW5kYXJ5cz1PYmplY3Qua2V5cyhvYmouYm91bmRhcnkpOw0KICAgICAgICBpZihjaGVja0lEIT09b2JqKXsNCiAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8Ym91bmRhcnlzLmxlbmd0aDtpKyspew0KICAgICAgICAgICAgICAgIHZhciBhPWJvdW5kYXJ5c1tpXS5zbGljZSgxKTsNCiAgICAgICAgICAgICAgICB2YXIgYj1vYmouYm91bmRhcnlbYm91bmRhcnlzW2ldXTsNCiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhKTsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKS5zdHlsZS5kaXNwbGF5PXNob3c7DQovLyAgICAgICAgICAgICAgICBpZihjKXsNCi8vICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJnW2VkXFw6dG9ndG9waWNpZD0nIithKyInXSIpLnN0eWxlLmRpc3BsYXk9c2hvdzsNCi8vICAgICAgICAgICAgICAgICAgICBpZihjPT09J21pbnVzJyl7DQovLyAgICAgICAgICAgICAgICAgICAgICAgIHV0ZChiLHNob3cpDQovLyAgICAgICAgICAgICAgICAgICAgfQ0KLy8gICAgICAgICAgICAgICAgICAgIGlmIChiLmNhbGwmJmM9PT0ncGx1cycpIHsNCi8vICAgICAgICAgICAgICAgICAgICAgICAgdXRkKGIsc2hvdyx0cnVlKQ0KLy8gICAgICAgICAgICAgICAgICAgIH0NCi8vICAgICAgICAgICAgICAgIH0NCi8vICAgICAgICAgICAgICAgIGlmKGIuY2FsbCYmIWMpIHsNCi8vICAgICAgICAgICAgICAgICAgICB1dGQoYixzaG93LHRydWUpDQovLyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYoT2JqZWN0LmtleXMoYikubGVuZ3RoIT09MCl7DQogICAgICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdykNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYoIW9jJiZvYmouY2hpbGQpIHsNCiAgICAgICAgdmFyIGNoaWxkcyA9IE9iamVjdC5rZXlzKG9iai5jaGlsZCk7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgYSA9IGNoaWxkc1tpXS5zbGljZSgxKTsNCiAgICAgICAgICAgIHZhciBiID0gb2JqLmNoaWxkW2NoaWxkc1tpXV07DQogICAgICAgICAgICB2YXIgYyA9IGIudG9ndHlwZTsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpLnN0eWxlLmRpc3BsYXkgPSBzaG93Ow0KCQkJdmFyIHRTUGF0aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInBhdGhbZWRcXDp0b3N1cGVyaWQ9JyIrYSsiJ10iKTsNCiAgICAgICAgICAgIGlmKHRTUGF0aCl7DQogICAgICAgICAgICAgICAgdFNQYXRoLnN0eWxlLmRpc3BsYXkgPSBzaG93Ow0KICAgICAgICAgICAgfQ0KCQkJdmFyIG5vdGVUaXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJnW2VkXFw6bm90ZXRvPSciK2ErIiddIik7DQogICAgICAgICAgICBpZihub3RlVGlwKXsNCiAgICAgICAgICAgICAgICBub3RlVGlwLnN0eWxlLmRpc3BsYXkgPSBzaG93Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGIucmVsYWZyb20mJiFjKXsNCiAgICAgICAgICAgICAgICBpZihiLnJlbGFmcm9tLmRpc3BsYXkhPT0gc2hvdyl7DQogICAgICAgICAgICAgICAgICAgIHZhciByZWxhZnJvbXM9T2JqZWN0LmtleXMoYi5yZWxhZnJvbSk7DQogICAgICAgICAgICAgICAgICAgIHJlbGFmcm9tcy5zcGxpY2UocmVsYWZyb21zLmluZGV4T2YoJ2Rpc3BsYXknKSwxKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBrPTA7azxyZWxhZnJvbXMubGVuZ3RoO2srKyl7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZD1yZWxhZnJvbXNba107DQogICAgICAgICAgICAgICAgICAgICAgICBleHRyYVJlbGFbZF0uaXNDPXRydWU7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYi5yZWxhZnJvbS5kaXNwbGF5ID0gc2hvdzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYi5yZWxhdG8mJiFjKXsNCiAgICAgICAgICAgICAgICBpZihiLnJlbGF0by5kaXNwbGF5IT09IHNob3cpew0KICAgICAgICAgICAgICAgICAgICB2YXIgcmVsYXRvcz1PYmplY3Qua2V5cyhiLnJlbGF0byk7DQogICAgICAgICAgICAgICAgICAgIHJlbGF0b3Muc3BsaWNlKHJlbGF0b3MuaW5kZXhPZignZGlzcGxheScpLDEpOw0KICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGs9MDtrPHJlbGF0b3MubGVuZ3RoO2srKyl7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZD1yZWxhdG9zW2tdOw0KICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWxhW2RdLmlzQz10cnVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGIucmVsYXRvLmRpc3BsYXkgPSBzaG93Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChjKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZ1tlZFxcOnRvZ3RvcGljaWQ9JyIgKyBhICsgIiddIikuc3R5bGUuZGlzcGxheSA9IHNob3c7DQogICAgICAgICAgICAgICAgaWYgKGMgPT09ICdtaW51cycpIHsNCiAgICAgICAgICAgICAgICAgICAgdXRkKGIsYSxzaG93KQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoKGIuY2FsbHx8Yi5ib3VuZGFyeXx8Yi5zdW1tYXJ5KSYmYz09PSdwbHVzJykgew0KICAgICAgICAgICAgICAgICAgICB1dGQoYixhLHNob3csdHJ1ZSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYi5jYWxsJiYhYykgew0KICAgICAgICAgICAgICAgIHV0ZChiLGEsc2hvdyx0cnVlKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGIuc3VtbWFyeSYmIWMpIHsNCiAgICAgICAgICAgICAgICB1dGQoYixhLHNob3cpDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYi5ib3VuZGFyeSYmIWMpIHsNCiAgICAgICAgICAgICAgICB1dGQoYixhLHNob3cpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGV4dHJhUmVsYUZpbigpIHsNCiAgICB2YXIgZXh0cmFrZXlzPU9iamVjdC5rZXlzKGV4dHJhUmVsYSk7DQogICAgZm9yKHZhciBpPTA7aTxleHRyYWtleXMubGVuZ3RoO2krKyl7DQogICAgICAgIHZhciBleHRyYU9iaj1leHRyYVJlbGFbZXh0cmFrZXlzW2ldXTsNCiAgICAgICAgaWYoZXh0cmFPYmouaXNDID09PSB0cnVlKXsNCiAgICAgICAgICAgIHZhciBmc2hvdz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHRyYU9iai5mcm9taWQpLnN0eWxlLmRpc3BsYXkgIT09J25vbmUnPyB0cnVlOiBmYWxzZTsNCiAgICAgICAgICAgIHZhciB0c2hvdz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHRyYU9iai50b2lkKS5zdHlsZS5kaXNwbGF5ICE9PSdub25lJz8gdHJ1ZTogZmFsc2U7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHRyYU9iai5pZCkuc3R5bGUuZGlzcGxheT1mc2hvdyAmJiB0c2hvdz8gJ2Jsb2NrJzogJ25vbmUnOw0KICAgICAgICAgICAgZXh0cmFSZWxhW2V4dHJha2V5c1tpXV0uaXNDID0gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQp9'))</script>
</body>
</html>