tango-app-ui-analyse-traffic 3.8.0-alpha.20 → 3.8.0-alpha.20-demo

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,8 +71,8 @@ export class ImgRvpsComponent {
71
71
  this.getRvpsImageList = [];
72
72
  this.objectsArray = [];
73
73
  this.noData = false;
74
- this.type = 'footfall';
75
- this.selectedTime = '';
74
+ this.type = "footfall";
75
+ this.selectedTime = "";
76
76
  }
77
77
  folderView;
78
78
  backnav;
@@ -170,9 +170,7 @@ export class ImgRvpsComponent {
170
170
  getTicketStatuses() {
171
171
  const statusList = this.getRvpsList?.ticketStatus;
172
172
  if (Array.isArray(statusList)) {
173
- return statusList
174
- .map((s) => s?.status?.toLowerCase())
175
- .filter(Boolean); // Removes null/undefined
173
+ return statusList.map((s) => s?.status?.toLowerCase()).filter(Boolean); // Removes null/undefined
176
174
  }
177
175
  return [];
178
176
  }
@@ -187,10 +185,10 @@ export class ImgRvpsComponent {
187
185
  const storeId = this.storeIdarray && this.storeIdarray.length > 0
188
186
  ? this.storeIdarray[0]
189
187
  : null;
190
- const dateString = this.folderDate || '';
191
- const groupByKey = 'time';
192
- const type = this.type === 'footfall' ? '' : this.type || '';
193
- const processType = 'footfall';
188
+ const dateString = this.folderDate || "";
189
+ const groupByKey = "time";
190
+ const type = this.type === "footfall" ? "" : this.type || "";
191
+ const processType = "footfall";
194
192
  this.rvpsService
195
193
  .getRvpsListApi(storeId, dateString, groupByKey, type, processType)
196
194
  .pipe(takeUntil(this.destroy$))
@@ -206,7 +204,8 @@ export class ImgRvpsComponent {
206
204
  const timeRanges = this.allFootfallData.map((item) => item.timeRange);
207
205
  this.objectsArray = timeRanges.map((timeRange) => ({
208
206
  timeRange,
209
- count: this.allFootfallData.find((d) => d.timeRange === timeRange)?.data?.length || 0,
207
+ count: this.allFootfallData.find((d) => d.timeRange === timeRange)
208
+ ?.data?.length || 0,
210
209
  }));
211
210
  // Only reset if previous selected time is NOT in the new list
212
211
  if (!timeRanges.includes(this.selectedTime)) {
@@ -217,10 +216,10 @@ export class ImgRvpsComponent {
217
216
  this.allFootfallData.find((item) => item.timeRange === this.selectedTime)?.data || [];
218
217
  // Count revopsTypes
219
218
  const revopsTypeCount = {
220
- 'non-tagging': 0,
219
+ "non-tagging": 0,
221
220
  duplicate: 0,
222
221
  employee: 0,
223
- 'house-keeping': 0,
222
+ "house-keeping": 0,
224
223
  };
225
224
  let totalCount = 0;
226
225
  this.overallArrayData = [];
@@ -228,28 +227,29 @@ export class ImgRvpsComponent {
228
227
  item.data?.forEach((image) => {
229
228
  this.overallArrayData.push(image);
230
229
  totalCount++;
231
- const type = image.revopsType?.trim().toLowerCase() || 'unknown';
232
- if (type === 'non-tagging') {
233
- revopsTypeCount['non-tagging']++;
230
+ const type = image.revopsType?.trim().toLowerCase() || "unknown";
231
+ if (type === "non-tagging") {
232
+ revopsTypeCount["non-tagging"]++;
234
233
  }
235
- else if (type === 'employee') {
236
- revopsTypeCount['employee']++;
234
+ else if (type === "employee") {
235
+ revopsTypeCount["employee"]++;
237
236
  }
238
- else if (type === 'house-keeping') {
239
- revopsTypeCount['house-keeping']++;
237
+ else if (type === "house-keeping") {
238
+ revopsTypeCount["house-keeping"]++;
240
239
  }
241
240
  // ✅ Count duplicates only from duplicateImagePath
242
241
  if (Array.isArray(image.duplicateImagePath)) {
243
- revopsTypeCount['duplicate'] += image.duplicateImagePath.length;
242
+ revopsTypeCount["duplicate"] +=
243
+ image.duplicateImagePath.length;
244
244
  }
245
245
  });
246
246
  });
247
247
  this.countData = {
248
248
  footfallCount: totalCount,
249
- nonTags: revopsTypeCount['non-tagging'],
250
- duplicate: revopsTypeCount['duplicate'],
251
- employee: revopsTypeCount['employee'],
252
- housekeeping: revopsTypeCount['house-keeping'],
249
+ nonTags: revopsTypeCount["non-tagging"],
250
+ duplicate: revopsTypeCount["duplicate"],
251
+ employee: revopsTypeCount["employee"],
252
+ housekeeping: revopsTypeCount["house-keeping"],
253
253
  };
254
254
  // Apply type filter after loading timeRange data
255
255
  this.applyFilters();
@@ -270,7 +270,11 @@ export class ImgRvpsComponent {
270
270
  }
271
271
  },
272
272
  error: (err) => {
273
- const msg = err.error.error || err.error || err?.error?.message || err.message || 'Unknown error';
273
+ const msg = err.error.error ||
274
+ err.error ||
275
+ err?.error?.message ||
276
+ err.message ||
277
+ "Unknown error";
274
278
  this.toast.getErrorToast(msg);
275
279
  this.loading = false;
276
280
  this.noData = true;
@@ -285,30 +289,32 @@ export class ImgRvpsComponent {
285
289
  }
286
290
  originalCheckedDuplicateIds;
287
291
  editValue() {
288
- const type = (this.selectedType || '').toLowerCase();
292
+ const type = (this.selectedType || "").toLowerCase();
289
293
  this.revopsTypeValue = false;
290
294
  const selectedImage = this.selectImageArray;
291
295
  const selectedTempld = selectedImage?.templd;
292
- if (type === 'duplicate' && Array.isArray(selectedImage.duplicateImagePath)) {
296
+ if (type === "duplicate" &&
297
+ Array.isArray(selectedImage.duplicateImagePath)) {
293
298
  // 1. Convert duplicate children into consistent objects with parent reference
294
299
  const duplicateChildren = selectedImage.duplicateImagePath.map((child) => ({
295
300
  ...child,
296
301
  parent: selectedTempld,
297
- selected: true
302
+ selected: true,
298
303
  }));
299
304
  // 2. Collect the templd values of duplicate children
300
305
  const duplicateChildIds = duplicateChildren.map((child) => child.tempId);
301
306
  // 3. Filter out non-tagging images except the selected parent & its children
302
307
  const nonTaggingImages = this.overallArrayData.filter((img) => {
303
- const isNonTagging = (img.revopsType || '').toLowerCase() === 'non-tagging';
304
- const isNotSelected = img.templd !== selectedTempld && !duplicateChildIds.includes(img.templd);
308
+ const isNonTagging = (img.revopsType || "").toLowerCase() === "non-tagging";
309
+ const isNotSelected = img.templd !== selectedTempld &&
310
+ !duplicateChildIds.includes(img.templd);
305
311
  return isNonTagging && isNotSelected;
306
312
  });
307
313
  // 4. Merge duplicate children + other non-tagging images
308
314
  this.remainingImageArray = [...duplicateChildren, ...nonTaggingImages];
309
315
  // 5. Mark selected: only duplicate images that were marked isChecked
310
316
  this.remainingImageArray.forEach((img) => {
311
- const isDuplicate = (img.revopsType || '').toLowerCase() === 'duplicate';
317
+ const isDuplicate = (img.revopsType || "").toLowerCase() === "duplicate";
312
318
  img.selected = isDuplicate && img.isChecked === true;
313
319
  });
314
320
  // 6. Store original checked IDs to compare later during submit
@@ -316,17 +322,19 @@ export class ImgRvpsComponent {
316
322
  .filter((img) => img.isChecked === true)
317
323
  .map((img) => img.templd);
318
324
  // ✅ 7. Fill selectedDuplicateImagesList with pre-selected duplicates
319
- this.selectedDuplicateImagesList = this.remainingImageArray.filter((img) => (img.revopsType || '').toLowerCase() === 'duplicate' &&
320
- img.isChecked === true).map((img) => ({
325
+ this.selectedDuplicateImagesList = this.remainingImageArray
326
+ .filter((img) => (img.revopsType || "").toLowerCase() === "duplicate" &&
327
+ img.isChecked === true)
328
+ .map((img) => ({
321
329
  ...img,
322
330
  parent: img.parent || selectedTempld,
323
- isChecked: true
331
+ isChecked: true,
324
332
  }));
325
333
  }
326
334
  else {
327
335
  // Not duplicate type → show only selected type (excluding the current selected image)
328
336
  this.remainingImageArray = this.overallArrayData.filter((img) => {
329
- const imgType = (img.revopsType || '').toLowerCase();
337
+ const imgType = (img.revopsType || "").toLowerCase();
330
338
  return imgType === type && img.templd !== selectedTempld;
331
339
  });
332
340
  }
@@ -343,11 +351,12 @@ export class ImgRvpsComponent {
343
351
  this.selectImageArray = obj;
344
352
  this.imageFlow = true;
345
353
  this.revopsTypeValue = false;
346
- this.selectedType = '';
354
+ this.selectedType = "";
347
355
  this.selectedRadioType = undefined;
348
356
  let filteredByType = [];
349
357
  // ✅ 1. Special case for duplicate type with child images
350
- if (obj.revopsType?.toLowerCase() === 'duplicate' && Array.isArray(obj.duplicateImagePath)) {
358
+ if (obj.revopsType?.toLowerCase() === "duplicate" &&
359
+ Array.isArray(obj.duplicateImagePath)) {
351
360
  // Extract children
352
361
  const children = obj.duplicateImagePath.map((child) => {
353
362
  // Try to find matching item from overallArrayData (by tempId)
@@ -356,17 +365,12 @@ export class ImgRvpsComponent {
356
365
  return {
357
366
  ...child,
358
367
  ...(matched || {}),
359
- parent: obj.templd // Tag with parent ID
368
+ parent: obj.templd, // Tag with parent ID
360
369
  };
361
370
  });
362
371
  // ✅ Merge parent and children for display
363
372
  filteredByType = [obj, ...children];
364
- if (obj?.revopsType === 'duplicate' && obj?.duplicateImagePath?.length > 0) {
365
- this.editBtnShow = true;
366
- }
367
- else {
368
- this.editBtnShow = false;
369
- }
373
+ console.log(this.remainingImageArray);
370
374
  }
371
375
  else {
372
376
  // ✅ 2. Default logic for other types
@@ -378,9 +382,20 @@ export class ImgRvpsComponent {
378
382
  // ✅ 4. Remaining images to show/edit
379
383
  this.remainingImageArray = filteredByType.filter((_, i) => i !== this.currentImageIndex);
380
384
  // ✅ 5. Handle revops type for radio UI
381
- if (obj?.revopsType === 'duplicate' ||
382
- obj?.revopsType === 'employee' ||
383
- obj?.revopsType === 'house-keeping') {
385
+ if (obj?.revopsType === "duplicate" ||
386
+ obj?.revopsType === "employee" ||
387
+ obj?.revopsType === "house-keeping") {
388
+ if (obj?.revopsType === "duplicate" &&
389
+ obj?.duplicateImagePath?.length > 0) {
390
+ this.editBtnShow = true;
391
+ }
392
+ else if (obj?.revopsType === "employee" ||
393
+ obj?.revopsType === "house-keeping") {
394
+ this.editBtnShow = true;
395
+ }
396
+ else {
397
+ this.editBtnShow = false;
398
+ }
384
399
  this.revopsTypeValue = true;
385
400
  this.selectedType = obj?.revopsType;
386
401
  this.onRadioChange(obj?.revopsType);
@@ -410,13 +425,13 @@ export class ImgRvpsComponent {
410
425
  onRadioChange(val) {
411
426
  this.selectedRadioType = val;
412
427
  this.selectedDuplicateImagesList = [];
413
- const type = (val || '').toLowerCase();
414
- if (type === 'duplicate') {
428
+ const type = (val || "").toLowerCase();
429
+ if (type === "duplicate") {
415
430
  // ✅ Show only non-tagging images (excluding the current selectedImage)
416
431
  const selectedTempld = this.selectImageArray?.templd;
417
432
  this.remainingImageArray = this.overallArrayData.filter((img) => {
418
- const imgType = (img.revopsType || '').toLowerCase();
419
- return imgType === 'non-tagging' && img.templd !== selectedTempld;
433
+ const imgType = (img.revopsType || "").toLowerCase();
434
+ return imgType === "non-tagging" && img.templd !== selectedTempld;
420
435
  });
421
436
  // ✅ Optional: set all as unselected initially
422
437
  this.remainingImageArray.forEach((img) => {
@@ -436,7 +451,7 @@ export class ImgRvpsComponent {
436
451
  this.imageFlow = false;
437
452
  // Convert type to lowercase safely
438
453
  const selectedType = this.type?.toLowerCase();
439
- if (selectedType === 'footfall') {
454
+ if (selectedType === "footfall") {
440
455
  // Footfall shows all currentTimeRangeData (time range based)
441
456
  this.imagesArrayData = [...this.currentTimeRangeData];
442
457
  }
@@ -456,29 +471,31 @@ export class ImgRvpsComponent {
456
471
  }
457
472
  handleImageClick(evt, obj) {
458
473
  // Only toggle checkbox if radio is 'duplicate' and image is not already tagged
459
- if (this.selectedRadioType === 'duplicate' && !(obj.duplicateImagePath?.length > 0)) {
460
- this.onImageCheckboxChange(evt, obj, 'duplicate');
474
+ if (this.selectedRadioType === "duplicate" &&
475
+ !(obj.duplicateImagePath?.length > 0)) {
476
+ this.onImageCheckboxChange(evt, obj, "duplicate");
461
477
  }
462
- else if (this.selectedRadioType !== 'duplicate') {
478
+ else if (this.selectedRadioType !== "duplicate") {
463
479
  this.imgSwap(obj); // existing non-duplicate click behavior
464
480
  }
465
481
  }
466
482
  selectedDuplicateImagesList = [];
467
483
  onImageCheckboxChange(evt, img, type) {
468
- if (type === 'duplicate') {
484
+ if (type === "duplicate") {
469
485
  const totalImages = this.overallArrayData.length;
470
486
  const alreadyTaggedCount = this.countData?.duplicate || 0;
471
487
  // console.log(totalImages)
472
488
  // console.log(alreadyTaggedCount)
473
489
  // Total taggable count = already tagged + selected now
474
- const maxSelectable = Math.round((totalImages) * 0.2);
490
+ const maxSelectable = Math.round(totalImages * 0.2);
475
491
  // console.log(maxSelectable)
476
492
  // Count selected now (in UI)
477
493
  const currentlySelectedCount = this.overallArrayData.filter((item) => item.selected).length;
478
494
  const willSelect = !img.selected;
479
495
  // ⛔ Block selection if trying to go beyond 10% cap
480
- if (willSelect && (currentlySelectedCount + alreadyTaggedCount) >= maxSelectable) {
481
- this.toast.getWarningToast(`You can select only ${maxSelectable} images (${this.getRvpsList?.data?.config?.duplicate ?? '20%'} of total footfall)`);
496
+ if (willSelect &&
497
+ currentlySelectedCount + alreadyTaggedCount >= maxSelectable) {
498
+ this.toast.getWarningToast(`You can select only ${maxSelectable} images (${this.getRvpsList?.data?.config?.duplicate ?? "20%"} of total footfall)`);
482
499
  evt.target.checked = false;
483
500
  this.cd.detectChanges();
484
501
  return;
@@ -492,13 +509,13 @@ export class ImgRvpsComponent {
492
509
  .map((item) => ({
493
510
  ...item,
494
511
  parent: item.parent || this.selectImageArray?.templd,
495
- isChecked: true
512
+ isChecked: true,
496
513
  }));
497
514
  // console.log('✅ selectedDuplicateImagesList:', this.selectedDuplicateImagesList);
498
515
  }
499
516
  }
500
517
  clearValue() {
501
- this.save('non-tagging');
518
+ this.save("non-tagging");
502
519
  // this.submitValue('non-tagging')
503
520
  }
504
521
  cancel() {
@@ -524,9 +541,11 @@ export class ImgRvpsComponent {
524
541
  popupType;
525
542
  zoomPopup;
526
543
  save(category) {
527
- const modalRef = this.modalService.open(this.zoomPopup, { centered: true, size: 'md',
528
- backdrop: 'static',
529
- keyboard: false // Prevent closing on ESC key
544
+ const modalRef = this.modalService.open(this.zoomPopup, {
545
+ centered: true,
546
+ size: "md",
547
+ backdrop: "static",
548
+ keyboard: false, // Prevent closing on ESC key
530
549
  });
531
550
  this.popupType = category;
532
551
  }
@@ -536,17 +555,17 @@ export class ImgRvpsComponent {
536
555
  }
537
556
  submitValue(category) {
538
557
  let duplicateImages = [];
539
- if (category === 'duplicate') {
558
+ if (category === "duplicate") {
540
559
  duplicateImages = this.remainingImageArray
541
560
  .filter((img) => img.selected === true)
542
561
  .map((img) => ({
543
- tempId: img.templd || img.tempId || '',
544
- timeRange: img.timeRange || '',
545
- entryTime: img.entryTime || img.entryTme || '',
546
- exitTime: img.exitTime || '',
562
+ tempId: img.templd || img.tempId || "",
563
+ timeRange: img.timeRange || "",
564
+ entryTime: img.entryTime || img.entryTme || "",
565
+ exitTime: img.exitTime || "",
547
566
  filePath: img.filePath,
548
- revopsType: 'duplicate',
549
- isChecked: true
567
+ revopsType: "duplicate",
568
+ isChecked: true,
550
569
  }));
551
570
  }
552
571
  const img = this.selectImageArray;
@@ -554,59 +573,59 @@ export class ImgRvpsComponent {
554
573
  storeId: this.storeIdarray && this.storeIdarray.length > 0
555
574
  ? this.storeIdarray[0]
556
575
  : null,
557
- dateString: this.folderDate || '',
576
+ dateString: this.folderDate || "",
558
577
  tempId: img?.templd || 0,
559
578
  revopsType: category,
560
- timeRange: img?.timeRange || '',
579
+ timeRange: img?.timeRange || "",
561
580
  isChecked: true,
562
581
  duplicateImage: duplicateImages,
563
- processType: img?.processType || 'footfall',
564
- entryTime: img?.entryTime || img?.entryTme || '',
565
- exitTime: img?.exitTime || '',
566
- filePath: img?.filePath || ''
582
+ processType: img?.processType || "footfall",
583
+ entryTime: img?.entryTime || img?.entryTme || "",
584
+ exitTime: img?.exitTime || "",
585
+ filePath: img?.filePath || "",
567
586
  };
568
- this.rvpsService.getRvpsTag(obj)
587
+ this.rvpsService
588
+ .getRvpsTag(obj)
569
589
  .pipe(takeUntil(this.destroy$))
570
590
  .subscribe({
571
591
  next: (res) => {
572
592
  if (res && res.code === 200) {
573
- this.toast.getSuccessToast(res?.message || 'Ticket updated successfully');
593
+ this.toast.getSuccessToast(res?.message || "Ticket updated successfully");
574
594
  this.imageFlow = false;
575
595
  this.getRevops();
576
596
  this.cancelSubmit();
577
597
  this.selectedRadioType = undefined;
578
- this.selectedType = '';
598
+ this.selectedType = "";
579
599
  }
580
600
  else {
581
- this.toast.getErrorToast('Failed to update');
601
+ this.toast.getErrorToast("Failed to update");
582
602
  }
583
603
  },
584
604
  error: (err) => {
585
- const msg = err.error?.error || err.error || err?.message || 'Unknown error';
605
+ const msg = err.error?.error || err.error || err?.message || "Unknown error";
586
606
  this.toast.getErrorToast(msg);
587
- }
607
+ },
588
608
  });
589
609
  }
590
610
  noDataMessages = {
591
- duplicate: 'No duplicates found',
592
- employee: 'No employee/staff found',
593
- 'house-keeping': 'No house keeping found',
594
- 'non-tagging': 'No non-tagging found'
611
+ duplicate: "No duplicates found",
612
+ employee: "No employee/staff found",
613
+ "house-keeping": "No house keeping found",
614
+ "non-tagging": "No non-tagging found",
595
615
  };
596
616
  tempRaisedPayload = null; // class-level variable for preview
597
- prepareRaisedPayload(showOnly = false) {
598
- }
617
+ prepareRaisedPayload(showOnly = false) { }
599
618
  raisedPopup;
600
619
  Raised() {
601
620
  const payload = {
602
621
  dateString: this.folderDate,
603
622
  storeId: this.storeIdarray?.length > 0 ? this.storeIdarray[0] : null,
604
- ticketName: 'footfall-directory',
623
+ ticketName: "footfall-directory",
605
624
  footfallCount: 0,
606
625
  duplicateCount: 0,
607
626
  employeeCount: 0,
608
627
  houseKeepingCount: 0,
609
- comments: this.commentText || '',
628
+ comments: this.commentText || "",
610
629
  duplicateImages: [],
611
630
  houseKeeping: [],
612
631
  employee: [],
@@ -621,22 +640,22 @@ export class ImgRvpsComponent {
621
640
  // totalCheckedCount++;
622
641
  // }
623
642
  // DUPLICATE TYPE
624
- if (type === 'duplicate' && Array.isArray(item.duplicateImagePath)) {
643
+ if (type === "duplicate" && Array.isArray(item.duplicateImagePath)) {
625
644
  const nestedData = item.duplicateImagePath
626
645
  .filter((dup) => dup.isChecked)
627
646
  .map((dup) => ({
628
- tempId: dup.tempId || dup.templd || '',
647
+ tempId: dup.tempId || dup.templd || "",
629
648
  filePath: dup.filePath,
630
- entryTime: dup?.entryTime || dup?.entryTme || '',
649
+ entryTime: dup?.entryTime || dup?.entryTme || "",
631
650
  exitTime: dup.exitTime,
632
651
  timeRange: dup.timeRange,
633
- isChecked: dup.isChecked
652
+ isChecked: dup.isChecked,
634
653
  }));
635
654
  if (nestedData.length > 0) {
636
655
  payload.duplicateImages.push({
637
656
  tempId: item.templd,
638
657
  filePath: item.filePath,
639
- entryTime: item?.entryTime || item?.entryTme || '',
658
+ entryTime: item?.entryTime || item?.entryTme || "",
640
659
  exitTime: item.exitTime,
641
660
  timeRange: item.timeRange,
642
661
  isChecked: item.isChecked,
@@ -646,26 +665,26 @@ export class ImgRvpsComponent {
646
665
  }
647
666
  }
648
667
  // EMPLOYEE
649
- else if (type === 'employee' && isChecked) {
668
+ else if (type === "employee" && isChecked) {
650
669
  payload.employee.push({
651
670
  tempId: item.templd,
652
671
  filePath: item.filePath,
653
- entryTime: item?.entryTime || item?.entryTme || '',
672
+ entryTime: item?.entryTime || item?.entryTme || "",
654
673
  exitTime: item.exitTime,
655
674
  timeRange: item.timeRange,
656
- isChecked: item.isChecked
675
+ isChecked: item.isChecked,
657
676
  });
658
677
  payload.employeeCount++;
659
678
  }
660
679
  // HOUSEKEEPING
661
- else if (type === 'house-keeping' && isChecked) {
680
+ else if (type === "house-keeping" && isChecked) {
662
681
  payload.houseKeeping.push({
663
682
  tempId: item.templd,
664
683
  filePath: item.filePath,
665
- entryTime: item?.entryTime || item?.entryTme || '',
684
+ entryTime: item?.entryTime || item?.entryTme || "",
666
685
  exitTime: item.exitTime,
667
686
  timeRange: item.timeRange,
668
- isChecked: item.isChecked
687
+ isChecked: item.isChecked,
669
688
  });
670
689
  payload.houseKeepingCount++;
671
690
  }
@@ -674,9 +693,11 @@ export class ImgRvpsComponent {
674
693
  // 👇 Return or assign
675
694
  this.tempRaisedPayload = payload;
676
695
  this.cd.detectChanges();
677
- const modalRef = this.modalService.open(this.raisedPopup, { centered: true, size: 'md',
678
- backdrop: 'static',
679
- keyboard: false
696
+ const modalRef = this.modalService.open(this.raisedPopup, {
697
+ centered: true,
698
+ size: "md",
699
+ backdrop: "static",
700
+ keyboard: false,
680
701
  });
681
702
  }
682
703
  cancelRasied() {
@@ -688,26 +709,31 @@ export class ImgRvpsComponent {
688
709
  submitRaised() {
689
710
  const payload = this.tempRaisedPayload; // fresh data for API
690
711
  this.getRaisedData = payload;
691
- this.rvpsService.getCreateRaisedTag(payload)
712
+ this.rvpsService
713
+ .getCreateRaisedTag(payload)
692
714
  .pipe(takeUntil(this.destroy$))
693
715
  .subscribe({
694
716
  next: (res) => {
695
717
  if (res && res.code === 200) {
696
- this.toast.getSuccessToast(res?.message || 'Ticket updated successfully');
718
+ this.toast.getSuccessToast(res?.message || "Ticket updated successfully");
697
719
  this.imageFlow = false;
698
720
  this.getRevops();
699
721
  this.cancelRasied();
700
722
  this.selectedRadioType = undefined;
701
- this.selectedType = '';
723
+ this.selectedType = "";
702
724
  }
703
725
  else {
704
- this.toast.getErrorToast('Failed to update');
726
+ this.toast.getErrorToast("Failed to update");
705
727
  }
706
728
  },
707
729
  error: (err) => {
708
- const msg = err.error?.error || err.error || err?.error?.message || err.message || 'Unknown error';
730
+ const msg = err.error?.error ||
731
+ err.error ||
732
+ err?.error?.message ||
733
+ err.message ||
734
+ "Unknown error";
709
735
  this.toast.getErrorToast(msg);
710
- }
736
+ },
711
737
  });
712
738
  }
713
739
  // onImageCheckboxChange(img: any, type: string) {
@@ -764,9 +790,11 @@ export class ImgRvpsComponent {
764
790
  imagePopup;
765
791
  selectedImageArray(url, data) {
766
792
  this.isModalOpen = true;
767
- const modalRef = this.modalService.open(this.imagePopup, { centered: true, size: 'lg',
768
- backdrop: 'static',
769
- keyboard: false
793
+ const modalRef = this.modalService.open(this.imagePopup, {
794
+ centered: true,
795
+ size: "lg",
796
+ backdrop: "static",
797
+ keyboard: false,
770
798
  });
771
799
  }
772
800
  closeImage() {
@@ -779,7 +807,7 @@ export class ImgRvpsComponent {
779
807
  }
780
808
  const { duplicate, housekeeping, employee } = this.countData;
781
809
  // Check count condition
782
- const hasCount = (duplicate > 0 || housekeeping > 0 || employee > 0);
810
+ const hasCount = duplicate > 0 || housekeeping > 0 || employee > 0;
783
811
  // Convert folderDate to Date
784
812
  const folder = new Date(this.folderDate);
785
813
  const today = new Date();
@@ -821,12 +849,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
821
849
  args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n<button \r\n [disabled]=\"!canEnableButton()\" \r\n class=\"btn btn-primary\" \r\n type=\"button\" \r\n (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n</button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n<ng-container *ngIf=\"!(countData?.length > 0)\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n</ng-container>\r\n\r\n </div>\r\n<ng-container *ngIf=\"!imageFlow\">\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n*ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n<!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n<ng-container >\r\n<img\r\nclass=\"img-src cursor-pointer\"\r\n[src]=\"imageUrl + obj?.filePath\"\r\n(error)=\"obj.filePath = null\"\r\nalt=\"\"\r\n(click)=\"imgFullView(obj)\"\r\n/>\r\n</ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span></div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"title-type\">\r\n Select non-shopper type\r\n </div>\r\n\r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"editBtnShow\">\r\n\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n \r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input \r\n *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-model>\r\n <div class=\"mx-4\">\r\n <div class=\"row\">\r\n <div class=\" p-2 mb-2 mt-5\">\r\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\" cursor-pointer w-100 h-525px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n\r\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n \r\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n \r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>", styles: [".switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}::ng-deep .modal-backdrop{pointer-events:none}\n"] }]
822
850
  }], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i5.TrafficRvpsService }], propDecorators: { zoomPopup: [{
823
851
  type: ViewChild,
824
- args: ['zoomPopup']
852
+ args: ["zoomPopup"]
825
853
  }], raisedPopup: [{
826
854
  type: ViewChild,
827
- args: ['raisedPopup']
855
+ args: ["raisedPopup"]
828
856
  }], imagePopup: [{
829
857
  type: ViewChild,
830
- args: ['imagePopup']
858
+ args: ["imagePopup"]
831
859
  }] } });
832
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQU9qQjtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFYVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7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LEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUNqRCxDQUFDO0lBQ0osQ0FBQzt3R0F4OEJVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLG9WQ3BCN0IsbWtnRkFvOEJjOzs0RkRoN0JELGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3VPQWdtQkYsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQXVGSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBdU1DLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsRWxlbWVudFJlZixWaWV3Q2hpbGRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcmFmZmljUnZwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy1ydnBzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWltZy1ydnBzXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEltZ1J2cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHN0b3JlSWRhcnJheTogYW55O1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YSA9IGZhbHNlO1xyXG4gIG5vcm1hbGl6ZTogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUcmFmZmljU2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJ2cHNTZXJ2aWNlOiBUcmFmZmljUnZwc1NlcnZpY2VcclxuICApIHt9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG4gIGlzQWNjb3JkaW9uRXhwYW5kZWQgPSB0cnVlO1xyXG4gIHRvZ2dsZUFjY29yZGlvbigpIHtcclxuICAgIHRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZCA9ICF0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQ7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRJbml0YWwoKTtcclxuICB9XHJcbiAgZ2V0SW5pdGFsKCkge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgxMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAhPT0gbnVsbCB8fCBkYXRhPy5jbGllbnQgIT09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSA9IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXHJcbiAgICAgICAgICAgIC5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgICAgICAgdGhpcy5iYWNrVG9Gb290ZmFsbCgpO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlID09PSB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmJhY2tuYXYgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0aW1hZ2VzKDAsIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5iYWNrbmF2ID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmFja1RvRm9vdGZhbGwoKSB7XHJcbiAgICB0aGlzLmZvbGRlclZpZXcgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICB0aGlzLnR5cGUgPSdmb290ZmFsbCc7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9Jyc7XHJcbiAgfVxyXG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XHJcbiAgYmFja25hdjogYm9vbGVhbjtcclxuICBkYXRlQXJyYXk6IGFueTtcclxuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xyXG4gICAgY29uc3QgZGF0ZXMgPSB0aGlzLmdldERhdGVSYW5nZUFycmF5KFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRvRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGVzIGFyZSB2YWxpZFxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxyXG4gICAgbGV0IGN1cnJlbnREYXRlID0gc3RhcnQ7XHJcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XHJcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcclxuICAgICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyAxKTsgLy8gSW5jcmVtZW50IHRoZSBkYXRlIGJ5IDEgZGF5XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICB9XHJcbiAgc2VsZWN0ZWRUaW1lOiBhbnk7XHJcbiAgZm9sZGVyTmFtZTogYW55O1xyXG4gIHNlbGVjdGVkVGltZXModmFsOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICB9XHJcbiAgZm9sZGVyRGF0ZTogYW55O1xyXG4gIGltYWdlRmxvdyA9IGZhbHNlO1xyXG4gIC8vIGdldCBSZXZvcHMgQXBpXHJcbiAgZ2V0UnZwc0xpc3Q6IGFueTtcclxuICBnZXRSdnBzSW1hZ2VMaXN0OiBhbnk7XHJcbiAgb2JqZWN0c0FycmF5OiBhbnk7XHJcbiAgaW1hZ2VzQXJyYXlEYXRhOiBhbnk7XHJcbiAgc2VsZWN0SW5kZXg6IGFueSA9IDA7XHJcbiAgZm9vdGZhbGxEYXRlOiBhbnk7XHJcbiAgbGVuZ3RoVmFsdWU6IGJvb2xlYW47XHJcbiAgZ2V0aW1hZ2VzKGluZGV4OiBhbnksIG9iajogYW55KSB7XHJcbnRoaXMub2JqZWN0c0FycmF5ID1bXTtcclxuICAgIHRoaXMuc2VsZWN0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZm9sZGVyRGF0ZSA9IG9iajtcclxuICAgICh0aGlzLmZvb3RmYWxsRGF0ZSA9IG9iaiksICh0aGlzLmZvbGRlclZpZXcgPSBmYWxzZSk7XHJcbiAgICB0aGlzLnNlcnZpY2U/Lmlzbm9ybWFsaXplU291cmNlXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICA/LnN1YnNjcmliZSgobm9ybWFsaXplOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcclxuICAgICAgICBpZiAoIW5vcm1hbGl6ZSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldFRvdGFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgY291bnREYXRhOiBhbnk9W107XHJcbiAgZ2V0VG90YWwoKSB7XHJcbiAgICB0aGlzLmNvdW50RGF0YSA9W107XHJcbiAgICBjb25zdCBzdG9yZUlkID1cclxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRUb3RhbFZhbChzdG9yZUlkLCBkYXRlU3RyaW5nKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBpZih0aGlzLmdldFJ2cHNMaXN0Py5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY291bnREYXRhKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGltYWdlVXJsOiBhbnk7XHJcbiAgcmV2b3BzVHlwZUNvdW50OiBhbnk7XHJcbiAgY3VycmVudFRpbWVSYW5nZURhdGEgOmFueT1bXTtcclxuICBvdmVyYWxsQXJyYXlEYXRhOmFueT1bXTthbGxGb290ZmFsbERhdGE6YW55ID1bXTtcclxuZ2V0VGlja2V0U3RhdHVzZXMoKTogc3RyaW5nW10ge1xyXG4gIGNvbnN0IHN0YXR1c0xpc3QgPSB0aGlzLmdldFJ2cHNMaXN0Py50aWNrZXRTdGF0dXM7XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RhdHVzTGlzdCkpIHtcclxuICAgIHJldHVybiBzdGF0dXNMaXN0XHJcbiAgICAgIC5tYXAoKHMpID0+IHM/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTsgLy8gUmVtb3ZlcyBudWxsL3VuZGVmaW5lZFxyXG4gIH1cclxuICByZXR1cm4gW107XHJcbn1cclxuZ2V0UmV2b3BzKCkge1xyXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuLy8gdGhpcy5vYmplY3RzQXJyYXkgPVtdO1xyXG4vLyB0aGlzLm92ZXJhbGxBcnJheURhdGEgPVtdO1xyXG4vLyB0aGlzLmdldFJ2cHNMaXN0ID1bXTtcclxuLy8gdGhpcy5nZXRSdnBzSW1hZ2VMaXN0PVtdO1xyXG4vLyB0aGlzLmFsbEZvb3RmYWxsRGF0YSA9W11cclxuICBjb25zdCBzdG9yZUlkID1cclxuICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcclxuICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxyXG4gICAgICA6IG51bGw7XHJcbiAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCAnJztcclxuICBjb25zdCBncm91cEJ5S2V5ID0gJ3RpbWUnO1xyXG4gIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUgPT09J2Zvb3RmYWxsJyA/ICcnIDogdGhpcy50eXBlIHx8ICcnO1xyXG4gIGNvbnN0IHByb2Nlc3NUeXBlID0gJ2Zvb3RmYWxsJztcclxuXHJcbiAgdGhpcy5ydnBzU2VydmljZVxyXG4gICAgLmdldFJ2cHNMaXN0QXBpKHN0b3JlSWQsIGRhdGVTdHJpbmcsIGdyb3VwQnlLZXksIHR5cGUsIHByb2Nlc3NUeXBlKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICBcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmltYWdlVXJsID0gdGhpcy5ydnBzU2VydmljZT8uZm9vdGZhbGxDRE47XHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuXHJcbiAgICAgICAgICAvLyBTYXZlIHRoZSBmdWxsIGZvb3RmYWxsIGRhdGEgKGdyb3VwZWQgYnkgdGltZVJhbmdlKVxyXG4gICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZm9vdGZhbGxEYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgIC8vIENyZWF0ZSB0aW1lUmFuZ2UgKyBjb3VudCBvYmplY3RcclxuICAgICAgIGNvbnN0IHRpbWVSYW5nZXMgPSB0aGlzLmFsbEZvb3RmYWxsRGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS50aW1lUmFuZ2UpO1xyXG50aGlzLm9iamVjdHNBcnJheSA9IHRpbWVSYW5nZXMubWFwKCh0aW1lUmFuZ2U6YW55KSA9PiAoe1xyXG4gIHRpbWVSYW5nZSxcclxuICBjb3VudDogdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZCgoZDphbnkpID0+IGQudGltZVJhbmdlID09PSB0aW1lUmFuZ2UpPy5kYXRhPy5sZW5ndGggfHwgMCxcclxufSkpOyAgICBcclxuLy8gT25seSByZXNldCBpZiBwcmV2aW91cyBzZWxlY3RlZCB0aW1lIGlzIE5PVCBpbiB0aGUgbmV3IGxpc3RcclxuaWYgKCF0aW1lUmFuZ2VzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUaW1lKSkge1xyXG4gIHRoaXMuc2VsZWN0ZWRUaW1lcyh0aGlzLm9iamVjdHNBcnJheVswXS50aW1lUmFuZ2UpO1xyXG59XHJcblxyXG4gICAgICAgICAgLy8gR2V0IGRhdGEgZm9yIHRoZSBzZWxlY3RlZCB0aW1lUmFuZ2VcclxuICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEgPVxyXG4gICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5maW5kKFxyXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlID09PSB0aGlzLnNlbGVjdGVkVGltZVxyXG4gICAgICAgICAgICApPy5kYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgIC8vIENvdW50IHJldm9wc1R5cGVzXHJcbiAgICAgICAgICBjb25zdCByZXZvcHNUeXBlQ291bnQ6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XHJcbiAgICAgICAgICAgICdub24tdGFnZ2luZyc6IDAsXHJcbiAgICAgICAgICAgIGR1cGxpY2F0ZTogMCxcclxuICAgICAgICAgICAgZW1wbG95ZWU6IDAsXHJcbiAgICAgICAgICAgICdob3VzZS1rZWVwaW5nJzogMCxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgbGV0IHRvdGFsQ291bnQgPSAwO1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XHJcblxyXG4gICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICBpdGVtLmRhdGE/LmZvckVhY2goKGltYWdlOiBhbnkpID0+IHtcclxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5wdXNoKGltYWdlKTtcclxuICAgIHRvdGFsQ291bnQrKztcclxuXHJcbiAgICBjb25zdCB0eXBlID0gaW1hZ2UucmV2b3BzVHlwZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkgfHwgJ3Vua25vd24nO1xyXG5cclxuICAgIGlmICh0eXBlID09PSAnbm9uLXRhZ2dpbmcnKSB7XHJcbiAgICAgIHJldm9wc1R5cGVDb3VudFsnbm9uLXRhZ2dpbmcnXSsrO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW1wbG95ZWUnKSB7XHJcbiAgICAgIHJldm9wc1R5cGVDb3VudFsnZW1wbG95ZWUnXSsrO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnaG91c2Uta2VlcGluZycpIHtcclxuICAgICAgcmV2b3BzVHlwZUNvdW50Wydob3VzZS1rZWVwaW5nJ10rKztcclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgQ291bnQgZHVwbGljYXRlcyBvbmx5IGZyb20gZHVwbGljYXRlSW1hZ2VQYXRoXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAgIHJldm9wc1R5cGVDb3VudFsnZHVwbGljYXRlJ10gKz0gaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aDtcclxuICAgIH1cclxuICB9KTtcclxufSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb3VudERhdGEgPSB7XHJcbiAgICAgICAgICAgIGZvb3RmYWxsQ291bnQ6IHRvdGFsQ291bnQsXHJcbiAgICAgICAgICAgIG5vblRhZ3M6IHJldm9wc1R5cGVDb3VudFsnbm9uLXRhZ2dpbmcnXSxcclxuICAgICAgICAgICAgZHVwbGljYXRlOiByZXZvcHNUeXBlQ291bnRbJ2R1cGxpY2F0ZSddLFxyXG4gICAgICAgICAgICBlbXBsb3llZTogcmV2b3BzVHlwZUNvdW50WydlbXBsb3llZSddLFxyXG4gICAgICAgICAgICBob3VzZWtlZXBpbmc6IHJldm9wc1R5cGVDb3VudFsnaG91c2Uta2VlcGluZyddLFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAvLyBBcHBseSB0eXBlIGZpbHRlciBhZnRlciBsb2FkaW5nIHRpbWVSYW5nZSBkYXRhXHJcbiAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xyXG50aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSW4gY2FzZSBvZiBmYWlsdXJlXHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY291bnREYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zdCBtc2cgPSBlcnIuZXJyb3IuZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTsgICBcclxuICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuICAgICAgICAgIHRoaXMuY291bnREYXRhID1bXTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG59XHJcblxyXG5vcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHM6YW55O1xyXG5lZGl0VmFsdWUoKSB7XHJcbiAgY29uc3QgdHlwZSA9ICh0aGlzLnNlbGVjdGVkVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICBjb25zdCBzZWxlY3RlZEltYWdlID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG4gIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gc2VsZWN0ZWRJbWFnZT8udGVtcGxkO1xyXG5cclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgQXJyYXkuaXNBcnJheShzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcclxuICAgIC8vIDEuIENvbnZlcnQgZHVwbGljYXRlIGNoaWxkcmVuIGludG8gY29uc2lzdGVudCBvYmplY3RzIHdpdGggcGFyZW50IHJlZmVyZW5jZVxyXG4gICAgY29uc3QgZHVwbGljYXRlQ2hpbGRyZW4gPSBzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5tYXAoKGNoaWxkOiBhbnkpID0+ICh7XHJcbiAgICAgIC4uLmNoaWxkLFxyXG4gICAgICBwYXJlbnQ6IHNlbGVjdGVkVGVtcGxkLFxyXG4gICAgICBzZWxlY3RlZDogdHJ1ZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIDIuIENvbGxlY3QgdGhlIHRlbXBsZCB2YWx1ZXMgb2YgZHVwbGljYXRlIGNoaWxkcmVuXHJcbiAgICBjb25zdCBkdXBsaWNhdGVDaGlsZElkcyA9IGR1cGxpY2F0ZUNoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSkgPT4gY2hpbGQudGVtcElkKTtcclxuXHJcbiAgICAvLyAzLiBGaWx0ZXIgb3V0IG5vbi10YWdnaW5nIGltYWdlcyBleGNlcHQgdGhlIHNlbGVjdGVkIHBhcmVudCAmIGl0cyBjaGlsZHJlblxyXG4gICAgY29uc3Qgbm9uVGFnZ2luZ0ltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzTm9uVGFnZ2luZyA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ25vbi10YWdnaW5nJztcclxuICAgICAgY29uc3QgaXNOb3RTZWxlY3RlZCA9IGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkICYmICFkdXBsaWNhdGVDaGlsZElkcy5pbmNsdWRlcyhpbWcudGVtcGxkKTtcclxuICAgICAgcmV0dXJuIGlzTm9uVGFnZ2luZyAmJiBpc05vdFNlbGVjdGVkO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gNC4gTWVyZ2UgZHVwbGljYXRlIGNoaWxkcmVuICsgb3RoZXIgbm9uLXRhZ2dpbmcgaW1hZ2VzXHJcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbLi4uZHVwbGljYXRlQ2hpbGRyZW4sIC4uLm5vblRhZ2dpbmdJbWFnZXNdO1xyXG5cclxuICAgIC8vIDUuIE1hcmsgc2VsZWN0ZWQ6IG9ubHkgZHVwbGljYXRlIGltYWdlcyB0aGF0IHdlcmUgbWFya2VkIGlzQ2hlY2tlZFxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gKGltZy5yZXZvcHNUeXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZHVwbGljYXRlJztcclxuICAgICAgaW1nLnNlbGVjdGVkID0gaXNEdXBsaWNhdGUgJiYgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIDYuIFN0b3JlIG9yaWdpbmFsIGNoZWNrZWQgSURzIHRvIGNvbXBhcmUgbGF0ZXIgZHVyaW5nIHN1Ym1pdFxyXG4gICAgdGhpcy5vcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcclxuICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5pc0NoZWNrZWQgPT09IHRydWUpXHJcbiAgICAgIC5tYXAoKGltZzogYW55KSA9PiBpbWcudGVtcGxkKTtcclxuXHJcbiAgICAvLyDinIUgNy4gRmlsbCBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Qgd2l0aCBwcmUtc2VsZWN0ZWQgZHVwbGljYXRlc1xyXG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZHVwbGljYXRlJyAmJlxyXG4gICAgICAgIGltZy5pc0NoZWNrZWQgPT09IHRydWVcclxuICAgICkubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgICAgLi4uaW1nLFxyXG4gICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgc2VsZWN0ZWRUZW1wbGQsXHJcbiAgICAgIGlzQ2hlY2tlZDogdHJ1ZVxyXG4gICAgfSkpO1xyXG5cclxuICB9IGVsc2Uge1xyXG4gICAgLy8gTm90IGR1cGxpY2F0ZSB0eXBlIOKGkiBzaG93IG9ubHkgc2VsZWN0ZWQgdHlwZSAoZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGVkIGltYWdlKVxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGltZ1R5cGUgPT09IHR5cGUgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsMSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gIH1cclxuICBzZWxlY3RJbWFnZUFycmF5OiBhbnk7XHJcbiAgcmVtYWluaW5nSW1hZ2VBcnJheTogYW55O1xyXG4gIHJldm9wc1R5cGVWYWx1ZSA9ZmFsc2U7XHJcblxyXG5lZGl0QnRuU2hvdyA9IGZhbHNlO1xyXG5pbWdGdWxsVmlldyhvYmo6IGFueSkge1xyXG4gIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcclxuICB0aGlzLmltYWdlRmxvdyA9IHRydWU7XHJcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcclxuICB0aGlzLnNlbGVjdGVkVHlwZSA9ICcnO1xyXG4gIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gIGxldCBmaWx0ZXJlZEJ5VHlwZTogYW55W10gPSBbXTtcclxuXHJcbiAgLy8g4pyFIDEuIFNwZWNpYWwgY2FzZSBmb3IgZHVwbGljYXRlIHR5cGUgd2l0aCBjaGlsZCBpbWFnZXNcclxuICBpZiAob2JqLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdkdXBsaWNhdGUnICYmIEFycmF5LmlzQXJyYXkob2JqLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcclxuICAgIC8vIEV4dHJhY3QgY2hpbGRyZW5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gb2JqLmR1cGxpY2F0ZUltYWdlUGF0aC5tYXAoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgLy8gVHJ5IHRvIGZpbmQgbWF0Y2hpbmcgaXRlbSBmcm9tIG92ZXJhbGxBcnJheURhdGEgKGJ5IHRlbXBJZClcclxuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gY2hpbGQudGVtcElkKTtcclxuXHJcbiAgICAgIC8vIFByZWZlciBtYXRjaGVkIGl0ZW0gaWYgZm91bmQsIG90aGVyd2lzZSB1c2Ugb3JpZ2luYWwgY2hpbGRcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5jaGlsZCxcclxuICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXHJcbiAgICAgICAgcGFyZW50OiBvYmoudGVtcGxkICAvLyBUYWcgd2l0aCBwYXJlbnQgSURcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSBNZXJnZSBwYXJlbnQgYW5kIGNoaWxkcmVuIGZvciBkaXNwbGF5XHJcbiAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcclxuICAgaWYgKG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqPy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApIHtcclxuICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XHJcbiAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyDinIUgMi4gRGVmYXVsdCBsb2dpYyBmb3Igb3RoZXIgdHlwZXNcclxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyDinIUgMy4gRGV0ZXJtaW5lIHNlbGVjdGVkIGltYWdlIGluZGV4XHJcbiAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGZpbHRlcmVkQnlUeXBlLmZpbmRJbmRleCgoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGQpO1xyXG5cclxuICAvLyDinIUgNC4gUmVtYWluaW5nIGltYWdlcyB0byBzaG93L2VkaXRcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXHJcbiAgICAoXzogYW55LCBpOiBudW1iZXIpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICApO1xyXG5cclxuICAvLyDinIUgNS4gSGFuZGxlIHJldm9wcyB0eXBlIGZvciByYWRpbyBVSVxyXG4gIGlmIChcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgfHxcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2VtcGxveWVlJyB8fFxyXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSAnaG91c2Uta2VlcGluZydcclxuICApIHtcclxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xyXG4gICAgdGhpcy5vblJhZGlvQ2hhbmdlKG9iaj8ucmV2b3BzVHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5pbWdTd2FwKG9iajogYW55KSB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xyXG4gICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXHJcbiAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBSZXBsYWNlIHNlbGVjdGVkSW1hZ2VBcnJheSBiYWNrIGludG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uXHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVtpbmRleF0gPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBmYWxsYmFjayBpZiBub3QgZm91bmRcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LnB1c2godGhpcy5zZWxlY3RJbWFnZUFycmF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcclxuXHJcbiAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxyXG4gICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXHJcbiAgKTtcclxuXHJcbiAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xyXG59XHJcblxyXG4gIFxyXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxyXG5zZWxlY3RlZFJhZGlvVHlwZTphbnk7XHJcbm9uUmFkaW9DaGFuZ2UodmFsOiBhbnkpIHtcclxuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcclxuICAgIC8vIOKchSBTaG93IG9ubHkgbm9uLXRhZ2dpbmcgaW1hZ2VzIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWRJbWFnZSlcclxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XHJcblxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGltZ1R5cGUgPT09ICdub24tdGFnZ2luZycgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgT3B0aW9uYWw6IHNldCBhbGwgYXMgdW5zZWxlY3RlZCBpbml0aWFsbHlcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfSBcclxuXHJcbiAgLy8g4pyFIERlYnVnXHJcbiAgLy8gY29uc29sZS5sb2coJ1JlbWFpbmluZyBpbWFnZSBsaXN0IGFmdGVyIHJhZGlvIGNoYW5nZTonLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpO1xyXG59XHJcblxyXG5cclxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XHJcbnNlbGVjdFBsYW5UcmVuZHModHlwZTogYW55KSB7XHJcblxyXG4gIHRoaXMudHlwZSA9IHR5cGU7XHJcblxyXG4gIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XHJcbn1cclxuYXBwbHlGaWx0ZXJzKCkge1xyXG4gIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcblxyXG4gIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XHJcbiAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRUeXBlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXHJcbiAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFsuLi50aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhXTtcclxuICB9IGVsc2UgIHtcclxuICAgIC8vIEZvciB0YWdnZWQgdHlwZXMgbGlrZSAnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNla2VlcGluZydcclxuICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxyXG4gICAgKTtcclxuICB9IFxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgLy8gTm9uLXRhZ2dpbmcgbWVhbnMgbm8gcmV2b3BzVHlwZSAtIHNob3cgYWxsIHVubWF0Y2hlZCAobm8gdGFnKVxyXG4gIC8vICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gIC8vICAgICAhaXRlbS5yZXZvcHNUeXBlXHJcbiAgLy8gICApO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcclxuICB0aGlzLm5vRGF0YSA9ICF0aGlzLmltYWdlc0FycmF5RGF0YT8ubGVuZ3RoO1xyXG5cclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG5oYW5kbGVJbWFnZUNsaWNrKGV2dDogYW55LCBvYmo6IGFueSkge1xyXG4gIC8vIE9ubHkgdG9nZ2xlIGNoZWNrYm94IGlmIHJhZGlvIGlzICdkdXBsaWNhdGUnIGFuZCBpbWFnZSBpcyBub3QgYWxyZWFkeSB0YWdnZWRcclxuICBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgIShvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKSkge1xyXG4gICAgdGhpcy5vbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0LCBvYmosICdkdXBsaWNhdGUnKTtcclxuICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICB0aGlzLmltZ1N3YXAob2JqKTsgLy8gZXhpc3Rpbmcgbm9uLWR1cGxpY2F0ZSBjbGljayBiZWhhdmlvclxyXG4gIH1cclxufVxyXG5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Q6YW55PVtdO1xyXG5cclxub25JbWFnZUNoZWNrYm94Q2hhbmdlKGV2dDogYW55LCBpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICBjb25zdCB0b3RhbEltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBhbHJlYWR5VGFnZ2VkQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDA7XHJcbi8vIGNvbnNvbGUubG9nKHRvdGFsSW1hZ2VzKVxyXG4vLyBjb25zb2xlLmxvZyhhbHJlYWR5VGFnZ2VkQ291bnQpXHJcbiAgICAvLyBUb3RhbCB0YWdnYWJsZSBjb3VudCA9IGFscmVhZHkgdGFnZ2VkICsgc2VsZWN0ZWQgbm93XHJcbiAgICBjb25zdCBtYXhTZWxlY3RhYmxlID0gTWF0aC5yb3VuZCgodG90YWxJbWFnZXMpICogMC4yKTtcclxuLy8gY29uc29sZS5sb2cobWF4U2VsZWN0YWJsZSlcclxuICAgIC8vIENvdW50IHNlbGVjdGVkIG5vdyAoaW4gVUkpXHJcbiAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3Qgd2lsbFNlbGVjdCA9ICFpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDEwJSBjYXBcclxuICAgIGlmICh3aWxsU2VsZWN0ICYmIChjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50KSA+PSBtYXhTZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxyXG4gICAgICAgIGBZb3UgY2FuIHNlbGVjdCBvbmx5ICR7bWF4U2VsZWN0YWJsZX0gaW1hZ2VzICgke3RoaXMuZ2V0UnZwc0xpc3Q/LmRhdGE/LmNvbmZpZz8uZHVwbGljYXRlID8/ICcyMCUnfSBvZiB0b3RhbCBmb290ZmFsbClgXHJcbiAgICAgICk7XHJcbiAgICAgIGV2dC50YXJnZXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSBQcm9jZWVkIHdpdGggc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgaW1nLnNlbGVjdGVkID0gIWltZy5zZWxlY3RlZDtcclxuICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgLy8g4pyFIEFsd2F5cyByZWJ1aWxkIHRoZSBzZWxlY3RlZCBsaXN0XHJcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxyXG4gICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpXHJcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIHBhcmVudDogaXRlbS5wYXJlbnQgfHwgdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQsXHJcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygn4pyFIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdDonLCB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuY2xlYXJWYWx1ZSgpe1xyXG4gIHRoaXMuc2F2ZSgnbm9uLXRhZ2dpbmcnKTtcclxuLy8gdGhpcy5zdWJtaXRWYWx1ZSgnbm9uLXRhZ2dpbmcnKVxyXG59XHJcbmNhbmNlbCgpIHtcclxuICAvLyAxLiBDbGVhciBzZWxlY3RlZCBkdXBsaWNhdGUgaW1hZ2VzIGxpc3RcclxuICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xyXG5cclxuICAvLyAyLiBSZXNldCBhbGwgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBpbiBvdmVyYWxsIGltYWdlIGxpc3RcclxuICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgIC4uLmltZyxcclxuICAgIGlzQ2hlY2tlZDogZmFsc2UsXHJcbiAgICBzZWxlY3RlZDogZmFsc2UsICAgIC8vIGFzc3VtaW5nICdzZWxlY3RlZCcgaXMgY2hlY2tib3ggYmluZFxyXG4gICAgcGFyZW50OiBudWxsLCAgICAgICAvLyByZXNldCBwYXJlbnQgaWYgdXNlZFxyXG4gICAgLy8gQWRkIG90aGVyIGZsYWdzIGhlcmUgaWYgbmVlZGVkXHJcbiAgfSkpO1xyXG5cclxuICAvLyAzLiBDbG9zZSBpbWFnZSBmbG93L2Z1bGwtdmlldyBpZiBvcGVuXHJcbiAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuXHJcbiAgLy8gNC4gUmVzZXQgY3VycmVudGx5IHNlbGVjdGVkIGltYWdlXHJcbiAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcclxuICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcclxuXHJcbiAgLy8gNS4gKE9wdGlvbmFsKSBSZXNldCByYWRpbyBidXR0b25zIOKAlCBpZiB5b3UgaGF2ZSBhbnkgc3BlY2lmaWMgZmxhZ1xyXG4gdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxufVxyXG5wb3B1cFR5cGU6YW55O1xyXG5AVmlld0NoaWxkKCd6b29tUG9wdXAnKSB6b29tUG9wdXA6IEVsZW1lbnRSZWY7XHJcbnNhdmUoY2F0ZWdvcnk6IGFueSkge1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy56b29tUG9wdXAsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsXHJcbiAgICBiYWNrZHJvcDogJ3N0YXRpYycsICAgLy8gUHJldmVudCBjbG9zaW5nIG9uIG91dHNpZGUgY2xpY2tcclxuICBrZXlib2FyZDogZmFsc2UgICAgICAgLy8gUHJldmVudCBjbG9zaW5nIG9uIEVTQyBrZXlcclxuICB9KTtcclxuICAgIHRoaXMucG9wdXBUeXBlID0gY2F0ZWdvcnk7XHJcbn1cclxuXHJcbmNhbmNlbFN1Ym1pdCgpe1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcbn1cclxuc3VibWl0VmFsdWUoY2F0ZWdvcnk6IGFueSkge1xyXG4gIGxldCBkdXBsaWNhdGVJbWFnZXMgPSBbXTtcclxuXHJcbiAgaWYgKGNhdGVnb3J5ID09PSAnZHVwbGljYXRlJykge1xyXG4gICAgZHVwbGljYXRlSW1hZ2VzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuc2VsZWN0ZWQgPT09IHRydWUpXHJcbiAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xyXG4gICAgICAgIHRlbXBJZDogaW1nLnRlbXBsZCB8fCBpbWcudGVtcElkIHx8ICcnLFxyXG4gICAgICAgIHRpbWVSYW5nZTogaW1nLnRpbWVSYW5nZSB8fCAnJyxcclxuICAgICAgICBlbnRyeVRpbWU6IGltZy5lbnRyeVRpbWUgfHwgaW1nLmVudHJ5VG1lIHx8ICcnLFxyXG4gICAgICAgIGV4aXRUaW1lOiBpbWcuZXhpdFRpbWUgfHwgJycsXHJcbiAgICAgICAgZmlsZVBhdGg6IGltZy5maWxlUGF0aCxcclxuICAgICAgICByZXZvcHNUeXBlOiAnZHVwbGljYXRlJyxcclxuICAgICAgICBpc0NoZWNrZWQ6IHRydWVcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW1nID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG5cclxuICBjb25zdCBvYmogPSB7XHJcbiAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgOiBudWxsLFxyXG4gICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8ICcnLFxyXG4gICAgdGVtcElkOiBpbWc/LnRlbXBsZCB8fCAwLFxyXG4gICAgcmV2b3BzVHlwZTogY2F0ZWdvcnksXHJcbiAgICB0aW1lUmFuZ2U6IGltZz8udGltZVJhbmdlIHx8ICcnLFxyXG4gICAgaXNDaGVja2VkOiB0cnVlLFxyXG4gICAgZHVwbGljYXRlSW1hZ2U6IGR1cGxpY2F0ZUltYWdlcyxcclxuICAgIHByb2Nlc3NUeXBlOiBpbWc/LnByb2Nlc3NUeXBlIHx8ICdmb290ZmFsbCcsXHJcbiAgICBlbnRyeVRpbWU6IGltZz8uZW50cnlUaW1lIHx8IGltZz8uZW50cnlUbWUgfHwgJycsXHJcbiAgICBleGl0VGltZTogaW1nPy5leGl0VGltZSB8fCAnJyxcclxuICAgIGZpbGVQYXRoOiBpbWc/LmZpbGVQYXRoIHx8ICcnXHJcbiAgfTtcclxuXHJcbiAgdGhpcy5ydnBzU2VydmljZS5nZXRSdnBzVGFnKG9iailcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSB8fCAnVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsU3VibWl0KCk7IFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDsgICAgXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICcnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byB1cGRhdGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtc2cgPSBlcnIuZXJyb3I/LmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuICBub0RhdGFNZXNzYWdlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICBkdXBsaWNhdGU6ICdObyBkdXBsaWNhdGVzIGZvdW5kJyxcclxuICBlbXBsb3llZTogJ05vIGVtcGxveWVlL3N0YWZmIGZvdW5kJyxcclxuICAnaG91c2Uta2VlcGluZyc6ICdObyBob3VzZSBrZWVwaW5nIGZvdW5kJyxcclxuICAnbm9uLXRhZ2dpbmcnOiAnTm8gbm9uLXRhZ2dpbmcgZm91bmQnXHJcbn07XHJcblxyXG50ZW1wUmFpc2VkUGF5bG9hZDogYW55ID0gbnVsbDsgLy8gY2xhc3MtbGV2ZWwgdmFyaWFibGUgZm9yIHByZXZpZXdcclxuXHJcbnByZXBhcmVSYWlzZWRQYXlsb2FkKHNob3dPbmx5ID0gZmFsc2UpOiBhbnkge1xyXG4gXHJcbn1cclxuXHJcbkBWaWV3Q2hpbGQoJ3JhaXNlZFBvcHVwJykgcmFpc2VkUG9wdXA6IEVsZW1lbnRSZWY7XHJcblJhaXNlZCgpe1xyXG5cclxuICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlLFxyXG4gICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXHJcbiAgICB0aWNrZXROYW1lOiAnZm9vdGZhbGwtZGlyZWN0b3J5JyxcclxuICAgIGZvb3RmYWxsQ291bnQ6IDAsXHJcbiAgICBkdXBsaWNhdGVDb3VudDogMCxcclxuICAgIGVtcGxveWVlQ291bnQ6IDAsXHJcbiAgICBob3VzZUtlZXBpbmdDb3VudDogMCxcclxuICAgIGNvbW1lbnRzOiB0aGlzLmNvbW1lbnRUZXh0IHx8ICcnLFxyXG4gICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcclxuICAgIGhvdXNlS2VlcGluZzogW10sXHJcbiAgICBlbXBsb3llZTogW10sXHJcbiAgfTtcclxuXHJcbmxldCB0b3RhbENoZWNrZWRDb3VudCA9IDA7XHJcblxyXG50aGlzLm92ZXJhbGxBcnJheURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgY29uc3QgdHlwZSA9IGl0ZW0ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xyXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xyXG5cclxuICAvLyDinIUgQ291bnQgb25seSBpZiBpdGVtIGlzIGNoZWNrZWQgQU5EIHJldm9wc1R5cGUgaXMgJ25vbi10YWdnaW5nJ1xyXG4gIC8vIGNvbnN0IGlzTm90VGFnZ2VkID0gdHlwZSA9PT0gJ25vbi10YWdnaW5nJztcclxuXHJcbiAgLy8gaWYgKGlzTm90VGFnZ2VkKSB7XHJcbiAgLy8gICB0b3RhbENoZWNrZWRDb3VudCsrO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gRFVQTElDQVRFIFRZUEVcclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgQXJyYXkuaXNBcnJheShpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcclxuICAgIGNvbnN0IG5lc3RlZERhdGEgPSBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aFxyXG4gICAgICAuZmlsdGVyKChkdXA6IGFueSkgPT4gZHVwLmlzQ2hlY2tlZClcclxuICAgICAgLm1hcCgoZHVwOiBhbnkpID0+ICh7XHJcbiAgICAgICAgdGVtcElkOiBkdXAudGVtcElkIHx8IGR1cC50ZW1wbGQgfHwgJycsXHJcbiAgICAgICAgZmlsZVBhdGg6IGR1cC5maWxlUGF0aCxcclxuICAgICAgICBlbnRyeVRpbWU6IGR1cD8uZW50cnlUaW1lIHx8IGR1cD8uZW50cnlUbWUgfHwgJycsXHJcbiAgICAgICAgZXhpdFRpbWU6IGR1cC5leGl0VGltZSxcclxuICAgICAgICB0aW1lUmFuZ2U6IGR1cC50aW1lUmFuZ2UsXHJcbiAgICAgICAgaXNDaGVja2VkOiBkdXAuaXNDaGVja2VkXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICBpZiAobmVzdGVkRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBheWxvYWQuZHVwbGljYXRlSW1hZ2VzLnB1c2goe1xyXG4gICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXHJcbiAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgJycsXHJcbiAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxyXG4gICAgICAgIGRhdGE6IG5lc3RlZERhdGEsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcGF5bG9hZC5kdXBsaWNhdGVDb3VudCArPSBuZXN0ZWREYXRhLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEVNUExPWUVFXHJcbiAgZWxzZSBpZiAodHlwZSA9PT0gJ2VtcGxveWVlJyAmJiBpc0NoZWNrZWQpIHtcclxuICAgIHBheWxvYWQuZW1wbG95ZWUucHVzaCh7XHJcbiAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCAnJyxcclxuICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWRcclxuICAgIH0pO1xyXG5cclxuICAgIHBheWxvYWQuZW1wbG95ZWVDb3VudCsrO1xyXG4gIH1cclxuXHJcbiAgLy8gSE9VU0VLRUVQSU5HXHJcbiAgZWxzZSBpZiAodHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnICYmIGlzQ2hlY2tlZCkge1xyXG4gICAgcGF5bG9hZC5ob3VzZUtlZXBpbmcucHVzaCh7XHJcbiAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCcnLFxyXG4gICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZFxyXG4gICAgfSk7XHJcblxyXG4gICAgcGF5bG9hZC5ob3VzZUtlZXBpbmdDb3VudCsrO1xyXG4gIH1cclxufSk7XHJcblxyXG5wYXlsb2FkLmZvb3RmYWxsQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZm9vdGZhbGxDb3VudDtcclxuXHJcblxyXG4gIC8vIPCfkYcgUmV0dXJuIG9yIGFzc2lnblxyXG5cclxuICAgIHRoaXMudGVtcFJhaXNlZFBheWxvYWQgPSBwYXlsb2FkO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yYWlzZWRQb3B1cCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIGJhY2tkcm9wOiAnc3RhdGljJywgXHJcbiAga2V5Ym9hcmQ6IGZhbHNlICAgICAgXHJcbiAgfSk7XHJcbn1cclxuXHJcbmNhbmNlbFJhc2llZCgpe1xyXG4gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcbn1cclxuXHJcbmNvbW1lbnRUZXh0OmFueVxyXG5nZXRSYWlzZWREYXRhOmFueTtcclxuc3VibWl0UmFpc2VkKCkge1xyXG4gIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkOyAvLyBmcmVzaCBkYXRhIGZvciBBUElcclxuXHJcbiAgdGhpcy5nZXRSYWlzZWREYXRhID0gcGF5bG9hZDtcclxuXHJcbiAgdGhpcy5ydnBzU2VydmljZS5nZXRDcmVhdGVSYWlzZWRUYWcocGF5bG9hZClcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSB8fCAnVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7IFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4vLyBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4vLyAgIGlmICh0eXBlID09PSAnZHVwbGljYXRlJykge1xyXG4vLyAgICAgLy8gQ291bnQgb25seSB2YWxpZCBkdXBsaWNhdGUgaW1hZ2VzIHdoZXJlIGBkdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwYFxyXG4vLyAgICAgY29uc3QgdG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbi8vICAgICAgIChpdGVtOiBhbnkpID0+XHJcbi8vICAgICAgICAgaXRlbS5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiAoIWl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoIHx8IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMClcclxuLy8gICAgICkubGVuZ3RoO1xyXG5cclxuLy8gICAgIGNvbnN0IG1heEFsbG93ZWQgPSBNYXRoLmZsb29yKHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgKiAwLjEpOyAvLyAxMCUgbGltaXRcclxuXHJcbi8vICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Quc29tZShcclxuLy8gICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGRcclxuLy8gICAgICk7XHJcblxyXG4vLyAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xyXG4vLyAgICAgICAvLyDinYwgUmVhY2hlZCBtYXggYWxsb3dlZCDigJQgYmxvY2sgaXRcclxuLy8gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+PSBtYXhBbGxvd2VkKSB7XHJcbi8vICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxyXG4vLyAgICAgICAgICAgYE9ubHkgJHttYXhBbGxvd2VkfSBpbWFnZXMgY2FuIGJlIHNlbGVjdGVkIGFzIGR1cGxpY2F0ZSAoMTAlIG9mIHVudGFnZ2VkIGR1cGxpY2F0ZXMpLmBcclxuLy8gICAgICAgICApO1xyXG5cclxuLy8gICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuLy8gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGQpO1xyXG4vLyAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuLy8gICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YVtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuLy8gICAgICAgICB9XHJcblxyXG4vLyAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4vLyAgICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XHJcbi8vICAgICAgICAgfSk7XHJcblxyXG4vLyAgICAgICAgIHJldHVybjtcclxuLy8gICAgICAgfVxyXG5cclxuLy8gICAgICAgLy8g4pyFIEFkZCBpZiBub3QgYWxyZWFkeSBpbiBsaXN0XHJcbi8vICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xyXG4vLyAgICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnB1c2goe1xyXG4vLyAgICAgICAgICAgLi4uaW1nLFxyXG4vLyAgICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxyXG4vLyAgICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IG51bGxcclxuLy8gICAgICAgICB9KTtcclxuLy8gICAgICAgfVxyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgLy8g4p2MIFJlbW92YWwgY2FzZVxyXG4vLyAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LmZpbHRlcihcclxuLy8gICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCAhPT0gaW1nLnRlbXBsZFxyXG4vLyAgICAgICApO1xyXG4vLyAgICAgfVxyXG4vLyAgIH1cclxuXHJcbi8vICAgLy8g4pqg77iPIENhbGwgdGhpcyB0byB1cGRhdGUgYnV0dG9uIGVuYWJsZSBzdGF0ZVxyXG4vLyAgIHRoaXMuY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCk7XHJcbi8vIH1cclxuXHJcblxyXG4vLyBkdXBsaWNhdGVTYXZlRW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuLy8gY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCkge1xyXG4vLyAgIHRoaXMuZHVwbGljYXRlU2F2ZUVuYWJsZWQgPVxyXG4vLyAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID4gMDtcclxuLy8gfVxyXG5cclxuaXNNb2RhbE9wZW4gPWZhbHNlO1xyXG5AVmlld0NoaWxkKCdpbWFnZVBvcHVwJykgaW1hZ2VQb3B1cDogRWxlbWVudFJlZjtcclxuc2VsZWN0ZWRJbWFnZUFycmF5KHVybDphbnksZGF0YTphbnkpe1xyXG4gIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsXHJcbiAgICBiYWNrZHJvcDogJ3N0YXRpYycsIFxyXG4gIGtleWJvYXJkOiBmYWxzZSAgICAgIFxyXG4gIH0pO1xyXG59XHJcblxyXG5cclxuY2xvc2VJbWFnZSgpe1xyXG4gICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG59XHJcblxyXG5jYW5FbmFibGVCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgaWYgKCF0aGlzLmNvdW50RGF0YSB8fCAhdGhpcy5mb2xkZXJEYXRlKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCB7IGR1cGxpY2F0ZSwgaG91c2VrZWVwaW5nLCBlbXBsb3llZSB9ID0gdGhpcy5jb3VudERhdGE7XHJcblxyXG4gIC8vIENoZWNrIGNvdW50IGNvbmRpdGlvblxyXG4gIGNvbnN0IGhhc0NvdW50ID0gKGR1cGxpY2F0ZSA+IDAgfHwgaG91c2VrZWVwaW5nID4gMCB8fCBlbXBsb3llZSA+IDApO1xyXG5cclxuICAvLyBDb252ZXJ0IGZvbGRlckRhdGUgdG8gRGF0ZVxyXG4gIGNvbnN0IGZvbGRlciA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSk7XHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAvLyBOb3JtYWxpemUgdGltZXMgKHJlbW92ZSBob3VycyBmb3IgcHJvcGVyIGRheSBjb21wYXJpc29uKVxyXG4gIGZvbGRlci5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuXHJcbiAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgaW4gZGF5c1xyXG4gIGNvbnN0IGRpZmZJblRpbWUgPSB0b2RheS5nZXRUaW1lKCkgLSBmb2xkZXIuZ2V0VGltZSgpO1xyXG4gIGNvbnN0IGRpZmZJbkRheXMgPSBkaWZmSW5UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpO1xyXG5cclxuICAvLyBXaXRoaW4gbGFzdCA3IGRheXMg4oaSIGRpZmYgYmV0d2VlbiAwIGFuZCA3XHJcbiAgY29uc3QgaXNXaXRoaW5MYXN0NyA9IGRpZmZJbkRheXMgPj0gMCAmJiBkaWZmSW5EYXlzIDw9IDc7XHJcblxyXG4gIHJldHVybiBoYXNDb3VudCAmJiBpc1dpdGhpbkxhc3Q3O1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBjdXJyZW50SW1hZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBnZXQgY2FuTmF2aWdhdGVMZWZ0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPiAwO1xyXG4gIH1cclxuICBcclxuICBnZXQgY2FuTmF2aWdhdGVSaWdodCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbWFnZUluZGV4IDwgdGhpcy5pbWFnZXNBcnJheURhdGEubGVuZ3RoIC0gMTtcclxuICB9XHJcbiAgXHJcbiAgbmF2aWdhdGVJbWFnZShkaXJlY3Rpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSB7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGg7XHJcbiAgXHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSBcImxlZnRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlTGVmdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4LS07XHJcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiICYmIHRoaXMuY2FuTmF2aWdhdGVSaWdodCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4Kys7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgaW1hZ2VcclxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhW3RoaXMuY3VycmVudEltYWdlSW5kZXhdO1xyXG4gIFxyXG4gICAgLy8gVXBkYXRlIHJlbWFpbmluZyBpbWFnZXNcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmZpbHRlcihcclxuICAgICAgKF86IGFueSwgaTogYW55KSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgXHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtdC0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbXQtMyBweC0wIGJvcmRlci1ib3R0b20tMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYWNjb3JkaW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYWNjb3JkaW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZyBwYi0wIGN1c3RvbS1hY2NvcmRpb24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZUFjY29yZGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWNcIj5JbWFnZSBEaXJlY3Rvcnk8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWFycm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERvd24gYXJyb3cgZm9yIGNvbGxhcHNlZCBzdGF0ZSwgdXAgYXJyb3cgZm9yIGV4cGFuZGVkIHN0YXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSAxTDUgNUw5IDFcIiBzdHJva2U9XCIjMDcxNDM3XCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSA1TDUgMUw5IDVcIiBzdHJva2U9XCIjMWI4NGZmXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5IHB4LTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgbXQtNSB0ZXh0LWNlbnRlclwiICpuZ0Zvcj1cImxldCBvYmogb2YgZGF0ZUFycmF5O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiZ2V0aW1hZ2VzKGksb2JqKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkgPT09IHNlbGVjdEluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHdpZHRoPVwiNTdcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTcgNTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4xNTQyOTdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiByeD1cIjEyXCIgZmlsbD1cIiMzM0I1RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM5LjgyMTYgMzYuMTY2N0MzOS44MjE2IDM2Ljc4NTUgMzkuNTc1OCAzNy4zNzkgMzkuMTM4MiAzNy44MTY2QzM4LjcwMDYgMzguMjU0MiAzOC4xMDcxIDM4LjUgMzcuNDg4MyAzOC41SDE4LjgyMTZDMTguMjAyOCAzOC41IDE3LjYwOTMgMzguMjU0MiAxNy4xNzE3IDM3LjgxNjZDMTYuNzM0MSAzNy4zNzkgMTYuNDg4MyAzNi43ODU1IDE2LjQ4ODMgMzYuMTY2N1YxOS44MzMzQzE2LjQ4ODMgMTkuMjE0NSAxNi43MzQxIDE4LjYyMSAxNy4xNzE3IDE4LjE4MzRDMTcuNjA5MyAxNy43NDU4IDE4LjIwMjggMTcuNSAxOC44MjE2IDE3LjVIMjQuNjU0OUwyNi45ODgzIDIxSDM3LjQ4ODNDMzguMTA3MSAyMSAzOC43MDA2IDIxLjI0NTggMzkuMTM4MiAyMS42ODM0QzM5LjU3NTggMjIuMTIxIDM5LjgyMTYgMjIuNzE0NSAzOS44MjE2IDIzLjMzMzNWMzYuMTY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMi4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+e3tvYmogfCBkYXRlOidkZCBNTU0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkgIT09IHNlbGVjdEluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHdpZHRoPVwiNTdcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTcgNTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC40NjI4OTFcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiByeD1cIjEyXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQwLjEzMDIgMzYuMTY2N0M0MC4xMzAyIDM2Ljc4NTUgMzkuODg0NCAzNy4zNzkgMzkuNDQ2OCAzNy44MTY2QzM5LjAwOTIgMzguMjU0MiAzOC40MTU3IDM4LjUgMzcuNzk2OSAzOC41SDE5LjEzMDJDMTguNTExNCAzOC41IDE3LjkxNzkgMzguMjU0MiAxNy40ODAzIDM3LjgxNjZDMTcuMDQyNyAzNy4zNzkgMTYuNzk2OSAzNi43ODU1IDE2Ljc5NjkgMzYuMTY2N1YxOS44MzMzQzE2Ljc5NjkgMTkuMjE0NSAxNy4wNDI3IDE4LjYyMSAxNy40ODAzIDE4LjE4MzRDMTcuOTE3OSAxNy43NDU4IDE4LjUxMTQgMTcuNSAxOS4xMzAyIDE3LjVIMjQuOTYzNUwyNy4yOTY5IDIxSDM3Ljc5NjlDMzguNDE1NyAyMSAzOS4wMDkyIDIxLjI0NTggMzkuNDQ2OCAyMS42ODM0QzM5Ljg4NDQgMjIuMTIxIDQwLjEzMDIgMjIuNzE0NSA0MC4xMzAyIDIzLjMzMzNWMzYuMTY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wIG10LTMganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYmFja25hdlwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319ICBcclxuICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXgtMlwiICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpICYmIGdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKVwiPlxyXG4gIFRpY2tldCBSYWlzZWRcclxuPC9zcGFuPlxyXG48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXgtMlwiICpuZ0lmPVwiZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5UaWNrZXQgQ2xvc2VkPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbjxidXR0b24gXHJcbiAgW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIFxyXG4gIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgXHJcbiAgdHlwZT1cImJ1dHRvblwiIFxyXG4gIChjbGljayk9XCJSYWlzZWQoKVwiPlxyXG4gIFJhaXNlIHRpY2tldCBmb3IgZm9vdGZhbGxcclxuPC9idXR0b24+XHJcbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwibmF2LWdyb3VwIGJnLXdoaXRlIGJvcmRlci0xIGJ0bi1ncm91cCB3LWF1dG8gbXktMlwiPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cclxuICAgICAgICBUb3RhbCBGb290ZmFsbFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/LmZvb3RmYWxsQ291bnQgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XHJcbiAgICAgICAgTm9uLXRhZ3NcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2R1cGxpY2F0ZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XHJcbiAgICAgICAgRHVwbGljYXRlZFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XHJcbiAgICAgICAgRW1wbG95ZWUvU3RhZmZcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5lbXBsb3llZSB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XHJcbiAgICBIb3VzZSBLZWVwaW5nXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uaG91c2VrZWVwaW5nIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZm9vdGZhbGwnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB0ZXh0LW5vd3JhcFwiICpuZ0Zvcj1cImxldCBvYmogb2Ygb2JqZWN0c0FycmF5XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRUaW1lcyhvYmoudGltZVJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b2JqPy50aW1lUmFuZ2V9fTxzcGFuIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBcIiBzdHlsZT1cIm1hcmdpbjogNjRweDtib3JkZXItcmFkaXVzOiA4cHg7XHJcbmJhY2tncm91bmQ6IHZhcigtLUdyYXktNTAsICNGOUZBRkIpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS4zMzIgNTEuOTk5OUgzMy42NjU0QzMyLjc4MTMgNTEuOTk5OSAzMS45MzM1IDUxLjY0ODcgMzEuMzA4MyA1MS4wMjM2QzMwLjY4MzIgNTAuMzk4NSAzMC4zMzIgNDkuNTUwNiAzMC4zMzIgNDguNjY2NlYzMy42NjY2QzMwLjMzMiAzMi43ODI1IDMwLjY4MzIgMzEuOTM0NyAzMS4zMDgzIDMxLjMwOTZDMzEuOTMzNSAzMC42ODQ0IDMyLjc4MTMgMzAuMzMzMyAzMy42NjU0IDMwLjMzMzNINDguNjY1NEM0OS41NDk0IDMwLjMzMzMgNTAuMzk3MyAzMC42ODQ0IDUxLjAyMjQgMzEuMzA5NkM1MS42NDc1IDMxLjkzNDcgNTEuOTk4NyAzMi43ODI1IDUxLjk5ODcgMzMuNjY2NlYzNS4zMzMzTTQ1LjMzMiA0MS45OTk5SDYwLjMzMkM2Mi4xNzMgNDEuOTk5OSA2My42NjU0IDQzLjQ5MjMgNjMuNjY1NCA0NS4zMzMzVjYwLjMzMzNDNjMuNjY1NCA2Mi4xNzQyIDYyLjE3MyA2My42NjY2IDYwLjMzMiA2My42NjY2SDQ1LjMzMkM0My40OTExIDYzLjY2NjYgNDEuOTk4NyA2Mi4xNzQyIDQxLjk5ODcgNjAuMzMzM1Y0NS4zMzMzQzQxLjk5ODcgNDMuNDkyMyA0My40OTExIDQxLjk5OTkgNDUuMzMyIDQxLjk5OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vRGF0YU1lc3NhZ2VzW3R5cGU/LnRvTG93ZXJDYXNlKCldIHx8ICdObyBkYXRhIGZvdW5kJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBjb250YWluIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgIDxuZy1jb250YWluZXJcclxuXHJcbipuZ0Zvcj1cImxldCBvYmogb2YgaW1hZ2VzQXJyYXlEYXRhXCJcclxuPlxyXG48ZGl2ICAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiICBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIj5cclxuPCEtLSBDb25kaXRpb246IE9ubHkgc2hvdyBpZiBub3QgZHVwbGljYXRlIE9SIGR1cGxpY2F0ZSB3aXRoIG5vbi1lbXB0eSBkdXBsaWNhdGVJbWFnZVBhdGggLS0+XHJcbjxuZy1jb250YWluZXIgPlxyXG48aW1nXHJcbmNsYXNzPVwiaW1nLXNyYyBjdXJzb3ItcG9pbnRlclwiXHJcbltzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcclxuKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxyXG5hbHQ9XCJcIlxyXG4oY2xpY2spPVwiaW1nRnVsbFZpZXcob2JqKVwiXHJcbi8+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiIGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkfX0gPHNwYW4gKm5nSWY9XCIodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIiBjbGFzcz1cIm14LTIgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7b2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RofX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGZ1bGwgaW1hZ2UgVmlldyAtLT5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e3NlbGVjdEltYWdlQXJyYXk/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiBtYi0yICBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Qgbm9uLXNob3BwZXIgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcclxuICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPkNsZWFyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgaWQ9XCJhbGVydC10b2FzdFwiXHJcbiAgICAgIChjbGljayk9XCJzYXZlKHNlbGVjdGVkVHlwZSlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgU2F2ZVxyXG4gICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0QnRuU2hvd1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC42NTU0IDEuNzEwNDdDMTQuODkyNyAxLjQ3MzE1IDE1LjE3NDUgMS4yODQ5IDE1LjQ4NDUgMS4xNTY0NkMxNS43OTQ2IDEuMDI4MDIgMTYuMTI2OSAwLjk2MTkxNCAxNi40NjI2IDAuOTYxOTE0QzE2Ljc5ODIgMC45NjE5MTQgMTcuMTMwNSAxLjAyODAyIDE3LjQ0MDYgMS4xNTY0NkMxNy43NTA3IDEuMjg0OSAxOC4wMzI0IDEuNDczMTUgMTguMjY5NyAxLjcxMDQ3QzE4LjUwNzEgMS45NDc3OSAxOC42OTUzIDIuMjI5NTMgMTguODIzOCAyLjUzOTYxQzE4Ljk1MjIgMi44NDk2OSAxOS4wMTgzIDMuMTgyMDIgMTkuMDE4MyAzLjUxNzY1QzE5LjAxODMgMy44NTMyNyAxOC45NTIyIDQuMTg1NjEgMTguODIzOCA0LjQ5NTY4QzE4LjY5NTMgNC44MDU3NiAxOC41MDcxIDUuMDg3NSAxOC4yNjk3IDUuMzI0ODJMNi4wNzEzIDE3LjUyMzNMMS4xMDE1NiAxOC44Nzg2TDIuNDU2OTUgMTMuOTA4OUwxNC42NTU0IDEuNzEwNDdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQ8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJkdXBsaWNhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkdXBsaWNhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZHVwbGljYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImR1cGxpY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtcGxveWVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkVtcGxveWVlL1N0YWZmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmdcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPiBIb3VzZSBLZWVwaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIG10LTMgaGlnaC00MDBweCBzY3JvbGwteVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiICpuZ0Zvcj1cImxldCBvYmogb2YgcmVtYWluaW5nSW1hZ2VBcnJheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgKm5nSWY9XCJzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIiB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvYmouc2VsZWN0ZWRcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZShvYmosICdkdXBsaWNhdGUnKVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIlxyXG4gIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgW2NoZWNrZWRdPVwib2JqLnNlbGVjdGVkXCJcclxuICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gIChjaGFuZ2UpPVwib25JbWFnZUNoZWNrYm94Q2hhbmdlKCRldmVudCwgb2JqLCAnZHVwbGljYXRlJylcIlxyXG4gIFtkaXNhYmxlZF09XCJvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXCJcclxuLz5cclxuXHJcbjxpbWdcclxuICBjbGFzcz1cImltZy1zcmNcIlxyXG4gIFtuZ0NsYXNzXT1cInNlbGVjdGVkUmFkaW9UeXBlICE9PSAnZHVwbGljYXRlJyA/ICdjdXJzb3ItcG9pbnRlcicgOiAnY3Vyc29yLXBvaW50ZXInXCJcclxuICBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiXHJcbiAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxyXG4gIGFsdD1cIlwiXHJcbiAgKGNsaWNrKT1cImhhbmRsZUltYWdlQ2xpY2soJGV2ZW50LCBvYmopXCJcclxuLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZCA/IG9iaj8udGVtcGxkIDogb2JqPy50ZW1wSWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lID8gb2JqPy5lbnRyeVRtZSA6b2JqPy5lbnRyeVRpbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3pvb21Qb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJteS0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwODhfOTgzMzcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjE2OTMgMTMuMzMzM1YxOC4zMzMzTTI5LjE2OTMgMTguMzMzM0gyNC4xNjkzTTI5LjE2OTMgMTguMzMzM0wyNS4zMDI2IDE0LjdDMjQuNDA3IDEzLjgwMzkgMjMuMjk5IDEzLjE0OTMgMjIuMDgxOSAxMi43OTczQzIwLjg2NDkgMTIuNDQ1MyAxOS41Nzg1IDEyLjQwNzMgMTguMzQyOCAxMi42ODY5QzE3LjEwNzIgMTIuOTY2NSAxNS45NjI0IDEzLjU1NDUgMTUuMDE1NSAxNC4zOTYyQzE0LjA2ODUgMTUuMjM3OCAxMy4zNTAyIDE2LjMwNTYgMTIuOTI3NiAxNy41TTEwLjgzNTkgMjYuNjY2NlYyMS42NjY2TTEwLjgzNTkgMjEuNjY2NkgxNS44MzU5TTEwLjgzNTkgMjEuNjY2NkwxNC43MDI2IDI1LjNDMTUuNTk4MiAyNi4xOTYxIDE2LjcwNjIgMjYuODUwNiAxNy45MjMzIDI3LjIwMjdDMTkuMTQwMyAyNy41NTQ3IDIwLjQyNjcgMjcuNTkyNyAyMS42NjI0IDI3LjMxMzFDMjIuODk4IDI3LjAzMzUgMjQuMDQyOCAyNi40NDU1IDI0Ljk4OTcgMjUuNjAzOEMyNS45MzY3IDI0Ljc2MjEgMjYuNjU1IDIzLjY5NDMgMjcuMDc3NiAyMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwODhfOTgzMzdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCAxMClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5UYWdnaW5nIGFzIGVtcGxveWVlL3N0YWZmIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPlRhZ2dpbmcgYXMgZHVwbGljYXRlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnXCI+VGFnZ2luZyBhcyBob3VzZSBrZWVwaW5nIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+Q2xlYXIgZHVwbGljYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBlbXBsb3llZS9zdGFmZj88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZHVwbGljYXRlcz8gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBob3VzZSBrZWVwaW5nPyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiPlRoaXMgd2lsbCByZW1vdmUgdGFnZ2VkIGR1cGxpY2F0ZXMgYW5kIG1vdmUgdGhlbSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICdOb24tdGFnJy48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWxTdWJtaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicG9wdXBUeXBlICE9PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0VmFsdWUocG9wdXBUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgWWVzLCBUYWdcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICBZZXMsIGNsZWFyXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNyYWlzZWRQb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS4yNTEgMTEuMDgwNkMyMS43NDA1IDExLjA2OTkgMjIuMjE1MyAxMS4yNDg3IDIyLjU3NjIgMTEuNTc5NkwyMy40OTIyIDEyLjQyMDRDMjMuODA4OSAxMi43MDk3IDIzLjg5MyAxMy4xMDE3IDIzLjg2NTIgMTMuNDI2M1YxMy40MjcyQzIzLjgzNiAxMy43NDc4IDIzLjY5NTQgMTQuMDU5MiAyMy40Nzg1IDE0LjI5NDRDMjMuMzY5OSAxNC40MTMgMjMuMjg2NSAxNC41NTI1IDIzLjIzMTQgMTQuNzAzNkMyMy4xNzY0IDE0Ljg1NDggMjMuMTUxMiAxNS4wMTU1IDIzLjE1ODIgMTUuMTc2M0MyMy4xNjUyIDE1LjMzNyAyMy4yMDM1IDE1LjQ5NTMgMjMuMjcxNSAxNS42NDExQzIzLjMzOTQgMTUuNzg2OSAyMy40MzYyIDE1LjkxNzIgMjMuNTU0NyAxNi4wMjU5QzIzLjY3MzMgMTYuMTM0NiAyMy44MTE3IDE2LjIxOTggMjMuOTYyOSAxNi4yNzQ5QzI0LjExNDEgMTYuMzMgMjQuMjc0OCAxNi4zNTQxIDI0LjQzNTUgMTYuMzQ3MkMyNC41OTYxIDE2LjM0MDIgMjQuNzUzNyAxNi4zMDE3IDI0Ljg5OTQgMTYuMjMzOUMyNS4wMDg5IDE2LjE4MjkgMjUuMTEwNiAxNi4xMTYgMjUuMjAwMiAxNi4wMzU2TDI1LjM3MDEgMTUuODY1N0MyNS41NzU5IDE1LjY3NDggMjUuODM4NSAxNS41NDA4IDI2LjExNTIgMTUuNDkwN0MyNi4yOTcyIDE1LjQ1NDYgMjYuNDg1IDE1LjQ2MTcgMjYuNjY0MSAxNS41MTAzQzI2Ljg0MzkgMTUuNTU5MSAyNy4wMTAzIDE1LjY0OSAyNy4xNDk0IDE1Ljc3MjlMMjcuMTUxNCAxNS43NzQ5TDI4LjI1OTggMTYuNzkwNUMyOC40NDUgMTYuOTYwNSAyOC41OTQ4IDE3LjE2NTggMjguNzAwMiAxNy4zOTRDMjguODA1NiAxNy42MjIzIDI4Ljg2NDggMTcuODY5NCAyOC44NzQgMTguMTIwNkMyOC44ODMyIDE4LjM3MiAyOC44NDIzIDE4LjYyMzQgMjguNzUzOSAxOC44NTg5QzI4LjY2NTUgMTkuMDk0MSAyOC41MzE2IDE5LjMwOTYgMjguMzU5NCAxOS40OTI3TDIwLjExMTMgMjguMjU4M0MxOS45MzcgMjguNDQzNCAxOS43MjY4IDI4LjU5MTIgMTkuNDk0MSAyOC42OTM4QzE5LjI2MTQgMjguNzk2NSAxOS4wMTAyIDI4Ljg1MjIgMTguNzU1OSAyOC44NTZDMTguNTAxNiAyOC44NTk3IDE4LjI0OTMgMjguODExOSAxOC4wMTM3IDI4LjcxNjNDMTcuNzc3OSAyOC42MjA2IDE3LjU2MzYgMjguNDc4NCAxNy4zODM4IDI4LjI5ODNMMTYuMjUzOSAyNy4xNjg1QzE1Ljc1MTEgMjYuNjY1NiAxNS44ODMyIDI1Ljk1NTIgMTYuMTUxNCAyNS41NTQyTDE2LjIwNjEgMjUuNDY0NEMxNi4zMjQxIDI1LjI0ODYgMTYuMzc0MiAyNS4wMDA4IDE2LjM0OTYgMjQuNzU0NEMxNi4zMjE0IDI0LjQ3MzEgMTYuMTk3IDI0LjIxMDIgMTUuOTk3MSAyNC4wMTAzQzE1Ljc5NzEgMjMuODEwMyAxNS41MzQzIDIzLjY4NTkgMTUuMjUyOSAyMy42NTc3QzE0Ljk3MTUgMjMuNjI5NyAxNC42ODg3IDIzLjY5OTUgMTQuNDUzMSAyMy44NTZIMTQuNDUyMUMxNC4wNDk0IDI0LjEyMjIgMTMuMzQwNyAyNC4yNTUyIDEyLjgzNzkgMjMuNzUxNUwxMS42Nzk3IDIyLjU5MzNDMTEuNTAzNCAyMi40MTY5IDExLjM2NCAyMi4yMDc0IDExLjI2ODYgMjEuOTc3MUMxMS4xNzMxIDIxLjc0NjcgMTEuMTIzMSAyMS40OTk5IDExLjEyMyAyMS4yNTA1QzExLjEyMyAyMS4wMDEgMTEuMTczMSAyMC43NTM1IDExLjI2ODYgMjAuNTIyOUMxMS4zNjQgMjAuMjkyNiAxMS41MDM0IDIwLjA4MzEgMTEuNjc5NyAxOS45MDY3TDE5Ljk0OTIgMTEuNjM2MkMyMC4yOTU0IDExLjI5MDIgMjAuNzYxNiAxMS4wOTEyIDIxLjI1MSAxMS4wODA2Wk0yMS4yNzgzIDEyLjM4MDRDMjEuMTIzNyAxMi4zODM4IDIwLjk3NjUgMTIuNDQ2OCAyMC44NjcyIDEyLjU1NjJMMTIuNTk2NyAyMC44MjU3QzEyLjU0MDkgMjAuODgxNCAxMi40OTcgMjAuOTQ4MiAxMi40NjY4IDIxLjAyMUMxMi40MzY3IDIxLjA5MzggMTIuNDIwOSAyMS4xNzE3IDEyLjQyMDkgMjEuMjUwNUMxMi40MjA5IDIxLjMyOTIgMTIuNDM2NyAyMS40MDczIDEyLjQ2NjggMjEuNDhDMTIuNDk3IDIxLjU1MjggMTIuNTQxIDIxLjYxOTYgMTIuNTk2NyAyMS42NzUzTDEzLjcwNjEgMjIuNzgzN0wxMy43MzE0IDIyLjc3MkMxNC4yMTY5IDIyLjQ0ODUgMTQuNzk5MyAyMi4zMDM1IDE1LjM3OTkgMjIuMzYwOEMxNS45NjA4IDIyLjQxODMgMTYuNTA0MiAyMi42NzQ3IDE2LjkxNyAyMy4wODc0QzE3LjMyOTggMjMuNTAwMiAxNy41ODcgMjQuMDQzNiAxNy42NDQ1IDI0LjYyNDVDMTcuNzAyIDI1LjIwNTUgMTcuNTU2NSAyNS43ODkyIDE3LjIzMjQgMjYuMjc0OUwxNy4yMzA1IDI2LjI3NTlDMTcuMjI2MSAyNi4yODIyIDE3LjIyMjYgMjYuMjg5MyAxNy4yMTk3IDI2LjI5NjRMMTguMzAxOCAyNy4zODA0QzE4LjM1ODUgMjcuNDM3MiAxOC40MjY2IDI3LjQ4MiAxOC41MDEgMjcuNTEyMkMxOC41NzU1IDI3LjU0MjUgMTguNjU1OSAyNy41NTc0IDE4LjczNjMgMjcuNTU2MkMxOC44MTY2IDI3LjU1NDkgMTguODk2MyAyNy41Mzc4IDE4Ljk2OTcgMjcuNTA1NEMxOS4wNDMgMjcuNDcyOSAxOS4xMDkxIDI3LjQyNjEgMTkuMTY0MSAyNy4zNjc3TDI3LjQxMzEgMTguNjAyMUMyNy40NjczIDE4LjU0NDIgMjcuNTA5MyAxOC40NzYxIDI3LjUzNzEgMTguNDAxOUMyNy41NjQ5IDE4LjMyNzYgMjcuNTc4MSAxOC4yNDg3IDI3LjU3NTIgMTguMTY5NEMyNy41NzIyIDE4LjA5MDIgMjcuNTUzOCAxOC4wMTE5IDI3LjUyMDUgMTcuOTM5OUMyNy40ODcyIDE3Ljg2NzkgMjcuNDM5NCAxNy44MDMyIDI3LjM4MDkgMTcuNzQ5NUwyNi4zMjIzIDE2Ljc3NzhDMjYuMjkyNSAxNi43ODg1IDI2LjI2NDggMTYuODA1MyAyNi4yNDMyIDE2LjgyODZDMjYuMDIxNyAxNy4wNzg4IDI1Ljc1MjkgMTcuMjgyNyAyNS40NTIxIDE3LjQyODJDMjUuMTUgMTcuNTc0MyAyNC44MjE0IDE3LjY1ODUgMjQuNDg2MyAxNy42NzYzQzI0LjE1MTEgMTcuNjk0IDIzLjgxNSAxNy42NDUyIDIzLjQ5OSAxNy41MzE3QzIzLjE4MzIgMTcuNDE4MyAyMi44OTI4IDE3LjI0MjkgMjIuNjQ1NSAxNy4wMTYxQzIyLjM5ODIgMTYuNzg5MyAyMi4xOTg4IDE2LjUxNTMgMjIuMDU4NiAxNi4yMTA0QzIxLjkxODMgMTUuOTA1NSAyMS44NDA0IDE1LjU3NTIgMjEuODI5MSAxNS4yMzk3QzIxLjgxNzggMTQuOTA0MyAyMS44NzM3IDE0LjU3IDIxLjk5MzIgMTQuMjU2M0MyMi4xMTIxIDEzLjk0NDIgMjIuMjkxNSAxMy42NTg3IDIyLjUyMTUgMTMuNDE2NUwyMi41NTQ3IDEzLjM2NTdDMjIuNTU5NCAxMy4zNTUyIDIyLjU2MDcgMTMuMzQzNyAyMi41NjM1IDEzLjMzMjVMMjEuNjk3MyAxMi41Mzg2VjEyLjUzNzZDMjEuNTgzMyAxMi40MzMxIDIxLjQzMjkgMTIuMzc3IDIxLjI3ODMgMTIuMzgwNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIwLjNcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSBIZWFkaW5nIC0tPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzZSB0aWNrZXRzIGZvciB0aGUgZm9sbG93aW5nPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzaW5nIGEgdGlja2V0IGZvciBmb290ZmFsbCBjb3VudCBpc3N1ZXMuIE1ha2Ugc3VyZSBhbGwgcmVjb3JkcyBhcmUgaWRlbnRpZmllZCBmb3JcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uLjwvc3Bhbj5cclxuXHJcblxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZHVwbGljYXRlQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uZHVwbGljYXRlQ291bnQgOicwJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZXNcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBteS00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmVtcGxveWVlQ291bnQ6JzAnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVtcGxveWVlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgOicwJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2NyaXB0aW9uIChPcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFJhc2llZCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgUmFpc2UgVGlja2V0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVBvcHVwIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHAtMiAgbWItMiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e3NlbGVjdEltYWdlQXJyYXk/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcHktMiBweC0wXCI+IC0tPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHB5LTIgbWItMiBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2VJbWFnZSgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
860
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQU9qQjtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFYVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7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LElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJFLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3BELENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDakQsQ0FBQztJQUNKLENBQUM7d0dBaCtCVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixvVkNwQjdCLG1rZ0ZBbzhCYzs7NEZEaDdCRCxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzt1T0EwbkJBLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkF5RkksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQTRNQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LEVsZW1lbnRSZWYsVmlld0NoaWxkXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1J2cHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMtcnZwcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1pbWctcnZwc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWdSdnBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGhlYWRlckRhdGE6IGFueTtcclxuICBzdG9yZUlkYXJyYXk6IGFueTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGEgPSBmYWxzZTtcclxuICBub3JtYWxpemU6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogVHJhZmZpY1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBpc0FjY29yZGlvbkV4cGFuZGVkID0gdHJ1ZTtcclxuICB0b2dnbGVBY2NvcmRpb24oKSB7XHJcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XHJcbiAgfVxyXG4gIGdldEluaXRhbCgpIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcclxuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrbmF2ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnR5cGUgPSBcImZvb3RmYWxsXCI7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IFwiXCI7XHJcbiAgfVxyXG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XHJcbiAgYmFja25hdjogYm9vbGVhbjtcclxuICBkYXRlQXJyYXk6IGFueTtcclxuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xyXG4gICAgY29uc3QgZGF0ZXMgPSB0aGlzLmdldERhdGVSYW5nZUFycmF5KFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRvRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGVzIGFyZSB2YWxpZFxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxyXG4gICAgbGV0IGN1cnJlbnREYXRlID0gc3RhcnQ7XHJcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XHJcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcclxuICAgICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyAxKTsgLy8gSW5jcmVtZW50IHRoZSBkYXRlIGJ5IDEgZGF5XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICB9XHJcbiAgc2VsZWN0ZWRUaW1lOiBhbnk7XHJcbiAgZm9sZGVyTmFtZTogYW55O1xyXG4gIHNlbGVjdGVkVGltZXModmFsOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICB0aGlzLmdldFJldm9wcygpO1xyXG4gIH1cclxuICBmb2xkZXJEYXRlOiBhbnk7XHJcbiAgaW1hZ2VGbG93ID0gZmFsc2U7XHJcbiAgLy8gZ2V0IFJldm9wcyBBcGlcclxuICBnZXRSdnBzTGlzdDogYW55O1xyXG4gIGdldFJ2cHNJbWFnZUxpc3Q6IGFueTtcclxuICBvYmplY3RzQXJyYXk6IGFueTtcclxuICBpbWFnZXNBcnJheURhdGE6IGFueTtcclxuICBzZWxlY3RJbmRleDogYW55ID0gMDtcclxuICBmb290ZmFsbERhdGU6IGFueTtcclxuICBsZW5ndGhWYWx1ZTogYm9vbGVhbjtcclxuICBnZXRpbWFnZXMoaW5kZXg6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICB0aGlzLnNlbGVjdEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XHJcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xyXG4gICAgdGhpcy5zZXJ2aWNlPy5pc25vcm1hbGl6ZVNvdXJjZVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxpemUgPSBub3JtYWxpemU7XHJcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgICAgICAgICB0aGlzLmdldFRvdGFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgY291bnREYXRhOiBhbnkgPSBbXTtcclxuICBnZXRUb3RhbCgpIHtcclxuICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICBjb25zdCBzdG9yZUlkID1cclxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRUb3RhbFZhbChzdG9yZUlkLCBkYXRlU3RyaW5nKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKSB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50RGF0YSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBpbWFnZVVybDogYW55O1xyXG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xyXG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhOiBhbnkgPSBbXTtcclxuICBvdmVyYWxsQXJyYXlEYXRhOiBhbnkgPSBbXTtcclxuICBhbGxGb290ZmFsbERhdGE6IGFueSA9IFtdO1xyXG4gIGdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHN0YXR1c0xpc3QgPSB0aGlzLmdldFJ2cHNMaXN0Py50aWNrZXRTdGF0dXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdGF0dXNMaXN0KSkge1xyXG4gICAgICByZXR1cm4gc3RhdHVzTGlzdC5tYXAoKHMpID0+IHM/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pOyAvLyBSZW1vdmVzIG51bGwvdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIGdldFJldm9wcygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5vYmplY3RzQXJyYXkgPVtdO1xyXG4gICAgLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuICAgIC8vIHRoaXMuZ2V0UnZwc0xpc3QgPVtdO1xyXG4gICAgLy8gdGhpcy5nZXRSdnBzSW1hZ2VMaXN0PVtdO1xyXG4gICAgLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXHJcbiAgICBjb25zdCBzdG9yZUlkID1cclxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XHJcbiAgICBjb25zdCBncm91cEJ5S2V5ID0gXCJ0aW1lXCI7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSBcImZvb3RmYWxsXCIgPyBcIlwiIDogdGhpcy50eXBlIHx8IFwiXCI7XHJcbiAgICBjb25zdCBwcm9jZXNzVHlwZSA9IFwiZm9vdGZhbGxcIjtcclxuXHJcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRSdnBzTGlzdEFwaShzdG9yZUlkLCBkYXRlU3RyaW5nLCBncm91cEJ5S2V5LCB0eXBlLCBwcm9jZXNzVHlwZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gdGhpcy5ydnBzU2VydmljZT8uZm9vdGZhbGxDRE47XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG5cclxuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcclxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZm9vdGZhbGxEYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIHRpbWVSYW5nZSArIGNvdW50IG9iamVjdFxyXG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2VzID0gdGhpcy5hbGxGb290ZmFsbERhdGEubWFwKFxyXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gdGltZVJhbmdlcy5tYXAoKHRpbWVSYW5nZTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIHRpbWVSYW5nZSxcclxuICAgICAgICAgICAgICBjb3VudDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoKGQ6IGFueSkgPT4gZC50aW1lUmFuZ2UgPT09IHRpbWVSYW5nZSlcclxuICAgICAgICAgICAgICAgICAgPy5kYXRhPy5sZW5ndGggfHwgMCxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAvLyBPbmx5IHJlc2V0IGlmIHByZXZpb3VzIHNlbGVjdGVkIHRpbWUgaXMgTk9UIGluIHRoZSBuZXcgbGlzdFxyXG4gICAgICAgICAgICBpZiAoIXRpbWVSYW5nZXMuaW5jbHVkZXModGhpcy5zZWxlY3RlZFRpbWUpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVzKHRoaXMub2JqZWN0c0FycmF5WzBdLnRpbWVSYW5nZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEgPVxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcclxuICAgICAgICAgICAgICApPy5kYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgLy8gQ291bnQgcmV2b3BzVHlwZXNcclxuICAgICAgICAgICAgY29uc3QgcmV2b3BzVHlwZUNvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgICAgIFwibm9uLXRhZ2dpbmdcIjogMCxcclxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IDAsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWU6IDAsXHJcbiAgICAgICAgICAgICAgXCJob3VzZS1rZWVwaW5nXCI6IDAsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBsZXQgdG90YWxDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaXRlbS5kYXRhPy5mb3JFYWNoKChpbWFnZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEucHVzaChpbWFnZSk7XHJcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50Kys7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9XHJcbiAgICAgICAgICAgICAgICAgIGltYWdlLnJldm9wc1R5cGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8IFwidW5rbm93blwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcIm5vbi10YWdnaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wibm9uLXRhZ2dpbmdcIl0rKztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJlbXBsb3llZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImVtcGxveWVlXCJdKys7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImhvdXNlLWtlZXBpbmdcIl0rKztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDinIUgQ291bnQgZHVwbGljYXRlcyBvbmx5IGZyb20gZHVwbGljYXRlSW1hZ2VQYXRoXHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSArPVxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgZm9vdGZhbGxDb3VudDogdG90YWxDb3VudCxcclxuICAgICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSxcclxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSxcclxuICAgICAgICAgICAgICBlbXBsb3llZTogcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0sXHJcbiAgICAgICAgICAgICAgaG91c2VrZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbXCJob3VzZS1rZWVwaW5nXCJdLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gQXBwbHkgdHlwZSBmaWx0ZXIgYWZ0ZXIgbG9hZGluZyB0aW1lUmFuZ2UgZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGZhaWx1cmVcclxuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbXNnID1cclxuICAgICAgICAgICAgZXJyLmVycm9yLmVycm9yIHx8XHJcbiAgICAgICAgICAgIGVyci5lcnJvciB8fFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHM6IGFueTtcclxuICBlZGl0VmFsdWUoKSB7XHJcbiAgICBjb25zdCB0eXBlID0gKHRoaXMuc2VsZWN0ZWRUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFRlbXBsZCA9IHNlbGVjdGVkSW1hZ2U/LnRlbXBsZDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcclxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aClcclxuICAgICkge1xyXG4gICAgICAvLyAxLiBDb252ZXJ0IGR1cGxpY2F0ZSBjaGlsZHJlbiBpbnRvIGNvbnNpc3RlbnQgb2JqZWN0cyB3aXRoIHBhcmVudCByZWZlcmVuY2VcclxuICAgICAgY29uc3QgZHVwbGljYXRlQ2hpbGRyZW4gPSBzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5tYXAoXHJcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAuLi5jaGlsZCxcclxuICAgICAgICAgIHBhcmVudDogc2VsZWN0ZWRUZW1wbGQsXHJcbiAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gMi4gQ29sbGVjdCB0aGUgdGVtcGxkIHZhbHVlcyBvZiBkdXBsaWNhdGUgY2hpbGRyZW5cclxuICAgICAgY29uc3QgZHVwbGljYXRlQ2hpbGRJZHMgPSBkdXBsaWNhdGVDaGlsZHJlbi5tYXAoXHJcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLnRlbXBJZFxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gMy4gRmlsdGVyIG91dCBub24tdGFnZ2luZyBpbWFnZXMgZXhjZXB0IHRoZSBzZWxlY3RlZCBwYXJlbnQgJiBpdHMgY2hpbGRyZW5cclxuICAgICAgY29uc3Qgbm9uVGFnZ2luZ0ltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNOb25UYWdnaW5nID1cclxuICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcIm5vbi10YWdnaW5nXCI7XHJcbiAgICAgICAgY29uc3QgaXNOb3RTZWxlY3RlZCA9XHJcbiAgICAgICAgICBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZCAmJlxyXG4gICAgICAgICAgIWR1cGxpY2F0ZUNoaWxkSWRzLmluY2x1ZGVzKGltZy50ZW1wbGQpO1xyXG4gICAgICAgIHJldHVybiBpc05vblRhZ2dpbmcgJiYgaXNOb3RTZWxlY3RlZDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyA0LiBNZXJnZSBkdXBsaWNhdGUgY2hpbGRyZW4gKyBvdGhlciBub24tdGFnZ2luZyBpbWFnZXNcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gWy4uLmR1cGxpY2F0ZUNoaWxkcmVuLCAuLi5ub25UYWdnaW5nSW1hZ2VzXTtcclxuXHJcbiAgICAgIC8vIDUuIE1hcmsgc2VsZWN0ZWQ6IG9ubHkgZHVwbGljYXRlIGltYWdlcyB0aGF0IHdlcmUgbWFya2VkIGlzQ2hlY2tlZFxyXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9XHJcbiAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIjtcclxuICAgICAgICBpbWcuc2VsZWN0ZWQgPSBpc0R1cGxpY2F0ZSAmJiBpbWcuaXNDaGVja2VkID09PSB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIDYuIFN0b3JlIG9yaWdpbmFsIGNoZWNrZWQgSURzIHRvIGNvbXBhcmUgbGF0ZXIgZHVyaW5nIHN1Ym1pdFxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ2hlY2tlZER1cGxpY2F0ZUlkcyA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxyXG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuaXNDaGVja2VkID09PSB0cnVlKVxyXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiBpbWcudGVtcGxkKTtcclxuXHJcbiAgICAgIC8vIOKchSA3LiBGaWxsIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCB3aXRoIHByZS1zZWxlY3RlZCBkdXBsaWNhdGVzXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgIChpbWc6IGFueSkgPT5cclxuICAgICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCIgJiZcclxuICAgICAgICAgICAgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZVxyXG4gICAgICAgIClcclxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgICAgICAgIC4uLmltZyxcclxuICAgICAgICAgIHBhcmVudDogaW1nLnBhcmVudCB8fCBzZWxlY3RlZFRlbXBsZCxcclxuICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBOb3QgZHVwbGljYXRlIHR5cGUg4oaSIHNob3cgb25seSBzZWxlY3RlZCB0eXBlIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgaW1hZ2UpXHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBpbWdUeXBlID09PSB0eXBlICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsMSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gIH1cclxuICBzZWxlY3RJbWFnZUFycmF5OiBhbnk7XHJcbiAgcmVtYWluaW5nSW1hZ2VBcnJheTogYW55O1xyXG4gIHJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICBlZGl0QnRuU2hvdyA9IGZhbHNlO1xyXG4gIGltZ0Z1bGxWaWV3KG9iajogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XHJcbiAgICB0aGlzLmltYWdlRmxvdyA9IHRydWU7XHJcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XHJcblxyXG4gICAgLy8g4pyFIDEuIFNwZWNpYWwgY2FzZSBmb3IgZHVwbGljYXRlIHR5cGUgd2l0aCBjaGlsZCBpbWFnZXNcclxuICAgIGlmIChcclxuICAgICAgb2JqLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCIgJiZcclxuICAgICAgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKVxyXG4gICAgKSB7XHJcbiAgICAgIC8vIEV4dHJhY3QgY2hpbGRyZW5cclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIFRyeSB0byBmaW5kIG1hdGNoaW5nIGl0ZW0gZnJvbSBvdmVyYWxsQXJyYXlEYXRhIChieSB0ZW1wSWQpXHJcbiAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kKFxyXG4gICAgICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBQcmVmZXIgbWF0Y2hlZCBpdGVtIGlmIGZvdW5kLCBvdGhlcndpc2UgdXNlIG9yaWdpbmFsIGNoaWxkXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgICAgLi4uKG1hdGNoZWQgfHwge30pLFxyXG4gICAgICAgICAgcGFyZW50OiBvYmoudGVtcGxkLCAvLyBUYWcgd2l0aCBwYXJlbnQgSURcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIOKchSBNZXJnZSBwYXJlbnQgYW5kIGNoaWxkcmVuIGZvciBkaXNwbGF5XHJcbiAgICAgIGZpbHRlcmVkQnlUeXBlID0gW29iaiwgLi4uY2hpbGRyZW5dO1xyXG4gICAgICBjb25zb2xlLmxvZyggdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g4pyFIDIuIERlZmF1bHQgbG9naWMgZm9yIG90aGVyIHR5cGVzXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKGltZzogYW55KSA9PiBpbWcucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRUeXBlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDMuIERldGVybWluZSBzZWxlY3RlZCBpbWFnZSBpbmRleFxyXG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGZpbHRlcmVkQnlUeXBlLmZpbmRJbmRleChcclxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBvYmoudGVtcGxkXHJcbiAgICApO1xyXG5cclxuICAgIC8vIOKchSA0LiBSZW1haW5pbmcgaW1hZ2VzIHRvIHNob3cvZWRpdFxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gZmlsdGVyZWRCeVR5cGUuZmlsdGVyKFxyXG4gICAgICAoXzogYW55LCBpOiBudW1iZXIpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICAgICk7XHJcblxyXG4gICAgLy8g4pyFIDUuIEhhbmRsZSByZXZvcHMgdHlwZSBmb3IgcmFkaW8gVUlcclxuICAgIGlmIChcclxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XHJcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XHJcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCJcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmXHJcbiAgICAgICAgb2JqPy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImVtcGxveWVlXCIgfHxcclxuICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xyXG4gICAgICB0aGlzLm9uUmFkaW9DaGFuZ2Uob2JqPy5yZXZvcHNUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltZ1N3YXAob2JqOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdEltYWdlQXJyYXkpIHtcclxuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbmRJbmRleChcclxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIFJlcGxhY2Ugc2VsZWN0ZWRJbWFnZUFycmF5IGJhY2sgaW50byBpdHMgb3JpZ2luYWwgcG9zaXRpb25cclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVtpbmRleF0gPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZmFsbGJhY2sgaWYgbm90IGZvdW5kXHJcbiAgICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LnB1c2godGhpcy5zZWxlY3RJbWFnZUFycmF5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xyXG5cclxuICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBmcm9tIHJlbWFpbmluZyBsaXN0XHJcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgIT09IG9iai50ZW1wbGRcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRUeXBlOiBhbnkgPSBcIlwiOyAvLyBkZWZhdWx0IHNlbGVjdGVkXHJcbiAgc2VsZWN0ZWRSYWRpb1R5cGU6IGFueTtcclxuICBvblJhZGlvQ2hhbmdlKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xyXG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcclxuXHJcbiAgICBjb25zdCB0eXBlID0gKHZhbCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XHJcbiAgICAgIC8vIOKchSBTaG93IG9ubHkgbm9uLXRhZ2dpbmcgaW1hZ2VzIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWRJbWFnZSlcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZDtcclxuXHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBpbWdUeXBlID09PSBcIm5vbi10YWdnaW5nXCIgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g4pyFIE9wdGlvbmFsOiBzZXQgYWxsIGFzIHVuc2VsZWN0ZWQgaW5pdGlhbGx5XHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIERlYnVnXHJcbiAgICAvLyBjb25zb2xlLmxvZygnUmVtYWluaW5nIGltYWdlIGxpc3QgYWZ0ZXIgcmFkaW8gY2hhbmdlOicsIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSk7XHJcbiAgfVxyXG5cclxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XHJcbiAgc2VsZWN0UGxhblRyZW5kcyh0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcblxyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHR5cGUgdG8gbG93ZXJjYXNlIHNhZmVseVxyXG4gICAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZm9vdGZhbGxcIikge1xyXG4gICAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXHJcbiAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gWy4uLnRoaXMuY3VycmVudFRpbWVSYW5nZURhdGFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIHRhZ2dlZCB0eXBlcyBsaWtlICdkdXBsaWNhdGUnLCAnZW1wbG95ZWUnLCAnaG91c2VrZWVwaW5nJ1xyXG4gICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICAvLyBOb24tdGFnZ2luZyBtZWFucyBubyByZXZvcHNUeXBlIC0gc2hvdyBhbGwgdW5tYXRjaGVkIChubyB0YWcpXHJcbiAgICAvLyAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgIC8vICAgICAhaXRlbS5yZXZvcHNUeXBlXHJcbiAgICAvLyAgICk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcclxuICAgIHRoaXMubm9EYXRhID0gIXRoaXMuaW1hZ2VzQXJyYXlEYXRhPy5sZW5ndGg7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUltYWdlQ2xpY2soZXZ0OiBhbnksIG9iajogYW55KSB7XHJcbiAgICAvLyBPbmx5IHRvZ2dsZSBjaGVja2JveCBpZiByYWRpbyBpcyAnZHVwbGljYXRlJyBhbmQgaW1hZ2UgaXMgbm90IGFscmVhZHkgdGFnZ2VkXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcclxuICAgICAgIShvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub25JbWFnZUNoZWNrYm94Q2hhbmdlKGV2dCwgb2JqLCBcImR1cGxpY2F0ZVwiKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xyXG4gICAgICB0aGlzLmltZ1N3YXAob2JqKTsgLy8gZXhpc3Rpbmcgbm9uLWR1cGxpY2F0ZSBjbGljayBiZWhhdmlvclxyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Q6IGFueSA9IFtdO1xyXG5cclxuICBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0OiBhbnksIGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XHJcbiAgICAgIGNvbnN0IHRvdGFsSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmxlbmd0aDtcclxuICAgICAgY29uc3QgYWxyZWFkeVRhZ2dlZENvdW50ID0gdGhpcy5jb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh0b3RhbEltYWdlcylcclxuICAgICAgLy8gY29uc29sZS5sb2coYWxyZWFkeVRhZ2dlZENvdW50KVxyXG4gICAgICAvLyBUb3RhbCB0YWdnYWJsZSBjb3VudCA9IGFscmVhZHkgdGFnZ2VkICsgc2VsZWN0ZWQgbm93XHJcbiAgICAgIGNvbnN0IG1heFNlbGVjdGFibGUgPSBNYXRoLnJvdW5kKHRvdGFsSW1hZ2VzICogMC4yKTtcclxuICAgICAgLy8gY29uc29sZS5sb2cobWF4U2VsZWN0YWJsZSlcclxuICAgICAgLy8gQ291bnQgc2VsZWN0ZWQgbm93IChpbiBVSSlcclxuICAgICAgY29uc3QgY3VycmVudGx5U2VsZWN0ZWRDb3VudCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZFxyXG4gICAgICApLmxlbmd0aDtcclxuXHJcbiAgICAgIGNvbnN0IHdpbGxTZWxlY3QgPSAhaW1nLnNlbGVjdGVkO1xyXG5cclxuICAgICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDEwJSBjYXBcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHdpbGxTZWxlY3QgJiZcclxuICAgICAgICBjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50ID49IG1heFNlbGVjdGFibGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRXYXJuaW5nVG9hc3QoXHJcbiAgICAgICAgICBgWW91IGNhbiBzZWxlY3Qgb25seSAke21heFNlbGVjdGFibGV9IGltYWdlcyAoJHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdD8uZGF0YT8uY29uZmlnPy5kdXBsaWNhdGUgPz8gXCIyMCVcIlxyXG4gICAgICAgICAgfSBvZiB0b3RhbCBmb290ZmFsbClgXHJcbiAgICAgICAgKTtcclxuICAgICAgICBldnQudGFyZ2V0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOKchSBQcm9jZWVkIHdpdGggc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgICBpbWcuc2VsZWN0ZWQgPSAhaW1nLnNlbGVjdGVkO1xyXG4gICAgICBpbWcuaXNDaGVja2VkID0gaW1nLnNlbGVjdGVkO1xyXG5cclxuICAgICAgLy8g4pyFIEFsd2F5cyByZWJ1aWxkIHRoZSBzZWxlY3RlZCBsaXN0XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKVxyXG4gICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICBwYXJlbnQ6IGl0ZW0ucGFyZW50IHx8IHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkLFxyXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCfinIUgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OicsIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyVmFsdWUoKSB7XHJcbiAgICB0aGlzLnNhdmUoXCJub24tdGFnZ2luZ1wiKTtcclxuICAgIC8vIHRoaXMuc3VibWl0VmFsdWUoJ25vbi10YWdnaW5nJylcclxuICB9XHJcbiAgY2FuY2VsKCkge1xyXG4gICAgLy8gMS4gQ2xlYXIgc2VsZWN0ZWQgZHVwbGljYXRlIGltYWdlcyBsaXN0XHJcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xyXG5cclxuICAgIC8vIDIuIFJlc2V0IGFsbCBjaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGluIG92ZXJhbGwgaW1hZ2UgbGlzdFxyXG4gICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgIC4uLmltZyxcclxuICAgICAgaXNDaGVja2VkOiBmYWxzZSxcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLCAvLyBhc3N1bWluZyAnc2VsZWN0ZWQnIGlzIGNoZWNrYm94IGJpbmRcclxuICAgICAgcGFyZW50OiBudWxsLCAvLyByZXNldCBwYXJlbnQgaWYgdXNlZFxyXG4gICAgICAvLyBBZGQgb3RoZXIgZmxhZ3MgaGVyZSBpZiBuZWVkZWRcclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyAzLiBDbG9zZSBpbWFnZSBmbG93L2Z1bGwtdmlldyBpZiBvcGVuXHJcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIDQuIFJlc2V0IGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZVxyXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gW107XHJcblxyXG4gICAgLy8gNS4gKE9wdGlvbmFsKSBSZXNldCByYWRpbyBidXR0b25zIOKAlCBpZiB5b3UgaGF2ZSBhbnkgc3BlY2lmaWMgZmxhZ1xyXG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcG9wdXBUeXBlOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcInpvb21Qb3B1cFwiKSB6b29tUG9wdXA6IEVsZW1lbnRSZWY7XHJcbiAgc2F2ZShjYXRlZ29yeTogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy56b29tUG9wdXAsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6IFwibWRcIixcclxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsIC8vIFByZXZlbnQgY2xvc2luZyBvbiBvdXRzaWRlIGNsaWNrXHJcbiAgICAgIGtleWJvYXJkOiBmYWxzZSwgLy8gUHJldmVudCBjbG9zaW5nIG9uIEVTQyBrZXlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3B1cFR5cGUgPSBjYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIGNhbmNlbFN1Ym1pdCgpIHtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xyXG4gIH1cclxuICBzdWJtaXRWYWx1ZShjYXRlZ29yeTogYW55KSB7XHJcbiAgICBsZXQgZHVwbGljYXRlSW1hZ2VzID0gW107XHJcblxyXG4gICAgaWYgKGNhdGVnb3J5ID09PSBcImR1cGxpY2F0ZVwiKSB7XHJcbiAgICAgIGR1cGxpY2F0ZUltYWdlcyA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxyXG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuc2VsZWN0ZWQgPT09IHRydWUpXHJcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICB0ZW1wSWQ6IGltZy50ZW1wbGQgfHwgaW1nLnRlbXBJZCB8fCBcIlwiLFxyXG4gICAgICAgICAgdGltZVJhbmdlOiBpbWcudGltZVJhbmdlIHx8IFwiXCIsXHJcbiAgICAgICAgICBlbnRyeVRpbWU6IGltZy5lbnRyeVRpbWUgfHwgaW1nLmVudHJ5VG1lIHx8IFwiXCIsXHJcbiAgICAgICAgICBleGl0VGltZTogaW1nLmV4aXRUaW1lIHx8IFwiXCIsXHJcbiAgICAgICAgICBmaWxlUGF0aDogaW1nLmZpbGVQYXRoLFxyXG4gICAgICAgICAgcmV2b3BzVHlwZTogXCJkdXBsaWNhdGVcIixcclxuICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW1nID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG5cclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgc3RvcmVJZDpcclxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiLFxyXG4gICAgICB0ZW1wSWQ6IGltZz8udGVtcGxkIHx8IDAsXHJcbiAgICAgIHJldm9wc1R5cGU6IGNhdGVnb3J5LFxyXG4gICAgICB0aW1lUmFuZ2U6IGltZz8udGltZVJhbmdlIHx8IFwiXCIsXHJcbiAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcclxuICAgICAgZHVwbGljYXRlSW1hZ2U6IGR1cGxpY2F0ZUltYWdlcyxcclxuICAgICAgcHJvY2Vzc1R5cGU6IGltZz8ucHJvY2Vzc1R5cGUgfHwgXCJmb290ZmFsbFwiLFxyXG4gICAgICBlbnRyeVRpbWU6IGltZz8uZW50cnlUaW1lIHx8IGltZz8uZW50cnlUbWUgfHwgXCJcIixcclxuICAgICAgZXhpdFRpbWU6IGltZz8uZXhpdFRpbWUgfHwgXCJcIixcclxuICAgICAgZmlsZVBhdGg6IGltZz8uZmlsZVBhdGggfHwgXCJcIixcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5ydnBzU2VydmljZVxyXG4gICAgICAuZ2V0UnZwc1RhZyhvYmopXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgICAgcmVzPy5tZXNzYWdlIHx8IFwiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxTdWJtaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9XHJcbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8ubWVzc2FnZSB8fCBcIlVua25vd24gZXJyb3JcIjtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbm9EYXRhTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICBkdXBsaWNhdGU6IFwiTm8gZHVwbGljYXRlcyBmb3VuZFwiLFxyXG4gICAgZW1wbG95ZWU6IFwiTm8gZW1wbG95ZWUvc3RhZmYgZm91bmRcIixcclxuICAgIFwiaG91c2Uta2VlcGluZ1wiOiBcIk5vIGhvdXNlIGtlZXBpbmcgZm91bmRcIixcclxuICAgIFwibm9uLXRhZ2dpbmdcIjogXCJObyBub24tdGFnZ2luZyBmb3VuZFwiLFxyXG4gIH07XHJcblxyXG4gIHRlbXBSYWlzZWRQYXlsb2FkOiBhbnkgPSBudWxsOyAvLyBjbGFzcy1sZXZlbCB2YXJpYWJsZSBmb3IgcHJldmlld1xyXG5cclxuICBwcmVwYXJlUmFpc2VkUGF5bG9hZChzaG93T25seSA9IGZhbHNlKTogYW55IHt9XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJyYWlzZWRQb3B1cFwiKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcclxuICBSYWlzZWQoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXHJcbiAgICAgIHRpY2tldE5hbWU6IFwiZm9vdGZhbGwtZGlyZWN0b3J5XCIsXHJcbiAgICAgIGZvb3RmYWxsQ291bnQ6IDAsXHJcbiAgICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxyXG4gICAgICBlbXBsb3llZUNvdW50OiAwLFxyXG4gICAgICBob3VzZUtlZXBpbmdDb3VudDogMCxcclxuICAgICAgY29tbWVudHM6IHRoaXMuY29tbWVudFRleHQgfHwgXCJcIixcclxuICAgICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcclxuICAgICAgaG91c2VLZWVwaW5nOiBbXSxcclxuICAgICAgZW1wbG95ZWU6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgdG90YWxDaGVja2VkQ291bnQgPSAwO1xyXG5cclxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgdHlwZSA9IGl0ZW0ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xyXG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSBpdGVtLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIOKchSBDb3VudCBvbmx5IGlmIGl0ZW0gaXMgY2hlY2tlZCBBTkQgcmV2b3BzVHlwZSBpcyAnbm9uLXRhZ2dpbmcnXHJcbiAgICAgIC8vIGNvbnN0IGlzTm90VGFnZ2VkID0gdHlwZSA9PT0gJ25vbi10YWdnaW5nJztcclxuXHJcbiAgICAgIC8vIGlmIChpc05vdFRhZ2dlZCkge1xyXG4gICAgICAvLyAgIHRvdGFsQ2hlY2tlZENvdW50Kys7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIC8vIERVUExJQ0FURSBUWVBFXHJcbiAgICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoXHJcbiAgICAgICAgICAuZmlsdGVyKChkdXA6IGFueSkgPT4gZHVwLmlzQ2hlY2tlZClcclxuICAgICAgICAgIC5tYXAoKGR1cDogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICB0ZW1wSWQ6IGR1cC50ZW1wSWQgfHwgZHVwLnRlbXBsZCB8fCBcIlwiLFxyXG4gICAgICAgICAgICBmaWxlUGF0aDogZHVwLmZpbGVQYXRoLFxyXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGR1cD8uZW50cnlUaW1lIHx8IGR1cD8uZW50cnlUbWUgfHwgXCJcIixcclxuICAgICAgICAgICAgZXhpdFRpbWU6IGR1cC5leGl0VGltZSxcclxuICAgICAgICAgICAgdGltZVJhbmdlOiBkdXAudGltZVJhbmdlLFxyXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGR1cC5pc0NoZWNrZWQsXHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIGlmIChuZXN0ZWREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlSW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxyXG4gICAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcclxuICAgICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXHJcbiAgICAgICAgICAgIGRhdGE6IG5lc3RlZERhdGEsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBwYXlsb2FkLmR1cGxpY2F0ZUNvdW50ICs9IG5lc3RlZERhdGEubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRU1QTE9ZRUVcclxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJlbXBsb3llZVwiICYmIGlzQ2hlY2tlZCkge1xyXG4gICAgICAgIHBheWxvYWQuZW1wbG95ZWUucHVzaCh7XHJcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxyXG4gICAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXHJcbiAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxyXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxyXG4gICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZUNvdW50Kys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhPVVNFS0VFUElOR1xyXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiAmJiBpc0NoZWNrZWQpIHtcclxuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZy5wdXNoKHtcclxuICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXHJcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXHJcbiAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZ0NvdW50Kys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHBheWxvYWQuZm9vdGZhbGxDb3VudCA9IHRoaXMuY291bnREYXRhPy5mb290ZmFsbENvdW50O1xyXG5cclxuICAgIC8vIPCfkYcgUmV0dXJuIG9yIGFzc2lnblxyXG5cclxuICAgIHRoaXMudGVtcFJhaXNlZFBheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yYWlzZWRQb3B1cCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxSYXNpZWQoKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xyXG4gIH1cclxuXHJcbiAgY29tbWVudFRleHQ6IGFueTtcclxuICBnZXRSYWlzZWREYXRhOiBhbnk7XHJcbiAgc3VibWl0UmFpc2VkKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMudGVtcFJhaXNlZFBheWxvYWQ7IC8vIGZyZXNoIGRhdGEgZm9yIEFQSVxyXG5cclxuICAgIHRoaXMuZ2V0UmFpc2VkRGF0YSA9IHBheWxvYWQ7XHJcblxyXG4gICAgdGhpcy5ydnBzU2VydmljZVxyXG4gICAgICAuZ2V0Q3JlYXRlUmFpc2VkVGFnKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgICAgcmVzPy5tZXNzYWdlIHx8IFwiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9XHJcbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3IgfHxcclxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIG9uSW1hZ2VDaGVja2JveENoYW5nZShpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgLy8gICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcclxuICAvLyAgICAgLy8gQ291bnQgb25seSB2YWxpZCBkdXBsaWNhdGUgaW1hZ2VzIHdoZXJlIGBkdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwYFxyXG4gIC8vICAgICBjb25zdCB0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcclxuICAvLyAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gIC8vICAgICAgICAgaXRlbS5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiAoIWl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoIHx8IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMClcclxuICAvLyAgICAgKS5sZW5ndGg7XHJcblxyXG4gIC8vICAgICBjb25zdCBtYXhBbGxvd2VkID0gTWF0aC5mbG9vcih0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzICogMC4xKTsgLy8gMTAlIGxpbWl0XHJcblxyXG4gIC8vICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Quc29tZShcclxuICAvLyAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZFxyXG4gIC8vICAgICApO1xyXG5cclxuICAvLyAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xyXG4gIC8vICAgICAgIC8vIOKdjCBSZWFjaGVkIG1heCBhbGxvd2VkIOKAlCBibG9jayBpdFxyXG4gIC8vICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPj0gbWF4QWxsb3dlZCkge1xyXG4gIC8vICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxyXG4gIC8vICAgICAgICAgICBgT25seSAke21heEFsbG93ZWR9IGltYWdlcyBjYW4gYmUgc2VsZWN0ZWQgYXMgZHVwbGljYXRlICgxMCUgb2YgdW50YWdnZWQgZHVwbGljYXRlcykuYFxyXG4gIC8vICAgICAgICAgKTtcclxuXHJcbiAgLy8gICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZCk7XHJcbiAgLy8gICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgLy8gICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YVtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAvLyAgICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICByZXR1cm47XHJcbiAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICAvLyDinIUgQWRkIGlmIG5vdCBhbHJlYWR5IGluIGxpc3RcclxuICAvLyAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcclxuICAvLyAgICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnB1c2goe1xyXG4gIC8vICAgICAgICAgICAuLi5pbWcsXHJcbiAgLy8gICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcclxuICAvLyAgICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IG51bGxcclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAvLyDinYwgUmVtb3ZhbCBjYXNlXHJcbiAgLy8gICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5maWx0ZXIoXHJcbiAgLy8gICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCAhPT0gaW1nLnRlbXBsZFxyXG4gIC8vICAgICAgICk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICAvLyDimqDvuI8gQ2FsbCB0aGlzIHRvIHVwZGF0ZSBidXR0b24gZW5hYmxlIHN0YXRlXHJcbiAgLy8gICB0aGlzLmNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZHVwbGljYXRlU2F2ZUVuYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCkge1xyXG4gIC8vICAgdGhpcy5kdXBsaWNhdGVTYXZlRW5hYmxlZCA9XHJcbiAgLy8gICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+IDA7XHJcbiAgLy8gfVxyXG5cclxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoXCJpbWFnZVBvcHVwXCIpIGltYWdlUG9wdXA6IEVsZW1lbnRSZWY7XHJcbiAgc2VsZWN0ZWRJbWFnZUFycmF5KHVybDogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuaW1hZ2VQb3B1cCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUltYWdlKCkge1xyXG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgY2FuRW5hYmxlQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNvdW50RGF0YSB8fCAhdGhpcy5mb2xkZXJEYXRlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGR1cGxpY2F0ZSwgaG91c2VrZWVwaW5nLCBlbXBsb3llZSB9ID0gdGhpcy5jb3VudERhdGE7XHJcblxyXG4gICAgLy8gQ2hlY2sgY291bnQgY29uZGl0aW9uXHJcbiAgICBjb25zdCBoYXNDb3VudCA9IGR1cGxpY2F0ZSA+IDAgfHwgaG91c2VrZWVwaW5nID4gMCB8fCBlbXBsb3llZSA+IDA7XHJcblxyXG4gICAgLy8gQ29udmVydCBmb2xkZXJEYXRlIHRvIERhdGVcclxuICAgIGNvbnN0IGZvbGRlciA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSk7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIHRpbWVzIChyZW1vdmUgaG91cnMgZm9yIHByb3BlciBkYXkgY29tcGFyaXNvbilcclxuICAgIGZvbGRlci5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGluIGRheXNcclxuICAgIGNvbnN0IGRpZmZJblRpbWUgPSB0b2RheS5nZXRUaW1lKCkgLSBmb2xkZXIuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgZGlmZkluRGF5cyA9IGRpZmZJblRpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNCk7XHJcblxyXG4gICAgLy8gV2l0aGluIGxhc3QgNyBkYXlzIOKGkiBkaWZmIGJldHdlZW4gMCBhbmQgN1xyXG4gICAgY29uc3QgaXNXaXRoaW5MYXN0NyA9IGRpZmZJbkRheXMgPj0gMCAmJiBkaWZmSW5EYXlzIDw9IDc7XHJcblxyXG4gICAgcmV0dXJuIGhhc0NvdW50ICYmIGlzV2l0aGluTGFzdDc7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW1hZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBnZXQgY2FuTmF2aWdhdGVMZWZ0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbk5hdmlnYXRlUmlnaHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA8IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aCAtIDE7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZUltYWdlKGRpcmVjdGlvbjogXCJsZWZ0XCIgfCBcInJpZ2h0XCIpIHtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aDtcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSBcImxlZnRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlTGVmdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4LS07XHJcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiICYmIHRoaXMuY2FuTmF2aWdhdGVSaWdodCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXHJcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSB0aGlzLmltYWdlc0FycmF5RGF0YVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4XTtcclxuXHJcbiAgICAvLyBVcGRhdGUgcmVtYWluaW5nIGltYWdlc1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoXzogYW55LCBpOiBhbnkpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICAgICk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTMgcHgtMCBib3JkZXItYm90dG9tLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcGItMCBjdXN0b20tYWNjb3JkaW9uLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVBY2NvcmRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCI+SW1hZ2UgRGlyZWN0b3J5PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VjdGlvbiAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cImNhcmQtYm9keSBweC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIG10LTUgdGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGRhdGVBcnJheTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdldGltYWdlcyhpLG9iailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpID09PSBzZWxlY3RJbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB3aWR0aD1cIjU3XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU3IDU2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMTU0Mjk3XCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCIxMlwiIGZpbGw9XCIjMzNCNUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zOS44MjE2IDM2LjE2NjdDMzkuODIxNiAzNi43ODU1IDM5LjU3NTggMzcuMzc5IDM5LjEzODIgMzcuODE2NkMzOC43MDA2IDM4LjI1NDIgMzguMTA3MSAzOC41IDM3LjQ4ODMgMzguNUgxOC44MjE2QzE4LjIwMjggMzguNSAxNy42MDkzIDM4LjI1NDIgMTcuMTcxNyAzNy44MTY2QzE2LjczNDEgMzcuMzc5IDE2LjQ4ODMgMzYuNzg1NSAxNi40ODgzIDM2LjE2NjdWMTkuODMzM0MxNi40ODgzIDE5LjIxNDUgMTYuNzM0MSAxOC42MjEgMTcuMTcxNyAxOC4xODM0QzE3LjYwOTMgMTcuNzQ1OCAxOC4yMDI4IDE3LjUgMTguODIxNiAxNy41SDI0LjY1NDlMMjYuOTg4MyAyMUgzNy40ODgzQzM4LjEwNzEgMjEgMzguNzAwNiAyMS4yNDU4IDM5LjEzODIgMjEuNjgzNEMzOS41NzU4IDIyLjEyMSAzOS44MjE2IDIyLjcxNDUgMzkuODIxNiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjIuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpICE9PSBzZWxlY3RJbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB3aWR0aD1cIjU3XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU3IDU2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuNDYyODkxXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCIxMlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00MC4xMzAyIDM2LjE2NjdDNDAuMTMwMiAzNi43ODU1IDM5Ljg4NDQgMzcuMzc5IDM5LjQ0NjggMzcuODE2NkMzOS4wMDkyIDM4LjI1NDIgMzguNDE1NyAzOC41IDM3Ljc5NjkgMzguNUgxOS4xMzAyQzE4LjUxMTQgMzguNSAxNy45MTc5IDM4LjI1NDIgMTcuNDgwMyAzNy44MTY2QzE3LjA0MjcgMzcuMzc5IDE2Ljc5NjkgMzYuNzg1NSAxNi43OTY5IDM2LjE2NjdWMTkuODMzM0MxNi43OTY5IDE5LjIxNDUgMTcuMDQyNyAxOC42MjEgMTcuNDgwMyAxOC4xODM0QzE3LjkxNzkgMTcuNzQ1OCAxOC41MTE0IDE3LjUgMTkuMTMwMiAxNy41SDI0Ljk2MzVMMjcuMjk2OSAyMUgzNy43OTY5QzM4LjQxNTcgMjEgMzkuMDA5MiAyMS4yNDU4IDM5LjQ0NjggMjEuNjgzNEMzOS44ODQ0IDIyLjEyMSA0MC4xMzAyIDIyLjcxNDUgNDAuMTMwMiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMi4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+e3tvYmogfCBkYXRlOidkZCBNTU0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJhY2tuYXZcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjIG1zLTIgbXQtMVwiPnt7Zm9sZGVyRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSAgXHJcbiAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG14LTJcIiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKSAmJiBnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJylcIj5cclxuICBUaWNrZXQgUmFpc2VkXHJcbjwvc3Bhbj5cclxuPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG14LTJcIiAqbmdJZj1cImdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCI+VGlja2V0IENsb3NlZDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiAgY2xhc3M9XCJtcy1hdXRvIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG48YnV0dG9uIFxyXG4gIFtkaXNhYmxlZF09XCIhY2FuRW5hYmxlQnV0dG9uKClcIiBcclxuICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFxyXG4gIHR5cGU9XCJidXR0b25cIiBcclxuICAoY2xpY2spPVwiUmFpc2VkKClcIj5cclxuICBSYWlzZSB0aWNrZXQgZm9yIGZvb3RmYWxsXHJcbjwvYnV0dG9uPlxyXG48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvIG15LTJcIj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY291bnREYXRhPy5sZW5ndGggPiAwKVwiPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XHJcbiAgICAgICAgVG90YWwgRm9vdGZhbGxcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5mb290ZmFsbENvdW50IHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnbm9uLXRhZ2dpbmcnKVwiPlxyXG4gICAgICAgIE5vbi10YWdzXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8ubm9uVGFncyB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdkdXBsaWNhdGUnKVwiPlxyXG4gICAgICAgIER1cGxpY2F0ZWRcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxyXG4gICAgICAgIEVtcGxveWVlL1N0YWZmXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZW1wbG95ZWUgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2Uta2VlcGluZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2hvdXNlLWtlZXBpbmcnKVwiPlxyXG4gICAgSG91c2UgS2VlcGluZ1xyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNla2VlcGluZyB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJ1wiIGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14IHB4LTBcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLnRpbWVSYW5nZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbXgtMyBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8udGltZVJhbmdlfX08c3BhbiBjbGFzcz1cIm14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYmFkZ2UtbnVtLXByaW1hcnknIDonYmFkZ2UtbnVtLW11dGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9iaj8uY291bnQgPyBvYmo/LmNvdW50IDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gXCIgc3R5bGU9XCJtYXJnaW46IDY0cHg7Ym9yZGVyLXJhZGl1czogOHB4O1xyXG5iYWNrZ3JvdW5kOiB2YXIoLS1HcmF5LTUwLCAjRjlGQUZCKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzUuMzMyIDUxLjk5OTlIMzMuNjY1NEMzMi43ODEzIDUxLjk5OTkgMzEuOTMzNSA1MS42NDg3IDMxLjMwODMgNTEuMDIzNkMzMC42ODMyIDUwLjM5ODUgMzAuMzMyIDQ5LjU1MDYgMzAuMzMyIDQ4LjY2NjZWMzMuNjY2NkMzMC4zMzIgMzIuNzgyNSAzMC42ODMyIDMxLjkzNDcgMzEuMzA4MyAzMS4zMDk2QzMxLjkzMzUgMzAuNjg0NCAzMi43ODEzIDMwLjMzMzMgMzMuNjY1NCAzMC4zMzMzSDQ4LjY2NTRDNDkuNTQ5NCAzMC4zMzMzIDUwLjM5NzMgMzAuNjg0NCA1MS4wMjI0IDMxLjMwOTZDNTEuNjQ3NSAzMS45MzQ3IDUxLjk5ODcgMzIuNzgyNSA1MS45OTg3IDMzLjY2NjZWMzUuMzMzM000NS4zMzIgNDEuOTk5OUg2MC4zMzJDNjIuMTczIDQxLjk5OTkgNjMuNjY1NCA0My40OTIzIDYzLjY2NTQgNDUuMzMzM1Y2MC4zMzMzQzYzLjY2NTQgNjIuMTc0MiA2Mi4xNzMgNjMuNjY2NiA2MC4zMzIgNjMuNjY2Nkg0NS4zMzJDNDMuNDkxMSA2My42NjY2IDQxLjk5ODcgNjIuMTc0MiA0MS45OTg3IDYwLjMzMzNWNDUuMzMzM0M0MS45OTg3IDQzLjQ5MjMgNDMuNDkxMSA0MS45OTk5IDQ1LjMzMiA0MS45OTk5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub0RhdGFNZXNzYWdlc1t0eXBlPy50b0xvd2VyQ2FzZSgpXSB8fCAnTm8gZGF0YSBmb3VuZCcgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgY29udGFpbiBoaWdoLTQwMHB4IHNjcm9sbC15XCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICA8bmctY29udGFpbmVyXHJcblxyXG4qbmdGb3I9XCJsZXQgb2JqIG9mIGltYWdlc0FycmF5RGF0YVwiXHJcbj5cclxuPGRpdiAgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIiAgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCI+XHJcbjwhLS0gQ29uZGl0aW9uOiBPbmx5IHNob3cgaWYgbm90IGR1cGxpY2F0ZSBPUiBkdXBsaWNhdGUgd2l0aCBub24tZW1wdHkgZHVwbGljYXRlSW1hZ2VQYXRoIC0tPlxyXG48bmctY29udGFpbmVyID5cclxuPGltZ1xyXG5jbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXJcIlxyXG5bc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiXHJcbihlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCJcclxuYWx0PVwiXCJcclxuKGNsaWNrKT1cImltZ0Z1bGxWaWV3KG9iailcIlxyXG4vPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZH19IDxzcGFuICpuZ0lmPVwiKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCIgY2xhc3M9XCJteC0yIGJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e29iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBmdWxsIGltYWdlIFZpZXcgLS0+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaW1hZ2VGbG93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wIG10LTMganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwxKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjIG1zLTIgbXQtMVwiPnt7Zm9sZGVyRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14IHB4LTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbCB0ZXh0LW5vd3JhcFwiICpuZ0Zvcj1cImxldCBvYmogb2Ygb2JqZWN0c0FycmF5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRUaW1lcyhvYmoudGltZVJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b2JqPy50aW1lUmFuZ2V9fTxzcGFuIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBib3JkZXItZ3JheSBpbWctdHJhZmZpY1wiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcC0yICBtYi0yIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBib3JkZXItZ3JheSBwLTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBzdGFydC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKXgFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyIGgtNDUwcHhcIiAoY2xpY2spPVwic2VsZWN0ZWRJbWFnZUFycmF5KGltYWdlVXJsLCBzZWxlY3RJbWFnZUFycmF5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aFwiIGFwcE1hZ25pZmllciBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tzZWxlY3RJbWFnZUFycmF5Py5lbnRyeVRtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgbWItMiAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IG5vbi1zaG9wcGVyIHR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZVwiIGNsYXNzPVwibWItNSB0ZXh0LWVuZFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcclxuICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXHJcbiAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5DbGVhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgIGlkPVwiYWxlcnQtdG9hc3RcIlxyXG4gICAgICAoY2xpY2spPVwic2F2ZShzZWxlY3RlZFR5cGUpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcclxuICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIFNhdmVcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdEJ0blNob3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJlZGl0VmFsdWUoKVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjgxMDc5XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZHVwbGljYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZHVwbGljYXRlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJkdXBsaWNhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RHVwbGljYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZW1wbG95ZWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbXBsb3llZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidlbXBsb3llZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJlbXBsb3llZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImhvdXNlLWtlZXBpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJob3VzZS1rZWVwaW5nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2hvdXNlLWtlZXBpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaG91c2Uta2VlcGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj4gSG91c2UgS2VlcGluZzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBtdC0zIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIHJlbWFpbmluZ0ltYWdlQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0ICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib2JqLnNlbGVjdGVkXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2Uob2JqLCAnZHVwbGljYXRlJylcIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCJcclxuICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiXHJcbiAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcclxuICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiXHJcbi8+XHJcblxyXG48aW1nXHJcbiAgY2xhc3M9XCJpbWctc3JjXCJcclxuICBbbmdDbGFzc109XCJzZWxlY3RlZFJhZGlvVHlwZSAhPT0gJ2R1cGxpY2F0ZScgPyAnY3Vyc29yLXBvaW50ZXInIDogJ2N1cnNvci1wb2ludGVyJ1wiXHJcbiAgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxyXG4gIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCJcclxuICBhbHQ9XCJcIlxyXG4gIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiXHJcbi8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGQgPyBvYmo/LnRlbXBsZCA6IG9iaj8udGVtcElkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSA/IG9iaj8uZW50cnlUbWUgOm9iaj8uZW50cnlUaW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN6b29tUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBtLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwibXktM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDg4Xzk4MzM3KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOS4xNjkzIDEzLjMzMzNWMTguMzMzM00yOS4xNjkzIDE4LjMzMzNIMjQuMTY5M00yOS4xNjkzIDE4LjMzMzNMMjUuMzAyNiAxNC43QzI0LjQwNyAxMy44MDM5IDIzLjI5OSAxMy4xNDkzIDIyLjA4MTkgMTIuNzk3M0MyMC44NjQ5IDEyLjQ0NTMgMTkuNTc4NSAxMi40MDczIDE4LjM0MjggMTIuNjg2OUMxNy4xMDcyIDEyLjk2NjUgMTUuOTYyNCAxMy41NTQ1IDE1LjAxNTUgMTQuMzk2MkMxNC4wNjg1IDE1LjIzNzggMTMuMzUwMiAxNi4zMDU2IDEyLjkyNzYgMTcuNU0xMC44MzU5IDI2LjY2NjZWMjEuNjY2Nk0xMC44MzU5IDIxLjY2NjZIMTUuODM1OU0xMC44MzU5IDIxLjY2NjZMMTQuNzAyNiAyNS4zQzE1LjU5ODIgMjYuMTk2MSAxNi43MDYyIDI2Ljg1MDYgMTcuOTIzMyAyNy4yMDI3QzE5LjE0MDMgMjcuNTU0NyAyMC40MjY3IDI3LjU5MjcgMjEuNjYyNCAyNy4zMTMxQzIyLjg5OCAyNy4wMzM1IDI0LjA0MjggMjYuNDQ1NSAyNC45ODk3IDI1LjYwMzhDMjUuOTM2NyAyNC43NjIxIDI2LjY1NSAyMy42OTQzIDI3LjA3NzYgMjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDg4Xzk4MzM3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMTApXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+VGFnZ2luZyBhcyBlbXBsb3llZS9zdGFmZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5UYWdnaW5nIGFzIGR1cGxpY2F0ZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPlRhZ2dpbmcgYXMgaG91c2Uga2VlcGluZyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiPkNsZWFyIGR1cGxpY2F0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZW1wbG95ZWUvc3RhZmY/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGR1cGxpY2F0ZXM/IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5UaGlzIHdpbGwgcmVtb3ZlIHRhZ2dlZCBkdXBsaWNhdGVzIGFuZCBtb3ZlIHRoZW0gdG9cclxuICAgICAgICAgICAgICAgICAgICAnTm9uLXRhZycuPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbXQtNSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSAhPT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIFllcywgVGFnXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0VmFsdWUocG9wdXBUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgWWVzLCBjbGVhclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBtLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEuMjUxIDExLjA4MDZDMjEuNzQwNSAxMS4wNjk5IDIyLjIxNTMgMTEuMjQ4NyAyMi41NzYyIDExLjU3OTZMMjMuNDkyMiAxMi40MjA0QzIzLjgwODkgMTIuNzA5NyAyMy44OTMgMTMuMTAxNyAyMy44NjUyIDEzLjQyNjNWMTMuNDI3MkMyMy44MzYgMTMuNzQ3OCAyMy42OTU0IDE0LjA1OTIgMjMuNDc4NSAxNC4yOTQ0QzIzLjM2OTkgMTQuNDEzIDIzLjI4NjUgMTQuNTUyNSAyMy4yMzE0IDE0LjcwMzZDMjMuMTc2NCAxNC44NTQ4IDIzLjE1MTIgMTUuMDE1NSAyMy4xNTgyIDE1LjE3NjNDMjMuMTY1MiAxNS4zMzcgMjMuMjAzNSAxNS40OTUzIDIzLjI3MTUgMTUuNjQxMUMyMy4zMzk0IDE1Ljc4NjkgMjMuNDM2MiAxNS45MTcyIDIzLjU1NDcgMTYuMDI1OUMyMy42NzMzIDE2LjEzNDYgMjMuODExNyAxNi4yMTk4IDIzLjk2MjkgMTYuMjc0OUMyNC4xMTQxIDE2LjMzIDI0LjI3NDggMTYuMzU0MSAyNC40MzU1IDE2LjM0NzJDMjQuNTk2MSAxNi4zNDAyIDI0Ljc1MzcgMTYuMzAxNyAyNC44OTk0IDE2LjIzMzlDMjUuMDA4OSAxNi4xODI5IDI1LjExMDYgMTYuMTE2IDI1LjIwMDIgMTYuMDM1NkwyNS4zNzAxIDE1Ljg2NTdDMjUuNTc1OSAxNS42NzQ4IDI1LjgzODUgMTUuNTQwOCAyNi4xMTUyIDE1LjQ5MDdDMjYuMjk3MiAxNS40NTQ2IDI2LjQ4NSAxNS40NjE3IDI2LjY2NDEgMTUuNTEwM0MyNi44NDM5IDE1LjU1OTEgMjcuMDEwMyAxNS42NDkgMjcuMTQ5NCAxNS43NzI5TDI3LjE1MTQgMTUuNzc0OUwyOC4yNTk4IDE2Ljc5MDVDMjguNDQ1IDE2Ljk2MDUgMjguNTk0OCAxNy4xNjU4IDI4LjcwMDIgMTcuMzk0QzI4LjgwNTYgMTcuNjIyMyAyOC44NjQ4IDE3Ljg2OTQgMjguODc0IDE4LjEyMDZDMjguODgzMiAxOC4zNzIgMjguODQyMyAxOC42MjM0IDI4Ljc1MzkgMTguODU4OUMyOC42NjU1IDE5LjA5NDEgMjguNTMxNiAxOS4zMDk2IDI4LjM1OTQgMTkuNDkyN0wyMC4xMTEzIDI4LjI1ODNDMTkuOTM3IDI4LjQ0MzQgMTkuNzI2OCAyOC41OTEyIDE5LjQ5NDEgMjguNjkzOEMxOS4yNjE0IDI4Ljc5NjUgMTkuMDEwMiAyOC44NTIyIDE4Ljc1NTkgMjguODU2QzE4LjUwMTYgMjguODU5NyAxOC4yNDkzIDI4LjgxMTkgMTguMDEzNyAyOC43MTYzQzE3Ljc3NzkgMjguNjIwNiAxNy41NjM2IDI4LjQ3ODQgMTcuMzgzOCAyOC4yOTgzTDE2LjI1MzkgMjcuMTY4NUMxNS43NTExIDI2LjY2NTYgMTUuODgzMiAyNS45NTUyIDE2LjE1MTQgMjUuNTU0MkwxNi4yMDYxIDI1LjQ2NDRDMTYuMzI0MSAyNS4yNDg2IDE2LjM3NDIgMjUuMDAwOCAxNi4zNDk2IDI0Ljc1NDRDMTYuMzIxNCAyNC40NzMxIDE2LjE5NyAyNC4yMTAyIDE1Ljk5NzEgMjQuMDEwM0MxNS43OTcxIDIzLjgxMDMgMTUuNTM0MyAyMy42ODU5IDE1LjI1MjkgMjMuNjU3N0MxNC45NzE1IDIzLjYyOTcgMTQuNjg4NyAyMy42OTk1IDE0LjQ1MzEgMjMuODU2SDE0LjQ1MjFDMTQuMDQ5NCAyNC4xMjIyIDEzLjM0MDcgMjQuMjU1MiAxMi44Mzc5IDIzLjc1MTVMMTEuNjc5NyAyMi41OTMzQzExLjUwMzQgMjIuNDE2OSAxMS4zNjQgMjIuMjA3NCAxMS4yNjg2IDIxLjk3NzFDMTEuMTczMSAyMS43NDY3IDExLjEyMzEgMjEuNDk5OSAxMS4xMjMgMjEuMjUwNUMxMS4xMjMgMjEuMDAxIDExLjE3MzEgMjAuNzUzNSAxMS4yNjg2IDIwLjUyMjlDMTEuMzY0IDIwLjI5MjYgMTEuNTAzNCAyMC4wODMxIDExLjY3OTcgMTkuOTA2N0wxOS45NDkyIDExLjYzNjJDMjAuMjk1NCAxMS4yOTAyIDIwLjc2MTYgMTEuMDkxMiAyMS4yNTEgMTEuMDgwNlpNMjEuMjc4MyAxMi4zODA0QzIxLjEyMzcgMTIuMzgzOCAyMC45NzY1IDEyLjQ0NjggMjAuODY3MiAxMi41NTYyTDEyLjU5NjcgMjAuODI1N0MxMi41NDA5IDIwLjg4MTQgMTIuNDk3IDIwLjk0ODIgMTIuNDY2OCAyMS4wMjFDMTIuNDM2NyAyMS4wOTM4IDEyLjQyMDkgMjEuMTcxNyAxMi40MjA5IDIxLjI1MDVDMTIuNDIwOSAyMS4zMjkyIDEyLjQzNjcgMjEuNDA3MyAxMi40NjY4IDIxLjQ4QzEyLjQ5NyAyMS41NTI4IDEyLjU0MSAyMS42MTk2IDEyLjU5NjcgMjEuNjc1M0wxMy43MDYxIDIyLjc4MzdMMTMuNzMxNCAyMi43NzJDMTQuMjE2OSAyMi40NDg1IDE0Ljc5OTMgMjIuMzAzNSAxNS4zNzk5IDIyLjM2MDhDMTUuOTYwOCAyMi40MTgzIDE2LjUwNDIgMjIuNjc0NyAxNi45MTcgMjMuMDg3NEMxNy4zMjk4IDIzLjUwMDIgMTcuNTg3IDI0LjA0MzYgMTcuNjQ0NSAyNC42MjQ1QzE3LjcwMiAyNS4yMDU1IDE3LjU1NjUgMjUuNzg5MiAxNy4yMzI0IDI2LjI3NDlMMTcuMjMwNSAyNi4yNzU5QzE3LjIyNjEgMjYuMjgyMiAxNy4yMjI2IDI2LjI4OTMgMTcuMjE5NyAyNi4yOTY0TDE4LjMwMTggMjcuMzgwNEMxOC4zNTg1IDI3LjQzNzIgMTguNDI2NiAyNy40ODIgMTguNTAxIDI3LjUxMjJDMTguNTc1NSAyNy41NDI1IDE4LjY1NTkgMjcuNTU3NCAxOC43MzYzIDI3LjU1NjJDMTguODE2NiAyNy41NTQ5IDE4Ljg5NjMgMjcuNTM3OCAxOC45Njk3IDI3LjUwNTRDMTkuMDQzIDI3LjQ3MjkgMTkuMTA5MSAyNy40MjYxIDE5LjE2NDEgMjcuMzY3N0wyNy40MTMxIDE4LjYwMjFDMjcuNDY3MyAxOC41NDQyIDI3LjUwOTMgMTguNDc2MSAyNy41MzcxIDE4LjQwMTlDMjcuNTY0OSAxOC4zMjc2IDI3LjU3ODEgMTguMjQ4NyAyNy41NzUyIDE4LjE2OTRDMjcuNTcyMiAxOC4wOTAyIDI3LjU1MzggMTguMDExOSAyNy41MjA1IDE3LjkzOTlDMjcuNDg3MiAxNy44Njc5IDI3LjQzOTQgMTcuODAzMiAyNy4zODA5IDE3Ljc0OTVMMjYuMzIyMyAxNi43Nzc4QzI2LjI5MjUgMTYuNzg4NSAyNi4yNjQ4IDE2LjgwNTMgMjYuMjQzMiAxNi44Mjg2QzI2LjAyMTcgMTcuMDc4OCAyNS43NTI5IDE3LjI4MjcgMjUuNDUyMSAxNy40MjgyQzI1LjE1IDE3LjU3NDMgMjQuODIxNCAxNy42NTg1IDI0LjQ4NjMgMTcuNjc2M0MyNC4xNTExIDE3LjY5NCAyMy44MTUgMTcuNjQ1MiAyMy40OTkgMTcuNTMxN0MyMy4xODMyIDE3LjQxODMgMjIuODkyOCAxNy4yNDI5IDIyLjY0NTUgMTcuMDE2MUMyMi4zOTgyIDE2Ljc4OTMgMjIuMTk4OCAxNi41MTUzIDIyLjA1ODYgMTYuMjEwNEMyMS45MTgzIDE1LjkwNTUgMjEuODQwNCAxNS41NzUyIDIxLjgyOTEgMTUuMjM5N0MyMS44MTc4IDE0LjkwNDMgMjEuODczNyAxNC41NyAyMS45OTMyIDE0LjI1NjNDMjIuMTEyMSAxMy45NDQyIDIyLjI5MTUgMTMuNjU4NyAyMi41MjE1IDEzLjQxNjVMMjIuNTU0NyAxMy4zNjU3QzIyLjU1OTQgMTMuMzU1MiAyMi41NjA3IDEzLjM0MzcgMjIuNTYzNSAxMy4zMzI1TDIxLjY5NzMgMTIuNTM4NlYxMi41Mzc2QzIxLjU4MzMgMTIuNDMzMSAyMS40MzI5IDEyLjM3NyAyMS4yNzgzIDEyLjM4MDRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2UgdGlja2V0cyBmb3IgdGhlIGZvbGxvd2luZzwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbi48L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmR1cGxpY2F0ZUNvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmR1cGxpY2F0ZUNvdW50IDonMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50IDonMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIb3VzZSBLZWVwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTGFiZWwgYW5kIFRleHRhcmVhIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNjcmlwdGlvbiAoT3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9XCIzXCIgWyhuZ01vZGVsKV09XCJjb21tZW50VGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJjYW5jZWxSYXNpZWQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTBcIiAoY2xpY2spPVwic3VibWl0UmFpc2VkKClcIj5cclxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VQb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXgtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTW9kYWxPcGVuXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBib3JkZXItZ3JheSBwLTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBzdGFydC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKXgFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXIgdy0xMDAgaC01MjVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aFwiIGFwcE1hZ25pZmllciBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tzZWxlY3RJbWFnZUFycmF5Py5lbnRyeVRtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHB5LTIgcHgtMFwiPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBweS0yIG1iLTIgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlSW1hZ2UoKVwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==