bpm-core 0.0.55 → 0.0.56

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.
Files changed (52) hide show
  1. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +13 -10
  2. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +5 -3
  3. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +7 -5
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +5 -3
  5. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +196 -36
  6. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +5 -3
  7. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +5 -3
  8. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
  9. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +5 -3
  10. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +5 -3
  11. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +3 -3
  12. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +6 -4
  13. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +5 -3
  14. package/esm2022/lib/components/shared-components/table/table.component.mjs +240 -0
  15. package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
  16. package/esm2022/lib/enums/actions.enum.mjs +21 -0
  17. package/esm2022/lib/enums/colors.enum.mjs +6 -0
  18. package/esm2022/lib/enums/events.enum.mjs +6 -0
  19. package/esm2022/lib/helpers/shared.helper.mjs +26 -0
  20. package/esm2022/lib/interfaces/action.interface.mjs +2 -0
  21. package/esm2022/lib/regex/index.mjs +2 -0
  22. package/esm2022/lib/services/core.service.ts.mjs +7 -5
  23. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +5 -3
  24. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +7 -4
  25. package/esm2022/public-api.mjs +2 -1
  26. package/fesm2022/bpm-core.mjs +241 -67
  27. package/fesm2022/bpm-core.mjs.map +1 -1
  28. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +2 -0
  29. package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +2 -1
  30. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +2 -1
  31. package/lib/components/app-component-sections/previous-requests/previous-requests.component.d.ts +123 -1
  32. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +2 -1
  33. package/lib/components/app-component-sections/workflow-section/workflow-section.component.d.ts +2 -1
  34. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +2 -1
  35. package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +2 -1
  36. package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +2 -1
  37. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +2 -1
  38. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +2 -1
  39. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  40. package/lib/components/shared-components/table/table.component.d.ts +76 -0
  41. package/lib/directives/skip-location.directive.d.ts +10 -0
  42. package/lib/enums/actions.enum.d.ts +19 -0
  43. package/lib/enums/colors.enum.d.ts +4 -0
  44. package/lib/enums/events.enum.d.ts +4 -0
  45. package/lib/helpers/shared.helper.d.ts +1 -0
  46. package/lib/interfaces/action.interface.d.ts +7 -0
  47. package/lib/regex/index.d.ts +1 -0
  48. package/lib/services/core.service.ts.d.ts +2 -0
  49. package/lib/testComponent/general-approver-section/general-approver-section.component.d.ts +2 -1
  50. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +2 -1
  51. package/package.json +1 -1
  52. package/public-api.d.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  import { DeleteDialogComponent } from '../../dialogs/delete-dialog/delete-dialog.component';
2
2
  import { NoopScrollStrategy } from '@angular/cdk/overlay';
3
- import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, forwardRef, inject, Input, Output, ViewChild } from '@angular/core';
3
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, Output, ViewChild } from '@angular/core';
4
4
  import * as FileSaver from 'file-saver';
5
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
6
  import { NgClass, NgForOf, NgIf, NgTemplateOutlet } from "@angular/common";
@@ -9,6 +9,7 @@ import { ControlValueAccessorDirective } from '../control-value-accessor.directi
9
9
  import { MatDialog } from '@angular/material/dialog';
10
10
  import { MatTooltip } from "@angular/material/tooltip";
11
11
  import { FormLabelComponent } from '../form-label/form-label.component';
12
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
12
13
  import * as i0 from "@angular/core";
13
14
  export class DocsUploaderComponent extends ControlValueAccessorDirective {
14
15
  maxSizeFlag = true;
@@ -59,6 +60,7 @@ export class DocsUploaderComponent extends ControlValueAccessorDirective {
59
60
  maxSize = '10';
60
61
  inputFile;
61
62
  dialog = inject(MatDialog);
63
+ destroyRef = inject(DestroyRef);
62
64
  validImageTypes = {
63
65
  jpg: ['image/jpeg', 'image/pjpeg'],
64
66
  JPG: ['image/jpeg', 'image/pjpeg'],
@@ -287,7 +289,7 @@ export class DocsUploaderComponent extends ControlValueAccessorDirective {
287
289
  "fileContents": field.fileContents,
288
290
  };
289
291
  this.uploading = true;
290
- this.coreService.getAttachments(data).subscribe({
292
+ this.coreService.getAttachments(data).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
291
293
  next: (form) => {
292
294
  const newObj = {
293
295
  "fileName": field.fileName,
@@ -369,7 +371,7 @@ export class DocsUploaderComponent extends ControlValueAccessorDirective {
369
371
  this.selectedTemplateAttachment.emit(null);
370
372
  }
371
373
  downloadFile(event, field) {
372
- this.coreService.loadFile(field.attachmentId).subscribe((responseObject) => {
374
+ this.coreService.loadFile(field.attachmentId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((responseObject) => {
373
375
  const fileInformation = responseObject.body;
374
376
  this.coreService.saveFile(fileInformation);
375
377
  /*const fileBlob = this.coreService.dataURItoBlob(fileInformation.fileContents);
@@ -505,4 +507,4 @@ class FileInfo {
505
507
  this.filesize = filesize;
506
508
  }
507
509
  }
508
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsU0FBUyxFQUNULHNCQUFzQixFQUV0QixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEVBQVksaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBMkJ4RSxNQUFNLE9BQU8scUJBQTRCLFNBQVEsNkJBQW1DO0lBQ2xGLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNqQixPQUFPLENBQVU7SUFDakIsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQyxlQUFlO0lBQ2pDLGVBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxlQUFlO0lBQ3JDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDakIsS0FBSyxDQUFPO0lBQ1osaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sQ0FBVTtJQUNqQixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDYixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLEtBQUssQ0FBVTtJQUNmLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLDBCQUEwQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDMUQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDZCxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIscUNBQXFDLEdBQUcsS0FBSyxDQUFDO0lBQzlDLE1BQU0sQ0FBVztJQUMxQixRQUFRLENBQVM7SUFDakIsU0FBUyxHQUFHO1FBQ1YsUUFBUSxFQUFFLEVBQUU7UUFDWixZQUFZLEVBQUUsRUFBRTtRQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBQ3BGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxzQkFBc0I7S0FDakYsQ0FBQTtJQUNELGNBQWMsR0FBRyxFQUFFLENBQUM7SUFFcEIsVUFBVSxDQUFZO0lBQ2IsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUNsQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDcEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixZQUFZLEdBQUcsVUFBVSxDQUFDO0lBQzFCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUMzQixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDM0IsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN6QyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3hDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2pDLHFCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNBLFNBQVMsQ0FBYTtJQUM5QyxNQUFNLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRXBCLGVBQWUsR0FBRztRQUNqQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ2xDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7UUFDbEMsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNuQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDbkIsQ0FBQTtJQUVELGdCQUFnQixHQUFHO1FBQ2pCLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1FBQ3hCLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7UUFDbEMsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNsQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ25DLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUN6QyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDbkIsQ0FBQTtJQUVELGNBQWMsR0FBRztRQUNmLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDO1FBQzFCLEtBQUssRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQzdCLE1BQU0sRUFBRSxDQUFDLHlFQUF5RSxDQUFDO1FBQ25GLEtBQUssRUFBRSxDQUFDLCtCQUErQixDQUFDO1FBQ3hDLE1BQU0sRUFBRSxDQUFDLDJFQUEyRSxDQUFDO1FBQ3JGLEtBQUssRUFBRSxDQUFDLCtCQUErQixDQUFDO1FBQ3hDLE1BQU0sRUFBRSxDQUFDLHdFQUF3RSxDQUFDO1FBQ2xGLEtBQUssRUFBRSxDQUFDLHlDQUF5QyxDQUFDO1FBQ2xELEtBQUssRUFBRSxDQUFDLDBCQUEwQixDQUFDO1FBQ25DLE1BQU0sRUFBRSxDQUFDLG1FQUFtRSxDQUFDO1FBQzdFLEtBQUssRUFBRSxDQUFDLGlCQUFpQixFQUFFLDhCQUE4QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDO1FBQ2hHLEtBQUssRUFBRSxDQUFDLDRCQUE0QixFQUFFLGlCQUFpQixDQUFDO1FBQ3hELEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNuQixLQUFLLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDckIsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxDQUFDO1FBQ2hFLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNyQix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDO1FBQzFCLEtBQUssRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQ3pCLDhCQUE4QjtRQUM5QixLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsd0JBQXdCO1FBQ3hCLHVDQUF1QztRQUN2Qyx3Q0FBd0M7UUFDeEMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNwQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ3JDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNwQixLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDcEIsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO0tBQzVDLENBQUE7SUFHZ0IsYUFBYSxHQUFHO1FBQy9CLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDO0tBQzNCLENBQUE7SUFDRCxTQUFTLENBQVU7SUFDbkIsV0FBVyxDQUFVO0lBRXJCLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQWU7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUFzQjtRQUMxQyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDN0MsT0FBTyxZQUFZLENBQUE7UUFDckIsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNyRCxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7YUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakcsT0FBTyx3Q0FBd0MsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEtBQVU7UUFDbkQsSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUscUNBQXFDLENBQUMsQ0FBQztZQUNwRixDQUFDO2lCQUFNLElBQUksS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO2lCQUFNLElBQUksS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUMzQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDeEQsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO1lBQzVDLGNBQWMsRUFBRSxJQUFJLGtCQUFrQixFQUFFO1NBQ3pDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNoRCxJQUFJLFdBQVcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWE7UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO1FBQ2pFLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFVO1FBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxNQUFNLElBQUksR0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0RixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQVU7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ25CLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNuQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDbkIsRUFBRSxFQUNGLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztZQUNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQztZQUVELEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBVSxFQUFFLFFBQWtCO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxLQUFVLEVBQUUsUUFBa0I7UUFDbkUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CO2dCQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBVSxFQUFFLFFBQWtCO1FBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbkIsTUFBTSxZQUFZLEdBQUksTUFBTSxDQUFDLE1BQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELFFBQVEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxZQUFvQixFQUFFLFFBQWtCO1FBQy9ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sUUFBUSxHQUFHO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ25CLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVUsRUFBRSxxQkFBOEI7UUFDM0QsTUFBTSxJQUFJLEdBQUc7WUFDWCxpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDbkMsQ0FBQTtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM5QyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbEIsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUMxQixjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO29CQUM1QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRO29CQUNwQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7aUJBQ25DLENBQUE7Z0JBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO29CQUMxQixJQUFJLElBQUksQ0FBQyxxQ0FBcUM7d0JBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQzVGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDNUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUM1QyxDQUFDO3FCQUFNLENBQUM7b0JBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUM3QixDQUFDO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELGtCQUFrQixDQUFDLElBQWM7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFHRCxlQUFlLENBQUMsS0FBVTtRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7WUFDN0IsT0FBUSxFQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QyxPQUFRLEVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUMxQyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO2FBQU0sSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDOUIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckYsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDakUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUM1QyxDQUFDO1FBQ0Qsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUNyRCxDQUFDLGNBQThCLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQzFDOzs7Ozs7OzJDQU8rQjtRQUNqQyxDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUNyRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxJQUFJLENBQUksS0FBYztRQUM1QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFTO1FBQ2xDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDM0IsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQzt1R0E1WlUscUJBQXFCOzJGQUFyQixxQkFBcUIsK2pDQVJyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw4S0NqREgsb3VTQXlMQSx5bkZEdEpJLE9BQU8sb0ZBRVAsUUFBUSxrRkFFUixPQUFPLDhFQUNQLFVBQVUsaVJBQ1Ysa0JBQWtCOzsyRkFVVCxxQkFBcUI7a0JBeEJqQyxTQUFTOytCQUNFLG1CQUFtQixXQUdwQixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLGtCQUFrQjtxQkFDbkIsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBTVEsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSwwQkFBMEI7c0JBQW5DLE1BQU07Z0JBR0UsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHFDQUFxQztzQkFBN0MsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBV0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2tCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVzs7QUErV3hCLE1BQU0sUUFBUTtJQUVIO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFMVCxZQUNTLFFBQWdCLEVBQ2hCLElBQVksRUFDWixRQUFnQixFQUNoQixZQUFvQixFQUNwQixRQUFnQjtRQUpoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVE7SUFDckIsQ0FBQztDQUNOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWxldGVEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Tm9vcFNjcm9sbFN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQge0RvY3VtZW50RmlsZX0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7Rm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRFcnJvciwgTWF0SGludH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZX0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtNYXRUb29sdGlwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xyXG5pbXBvcnQgeyBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWxhYmVsL2Zvcm0tbGFiZWwuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZG9jcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jcy11cGxvYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdEVycm9yLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE1hdEhpbnQsXHJcbiAgICBNYXRUb29sdGlwLFxyXG4gICAgRm9ybUxhYmVsQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERvY3NVcGxvYWRlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2NzVXBsb2FkZXJDb21wb25lbnQ8VHlwZT4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBtYXhTaXplRmxhZyA9IHRydWU7XHJcbiAgbWF4U2l6ZVZhbHVlOiBhbnk7XHJcbiAgd3JvbmdFeHRlbnNpb25GbGFnID0gdHJ1ZTtcclxuICBASW5wdXQoKSB1c2VDcm9wOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZvcm1LZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkb3dubG9hZExpbmsgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QWN0aW9ucyA9IHRydWU7XHJcbiAgQElucHV0KCkgc3R5bGVIZWlnaHQgPSAnJzsgLy8gbWVkaXVtLCBtaW5pXHJcbiAgQElucHV0KCkgZmlsZUlucHV0SGVpZ2h0ID0gJyc7IC8vIG1lZGl1bSwgbWluaVxyXG4gIEBJbnB1dCgpIHN0eWxlV2lkdGggPSAnNic7XHJcbiAgQElucHV0KCkgaGludHMhOiBhbnk7XHJcbiAgQElucHV0KCkgYWxsb3dlZEV4dGVuc2lvbnMgPSAnJztcclxuICBASW5wdXQoKSBjYWxsQXBpOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXkgPSAnJztcclxuICB2YWxpZEV4dGVuc2lvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgYXR0YWNoVHlwZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZEZpbGVzOiBEb2N1bWVudEZpbGVbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFRlbXBsYXRlQXR0YWNobWVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBmaWxlTm90RHVwbGljYXRlZCA9IHRydWU7XHJcbiAgYWxsb3dlZEZpbGVTaXplID0gdHJ1ZTtcclxuICBASW5wdXQoKSBnZXREYXRhRnJvbVRlbXBsYXRlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWxsb3dGaWxlQ29udGVudHNXaXRoTXVsdGlBdHRhY2htZW50cyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nW107XHJcbiAgZmlsZXNpemU6IHN0cmluZztcclxuICB3cm9uZ0ZpbGUgPSB7XHJcbiAgICBtaW1lVHlwZTogXCJcIixcclxuICAgIGZpbGVDb250ZW50czogXCJcIixcclxuICAgIGZpbGVOYW1lOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2FyJyA/IFwi2KfZhdiq2K/Yp9ivINin2YTZhdmE2YEg2K7Yp9i32YnYoVwiIDogXCJXcm9uZyBGaWxlIEV4dGVuc2lvblwiLFxyXG4gICAgbmFtZTogdGhpcy5pMThuLmxhbmd1YWdlID09ICdhcicgPyBcItin2YXYqtiv2KfYryDYp9mE2YXZhNmBINiu2KfYt9mJ2KFcIiA6IFwiV3JvbmcgRmlsZSBFeHRlbnNpb25cIlxyXG4gIH1cclxuICBhbGxBdHRhY2htZW50cyA9IFtdO1xyXG5cclxuICB1cGxvYWRGb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2lnblR5cGUgPSAnU2lnbic7XHJcbiAgQElucHV0KCkgc2hvd1NpZ25CdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcmludFR5cGUgPSAnUHJpbnQnO1xyXG4gIEBJbnB1dCgpIHNob3dQcmludEJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRvd25sb2FkVHlwZSA9ICdEb3dubG9hZCc7XHJcbiAgQElucHV0KCkgc2hvd0Rvd25sb2FkQnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJldmVudEZpbGVDb250ZW50cyA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBhZGRTaWduYXR1cmVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludEFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGVtaXRlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZEFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgbWF4U2l6ZSA9ICcxMCc7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRGaWxlJykgaW5wdXRGaWxlOiBFbGVtZW50UmVmO1xyXG4gIGRpYWxvZzogTWF0RGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZylcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZEltYWdlVHlwZXMgPSB7XHJcbiAgICBqcGc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgSlBHOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIGpwZWc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgcG5nOiBbJ2ltYWdlL3BuZyddXHJcbiAgfVxyXG5cclxuICB2YWxpZEltZ1BkZlR5cGVzID0ge1xyXG4gICAgcGRmOiBbJ2FwcGxpY2F0aW9uL3BkZiddLFxyXG4gICAganBnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIEpQRzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBqcGVnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIGJtcDogWydpbWFnZS9ibXAnLCAnaW1hZ2UveC13aW5kb3dzLWJtcCddLFxyXG4gICAgcG5nOiBbJ2ltYWdlL3BuZyddXHJcbiAgfVxyXG5cclxuICB2YWxpZEZpbGVUeXBlcyA9IHtcclxuICAgICdwZGYnOiBbJ2FwcGxpY2F0aW9uL3BkZiddLFxyXG4gICAgJ2RvYyc6IFsnYXBwbGljYXRpb24vbXN3b3JkJ10sXHJcbiAgICAnZG9jeCc6IFsnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXSxcclxuICAgICdwcHQnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J10sXHJcbiAgICAncHB0eCc6IFsnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbiddLFxyXG4gICAgJ3Bwcyc6IFsnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnXSxcclxuICAgICdwcHN4JzogWydhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93J10sXHJcbiAgICAnb2R0JzogWydhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnXSxcclxuICAgICd4bHMnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCddLFxyXG4gICAgJ3hsc3gnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0J10sXHJcbiAgICAnemlwJzogWydhcHBsaWNhdGlvbi96aXAnLCAnYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCcsICdtdWx0aXBhcnQveC16aXAnLCAnYXBwbGljYXRpb24vemlwJ10sXHJcbiAgICAnbXNnJzogWydhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9vaycsICdhcHBsaWNhdGlvbi9tc2cnXSxcclxuICAgICdjc3YnOiBbJ3RleHQvY3N2J10sXHJcbiAgICAndHh0JzogWyd0ZXh0L3BsYWluJ10sXHJcbiAgICAncnRmJzogWydhcHBsaWNhdGlvbi9ydGYnLCAnYXBwbGljYXRpb24veC1ydGYnLCAndGV4dC9yaWNodGV4dCddLFxyXG4gICAgJ2h0bWwnOiBbJ3RleHQvaHRtbCddLFxyXG4gICAgLy8gJ21wNCc6IFsndmlkZW8vbXA0J10sXHJcbiAgICAvLyAnbTR2JzogWyd2aWRlby9tcDQnXSxcclxuICAgICdtb3YnOiBbJ3ZpZGVvL3F1aWNrdGltZSddLFxyXG4gICAgJ3dtdic6IFsndmlkZW8veC1tcy13bXYnXSxcclxuICAgIC8vICdhdmknOiBbJ3ZpZGVvL3gtbXN2aWRlbyddLFxyXG4gICAgJ21wZyc6IFsnbXBnJ10sXHJcbiAgICAncm12Yic6IFsncm12YiddLFxyXG4gICAgLy8gJ29ndic6IFsndmlkZW8vb2dnJ10sXHJcbiAgICAvLyAnM2dwJzogWyd2aWRlby8zZ3BwJywgJ2F1ZGlvLzNncHAnXSxcclxuICAgIC8vICczZzInOiBbJ3ZpZGVvLzNncHAyJywgJ2F1ZGlvLzNncHAnXSxcclxuICAgICdqcGcnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgICdqcGVnJzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICAncG5nJzogWydpbWFnZS9wbmcnXSxcclxuICAgICdnaWYnOiBbJ2ltYWdlL2dpZiddLFxyXG4gICAgJ2JtcCc6IFsnaW1hZ2UvYm1wJywgJ2ltYWdlL3gtd2luZG93cy1ibXAnXVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRQZGZUeXBlcyA9IHtcclxuICAgICdwZGYnOiBbJ2FwcGxpY2F0aW9uL3BkZiddLFxyXG4gIH1cclxuICB1cGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgbGVuZ3RoRXJyb3I6IGJvb2xlYW47XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGxBdHRhY2htZW50cyA9IFsuLi50aGlzLmF0dGFjaG1lbnRzXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpbGVUeXBlKGF0dGFjaG1lbnQ6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWF0dGFjaG1lbnQuZmlsZU5hbWU/LmluY2x1ZGVzKCcuJykgJiYgYXR0YWNobWVudC5taW1lVHlwZS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrRmlsZVR5cGUoYXR0YWNobWVudC5taW1lVHlwZSk7XHJcbiAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGaWxlVHlwZShhdHRhY2htZW50LmZpbGVOYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhdHRhY2htZW50Lm1pbWVUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpbGVUeXBlKGF0dGFjaG1lbnREYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ21zZycpIHtcclxuICAgICAgcmV0dXJuICdlbWFpbC1pY29uJ1xyXG4gICAgfSBlbHNlIGlmIChhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpID09ICdqcGVnJykge1xyXG4gICAgICByZXR1cm4gJ2pwZydcclxuICAgIH0gZWxzZSBpZiAoYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAneGxzeCcgfHwgYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAneGxzJykge1xyXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbDtjaGFyc2V0PXV0Zi04JztcclxuICAgIH1cclxuICAgIHJldHVybiBhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpO1xyXG4gIH1cclxuXHJcbiAgYXR0YWNobWVudEFjdGlvbih0eXBlOiBhbnksIGluZGV4OiBudW1iZXIsIGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09IFwiZG93bmxvYWRcIikge1xyXG4gICAgICBpZiAodGhpcy5kb3dubG9hZExpbmspIHtcclxuICAgICAgICB3aW5kb3cub3BlbihmaWVsZD8uYXR0YWNobWVudElkLCAnX2JsYW5rJywgJ3RvcD0wLGxlZnQ9MCxoZWlnaHQ9YXV0byx3aWR0aD1hdXRvJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQ/LmF0dGFjaG1lbnRJZCkge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKHR5cGUsIGZpZWxkKTtcclxuICAgICAgfSBlbHNlIGlmIChmaWVsZD8uZmlsZUNvbnRlbnRzKSB7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGVOZXcoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkRXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZShpbmRleClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVBdHRhY2hlZEZpbGUoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybURlbGV0ZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBwYW5lbENsYXNzOiBbJ21haW4tcG9wdXAnLCAnY29uZmlybS1kaWFsb2cnXSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBOb29wU2Nyb2xsU3RyYXRlZ3koKSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgaWYgKHJldHVyblZhbHVlID09ICd5ZXMnKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVNdWx0aShpbmRleClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNdWx0aShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRpc3BsYXllZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmFsbEF0dGFjaG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGVOZXcoZmlsZURhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmdldEZpbGVUeXBlKGZpbGVEYXRhKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZURhdGEuZmlsZUNvbnRlbnRzXSwge3R5cGU6IGZpbGVUeXBlfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGAke2ZpbGVEYXRhLmZpbGVOYW1lfWApO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgaWYgKGlucHV0Py5maWxlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChpbnB1dCk7XHJcbiAgICAgIHRoaXMucHJvY2Vzc1VwbG9hZGVkRmlsZShpbnB1dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUZpbGVJbnB1dChpbnB1dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaW5wdXQuZmlsZXMgJiYgdGhpcy5mb3JtS2V5ID09PSAnVFNWJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQoaW5wdXQuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBpbnB1dC5maWxlc1swXTtcclxuICAgIGxldCBmaWxlVHlwZSA9IGZpbGUubmFtZT8uZW5kc1dpdGgoXCIubXNnXCIpID8gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rJyA6IGZpbGUudHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5hY2NlcHQ/Lmxlbmd0aCAmJiAhdGhpcy5hY2NlcHQuaW5jbHVkZXMoZmlsZVR5cGUpKSB7XHJcbiAgICAgIGFsZXJ0KHRoaXMuaTE4bi50cmFuc2xhdGUoJ3RoaXNJc0ludmFsaWRGaWxlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGxvYWRGb3JtPy5nZXQoJ2ZpbGUnKT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgICB0aGlzLnVwbG9hZEZvcm0/LmdldCgnbmFtZScpPy5zZXRWYWx1ZShmaWxlPy5uYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1VwbG9hZGVkRmlsZShpbnB1dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXBsb2FkaW5nKSB7XHJcbiAgICAgIGNvbnN0IGZpbGVEYXRhID0gbmV3IEZpbGVJbmZvKFxyXG4gICAgICAgIGlucHV0LmZpbGVzWzBdLm5hbWUsXHJcbiAgICAgICAgaW5wdXQuZmlsZXNbMF0ubmFtZSxcclxuICAgICAgICBpbnB1dC5maWxlc1swXS50eXBlLFxyXG4gICAgICAgICcnLFxyXG4gICAgICAgIHRoaXMuZmlsZXNpemVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy51cGRhdGVGaWxlUHJvcGVydGllcyhpbnB1dCwgZmlsZURhdGEpO1xyXG4gICAgICBpZiAoIXRoaXMubGVuZ3RoRXJyb3IgJiYgK3RoaXMuZmlsZXNpemUgPCArdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVNpemUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXBsb2FkVmFsaWRBbmROb25EdXBsaWNhdGVGaWxlKGlucHV0LCBmaWxlRGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVNpemUgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsZVByb3BlcnRpZXMoaW5wdXQ6IGFueSwgZmlsZUluZm86IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLm1heFNpemVWYWx1ZSA9IHRoaXMubWF4U2l6ZSA/IHRoaXMubWF4U2l6ZSA6IDE7XHJcbiAgICB0aGlzLmZpbGVzaXplID0gKChpbnB1dC5maWxlc1swXS5zaXplIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDQpO1xyXG4gICAgdGhpcy5tYXhTaXplRmxhZyA9ICt0aGlzLmZpbGVzaXplIDwgK3RoaXMubWF4U2l6ZTtcclxuICAgIHRoaXMubGVuZ3RoRXJyb3IgPSB0aGlzLmRpc3BsYXllZEZpbGVzPy5sZW5ndGggPj0gK3RoaXMubWF4TGVuZ3RoO1xyXG4gICAgdGhpcy53cm9uZ0V4dGVuc2lvbkZsYWcgPSB0aGlzLmlzVmFsaWRNaW1lVHlwZShpbnB1dC5maWxlc1swXS50eXBlKTtcclxuICAgIHRoaXMudmFsaWRFeHRlbnNpb24gPSB0aGlzLmlzVmFsaWRFeHRlbnNpb24oaW5wdXQuZmlsZXNbMF0ubmFtZS5zcGxpdCgnLicpLnBvcCgpLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy52YWx1ZSA9IGZpbGVJbmZvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRWYWxpZEFuZE5vbkR1cGxpY2F0ZUZpbGUoaW5wdXQ6IGFueSwgZmlsZURhdGE6IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWxpZEV4dGVuc2lvbikge1xyXG4gICAgICBpZiAodGhpcy5nZXREYXRhRnJvbVRlbXBsYXRlKSB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQoaW5wdXQpO1xyXG4gICAgICB0aGlzLnJlYWRGaWxlQW5kVXBsb2FkKGlucHV0LmZpbGVzWzBdLCBmaWxlRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuZW1pdEVtcHR5RmlsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkRmlsZUFuZFVwbG9hZChmaWxlOiBGaWxlLCBmaWxlSW5mbzogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlQ29udGVudHMgPSAocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpLnNwbGl0KCcsJylbMV07XHJcbiAgICAgIGZpbGVJbmZvLmZpbGVDb250ZW50cyA9IGZpbGVDb250ZW50cztcclxuICAgICAgZmlsZUluZm8uZmlsZXNpemUgPSB0aGlzLmZpbGVzaXplO1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZFNpbmdsZUZpbGUoZmlsZUNvbnRlbnRzLCBmaWxlSW5mbyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbGVOb3REdXBsaWNhdGUoZmlsZUluZm8pKSB7XHJcbiAgICAgICAgdGhpcy5hZGRNdWx0aUF0dGFjaG1lbnRzKGZpbGVJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRTaW5nbGVGaWxlKGZpbGVDb250ZW50czogc3RyaW5nLCBmaWxlSW5mbzogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZU5vdER1cGxpY2F0ZWQgPSB0aGlzLmlzRmlsZU5vdER1cGxpY2F0ZShmaWxlSW5mbyk7XHJcbiAgICBpZiAoIXRoaXMuZmlsZU5vdER1cGxpY2F0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZS5maWxlQ29udGVudHMgPSBmaWxlQ29udGVudHM7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSlcclxuICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLnZhbHVlKVxyXG4gICAgaWYgKHRoaXMuY2FsbEFwaSkge1xyXG4gICAgICB0aGlzLmFkZEF0dGFjaG1lbnRzKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEVtcHR5RmlsZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVtcHR5T2JqID0ge1xyXG4gICAgICBtaW1lVHlwZTogXCJcIixcclxuICAgICAgZmlsZUNvbnRlbnRzOiBcIlwiLFxyXG4gICAgICBmaWxlTmFtZTogXCJcIixcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdChlbXB0eU9iailcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NBdHRhY2htZW50cyhmaWVsZDogYW55LCBhbGxvd011bHRpQXR0YWNobWVudHM6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIFwiZmlsZURlc2NyaXB0aW9uXCI6IFwiXCIsXHJcbiAgICAgIFwiYXR0YWNobWVudGNvbW1lbnRcIjogXCJcIixcclxuICAgICAgXCJmaWxlTmFtZVwiOiBmaWVsZC5maWxlTmFtZSxcclxuICAgICAgXCJtaW1lVHlwZVwiOiBmaWVsZC5taW1lVHlwZSxcclxuICAgICAgXCJmaWxlQ29udGVudHNcIjogZmllbGQuZmlsZUNvbnRlbnRzLFxyXG4gICAgfVxyXG4gICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb3JlU2VydmljZS5nZXRBdHRhY2htZW50cyhkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3T2JqID0ge1xyXG4gICAgICAgICAgXCJmaWxlTmFtZVwiOiBmaWVsZC5maWxlTmFtZSxcclxuICAgICAgICAgIFwiYXR0YWNobWVudElkXCI6IGZvcm0uYXR0YWNobWVudC5hdHRhY2htZW50SWQsXHJcbiAgICAgICAgICBcIm1pbWVUeXBlXCI6IGZvcm0uYXR0YWNobWVudC5taW1lVHlwZSxcclxuICAgICAgICAgIFwiZmlsZUNvbnRlbnRzXCI6IGZpZWxkLmZpbGVDb250ZW50c1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWxsb3dNdWx0aUF0dGFjaG1lbnRzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hbGxvd0ZpbGVDb250ZW50c1dpdGhNdWx0aUF0dGFjaG1lbnRzKSBuZXdPYmpbJ2ZpbGVDb250ZW50cyddID0gZmllbGQuZmlsZUNvbnRlbnRzO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRGaWxlcyA9IHRoaXMuZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCA/IHRoaXMuZGlzcGxheWVkRmlsZXMgOiBbXVxyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRGaWxlcy5wdXNoKG5ld09iaik7XHJcbiAgICAgICAgICB0aGlzLmFsbEF0dGFjaG1lbnRzLnB1c2gobmV3T2JqKTtcclxuICAgICAgICAgIHRoaXMuZW1pdCh0aGlzLmRpc3BsYXllZEZpbGVzKTtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLmRpc3BsYXllZEZpbGVzKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5ld09iailcclxuICAgICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQobmV3T2JqKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgZXJyPy5lcnJvcj8ubWV0YT8ubWVzc2FnZXM/LmZvckVhY2goKG1zZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihtc2cubWVzc2FnZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQXR0YWNobWVudHMoKSB7XHJcbiAgICB0aGlzLnByb2Nlc3NBdHRhY2htZW50cyh0aGlzLmNvbnRyb2wudmFsdWUsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFkZE11bHRpQXR0YWNobWVudHMoZmllbGQ6IGFueSkge1xyXG4gICAgdGhpcy5wcm9jZXNzQXR0YWNobWVudHMoZmllbGQsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRmlsZU5vdER1cGxpY2F0ZShmaWxlOiBGaWxlSW5mbyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYWxsQXR0YWNobWVudHM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hbGxBdHRhY2htZW50cz8uZmluZEluZGV4KCgkZmlsZSkgPT4gKGZpbGUuZmlsZU5hbWUgPT09ICRmaWxlLmZpbGVOYW1lKSkgPT09IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNWYWxpZE1pbWVUeXBlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmF0dGFjaFR5cGUgPT0gJ3BkZicpIHtcclxuICAgICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXModGhpcy52YWxpZFBkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmF0dGFjaFR5cGUgPT0gJ2ltYWdlJykge1xyXG4gICAgICByZXR1cm4gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyh0aGlzLnZhbGlkSW1hZ2VUeXBlcykpLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRXh0ZW5zaW9uKHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ2ltYWdlJykge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRJbWFnZVR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJpbWFnZVBkZlwiKSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZEltZ1BkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGRmXCIpIHtcclxuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyh0aGlzLnZhbGlkUGRmVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZEZpbGVUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQXR0YWNoZWRGaWxlKCkge1xyXG4gICAgLy8gdGhpcy5maWVsZCA9IHRoaXMudmFsdWUgPSBuZXcgRmlsZUluZm8obnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobmV3IEZpbGVJbmZvKG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpKVxyXG4gICAgaWYgKHRoaXMuaW5wdXRGaWxlKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKHRoaXMuZmllbGQpO1xyXG4gICAgdGhpcy5lbWl0KHRoaXMudmFsdWUpXHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbClcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShldmVudCwgZmllbGQpIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UubG9hZEZpbGUoZmllbGQuYXR0YWNobWVudElkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwb25zZU9iamVjdDogeyBib2R5OiBhbnk7IH0pID0+IHtcclxuICAgICAgICBjb25zdCBmaWxlSW5mb3JtYXRpb24gPSByZXNwb25zZU9iamVjdC5ib2R5O1xyXG4gICAgICAgIHRoaXMuY29yZVNlcnZpY2Uuc2F2ZUZpbGUoZmlsZUluZm9ybWF0aW9uKVxyXG4gICAgICAgIC8qY29uc3QgZmlsZUJsb2IgPSB0aGlzLmNvcmVTZXJ2aWNlLmRhdGFVUkl0b0Jsb2IoZmlsZUluZm9ybWF0aW9uLmZpbGVDb250ZW50cyk7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtmaWxlQmxvYl0sIGZpbGVJbmZvcm1hdGlvbi5maWxlTmFtZSwge3R5cGU6IGZpbGVJbmZvcm1hdGlvbi5taW1lVHlwZX0pO1xyXG4gICAgICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgbGluay5ocmVmID0gYmxvYlVybDtcclxuICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZUluZm9ybWF0aW9uLmZpbGVOYW1lO1xyXG4gICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpOyovXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGVycm9yLmVycm9yPy5bJ21lc3NhZ2UnXSlcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdDxUPih2YWx1ZTogVCB8IFRbXSkge1xyXG4gICAgaWYgKHRoaXMucHJldmVudEZpbGVDb250ZW50cykge1xyXG4gICAgICB2YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgdGhpcy5kZWxldGVGaWxlQ29udGVudHModmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVGaWxlQ29udGVudHMoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdmaWxlQ29udGVudHMnIGluIGRhdGEpIHtcclxuICAgICAgZGVsZXRlIGRhdGEuZmlsZUNvbnRlbnRzO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaChlbGVtID0+IHRoaXMuZGVsZXRlRmlsZUNvbnRlbnRzKGVsZW0pKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEZpbGVJbmZvIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBmaWxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBtaW1lVHlwZTogc3RyaW5nLFxyXG4gICAgcHVibGljIGZpbGVDb250ZW50czogc3RyaW5nLFxyXG4gICAgcHVibGljIGZpbGVzaXplOiBzdHJpbmdcclxuICApIHsgfVxyXG59XHJcbiIsIkBpZiAoIWlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgQGlmKGxhYmVsKXtcclxuICAgICAgPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCIhcmVxdWlyZWRcIiBbdG9vbHRpcF09XCJ0b29sdGlwXCI+PC9hcHAtZm9ybS1sYWJlbD5cclxuICAgICAgfVxyXG4gICAgPHNlY3Rpb25cclxuICAgICAgW25nQ2xhc3NdPVwiaW5zaWRlVGFibGUgPyAnZmlsZS11cGxvYWRlci10YWJsZScgOiAnZmlsZS11cGxvYWRlcidcIiBjbGFzcz1cIiBtYi0yXCJcclxuICAgICAgW2NsYXNzLmluc2lkZVRhYmxlU3R5bGVdPVwiaW5zaWRlVGFibGVcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImluc2lkZVRhYmxlID8gJ2ZpbGUtdXBsb2FkZXItdGFibGUtZGV2JyA6ICcnXCIgY2xhc3M9XCJmaWxlLXVwbG9hZGVyLWlucHV0XCJcclxuICAgICAgICAoY2xpY2spPVwiZmlsZUF0dGFjaGVkLmNsaWNrKClcIj5cclxuICAgICAgICBAaWYgKCF1cGxvYWRpbmcpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIG1iLTFcIj5cclxuICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImluc2lkZVRhYmxlID8gJ2ZpbGUtdXBsb2FkZXItdGFibGUtc3ZnJyA6ICcnXCIgd2lkdGg9XCI0MVwiIGhlaWdodD1cIjM4XCIgdmlld0JveD1cIjAgMCA0MSAzOFwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMCAyMi4xOTQ3VjIwLjY3MzZDMC4wOTcxMzAzIDIwLjEwMTkgMC4wNzAwOTQgMTkuNTE0MSAwLjI3NjM3MSAxOC45NTMzQzEuMjgzNzIgMTYuMjA4NiAzLjIxMjMxIDE0LjUwMjMgNi4wNDIxIDEzLjgwOTRDNi43MDQ5OSAxMy42NDcyIDYuNjg0OTcgMTMuNjYzMiA2LjY5ODk5IDEyLjk4NDNDNi43MzIwMyAxMS4zMzIxIDYuOTk4MzkgOS43MTk5MiA3LjYyNDIzIDguMTc5ODZDOC44NjI4OSA1LjEzNjc4IDEwLjk0NjcgMi44Mzk2OSAxMy44ODE2IDEuMzkxNzVDMTcuMTY4IC0wLjIzMDQyNCAyMC41OTU2IC0wLjQ1MDcxOSAyNC4wNTUzIDAuODE1OThDMjcuNDkyOSAyLjA3NDY3IDI5Ljk2MjIgNC40MTU4MSAzMS40ODAyIDcuNzQ4MjhDMzEuNzc4NiA4LjQwMzE2IDMyLjAyNyA5LjA4MzA3IDMyLjE3MTIgOS43OTIwMkMzMi4yNDAyIDEwLjEzMTUgMzIuNDAzNSAxMC4yNTY2IDMyLjc1MjkgMTAuMzEwN0MzNi43MDEyIDEwLjkxNjUgMzkuMzM1OCAxMy4xMjU1IDQwLjY5NDYgMTYuODczNUM0MC45MDY5IDE3LjQ2MDMgNDAuOTE5OSAxOC4wNzMxIDQwLjk1OTkgMTguNjgyOUM0MC45NjQ5IDE4Ljc2MDEgNDAuOTM4OSAxOC44NDQyIDQxIDE4LjkxMTNWMjAuNTEyNEM0MC45MTA5IDIwLjk5NSA0MC45NjkgMjEuNDkzNyA0MC44NjA4IDIxLjk3MzRDNDAuNTI0NCAyMy40NjE0IDM5Ljg0NTQgMjQuNzgyMSAzOC44NTAxIDI1LjkyOTdDMzcuNDUyMiAyNy41NDE4IDM1LjcwNTkgMjguNTg4MiAzMy42MTYxIDI5LjA1MTlDMzIuNzkxIDI5LjIzNTEgMzEuOTQ5OSAyOS4yNTIxIDMxLjExMTcgMjkuMjkyMkMzMC42NTcxIDI5LjMxNDIgMzAuNTg0IDI5LjE5MyAzMC41OTIgMjguNzQ4NEMzMC42NDUxIDI1Ljg0NDYgMjkuODAyIDIzLjI1NzEgMjcuODYyNCAyMS4wNTkxQzI1Ljk5NzkgMTguOTQ2MyAyMy42NTk3IDE3LjcxNjcgMjAuODY3IDE3LjQwMTJDMTguODU1MyAxNy4xNzM5IDE2LjkwNTcgMTcuNDU5MyAxNS4wNjEyIDE4LjMzOTVDMTEuODMxOSAxOS44ODE2IDkuODE0MTYgMjIuNDA2OSA4Ljk2MTAyIDI1Ljg2OTZDOC43NDI3MyAyNi43NTM4IDguNjgyNjUgMjcuNjU4IDguNzA1NjggMjguNTcwMkM4LjcyMTcgMjkuMjExMSA4LjYwMjU0IDI5LjMxMjIgNy45NTk2OCAyOS4yOTcyQzUuOTUwOTggMjkuMjUxMSA0LjEwNTUxIDI4LjcyMzQgMi41ODE0NiAyNy4zNTk2QzEuMDc2NDQgMjYuMDE2OCAwLjA2ODA5MTMgMjQuMzk5NiAwLjA0MDA1MzcgMjIuMzAyOEMwLjA0MDA1MzcgMjIuMjYwNyAwLjAyNTAzMzYgMjIuMjI1NyAwIDIyLjE5MzdWMjIuMTk0N1pcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNERUUwRTJcIi8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjkuMDMwMyAyOC4yNjMyQzI5LjA2MDQgMzMuNDAzMSAyNC44NjU3IDM3LjYxODcgMTkuNjgzOCAzNy42NTQ4QzE0LjUxNjkgMzcuNjkwOCAxMC4yODUyIDMzLjQ5NTIgMTAuMjUyMSAyOC4zMDQyQzEwLjIyMDEgMjMuMTQwMyAxNC40Mjk3IDE4LjkxMjYgMTkuNjIyNyAxOC44OTQ2QzI0LjgwMzcgMTguODc2NiAyOC45OTkzIDIzLjA1NDIgMjkuMDMwMyAyOC4yNjMyWlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiIzhFOUFBMFwiLz5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0yMC41NTczIDI1LjI2NDRDMjAuNDYyMiAyNS40NDc3IDIwLjUwMTIgMjUuNTkzOSAyMC41MDEyIDI1LjczNEMyMC40OTgyIDI4LjIxNTQgMjAuNTAwMiAzMC42OTU3IDIwLjQ5ODIgMzMuMTc3QzIwLjQ5ODIgMzMuODA5OSAyMC4yMzM5IDM0LjE3MDQgMTkuNzQ2MiAzNC4yMjM0QzE5LjI2NDUgMzQuMjc2NSAxOC44OCAzMy45ODMxIDE4LjgxNjkgMzMuNTAyNUMxOC43OTU5IDMzLjM0NDMgMTguNzk2OSAzMy4xODMgMTguNzk2OSAzMy4wMjM4QzE4Ljc5NTkgMzAuNTgyNiAxOC43OTY5IDI4LjE0MjMgMTguNzk2OSAyNS43MDFDMTguNzk2OSAyNS41NzI4IDE4Ljc5NjkgMjUuNDQ0NyAxOC43OTY5IDI1LjIwMDNDMTguMTk3MSAyNS44MDMxIDE3LjY3NzQgMjYuMzI4OCAxNy4xNTI3IDI2Ljg1MDVDMTcuMDExNSAyNi45OTA3IDE2Ljg2ODMgMjcuMTM0OSAxNi43MDYxIDI3LjI0NzFDMTYuMzU2NiAyNy40ODY0IDE1LjkzNDEgMjcuNDQxMyAxNS42NDU3IDI3LjE1NEMxNS4zNjQzIDI2Ljg3NDYgMTUuMzIwMyAyNi40NDIgMTUuNTQ4NiAyNi4wOTI1QzE1LjYyMDcgMjUuOTgyNCAxNS43MTI4IDI1Ljg4MzIgMTUuODA2OSAyNS43ODkxQzE2Ljg2MTMgMjQuNzMwNyAxNy45MTY3IDIzLjY3MzMgMTguOTczMiAyMi42MTc5QzE5LjQwMTcgMjIuMTg5MyAxOS44Nzg0IDIyLjE3NjMgMjAuMzAzOSAyMi41OTg4QzIxLjM5MTQgMjMuNjgwMyAyMi40NzM5IDI0Ljc2NjcgMjMuNTUzMyAyNS44NTcyQzIzLjk4MDkgMjYuMjg5OCAyNC4wMTI5IDI2LjgwNjUgMjMuNjUzNCAyNy4xNjdDMjMuMjk5IDI3LjUyMTQgMjIuNzc1MyAyNy40ODQ0IDIyLjM0MzcgMjcuMDU2OEMyMS43NDk5IDI2LjQ3IDIxLjE2NjEgMjUuODczMiAyMC41NjAzIDI1LjI2NDRIMjAuNTU3M1pcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGOUY5RjlcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAodXBsb2FkaW5nKSB7XHJcbiAgICAgICAgICA8ZHMtaWNvbiBjbGFzcz1cInNmaSBzZmktc3Bpbm5lciBkLWlubGluZS1ibG9jayBzcGluIGZjLWNvcmFsIGZzLTMwLWltcFwiPjwvZHMtaWNvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmLTE0IGZjLWJsYWNrIGZ3LW5vcm1hbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYy1jb3JhbCBmdy1tZWRpdW1cIj57eyBpMThuLnRyYW5zbGF0ZSgnYnJvd3NlJykgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLTEwIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICAgICAge3sgYWxsb3dlZEV4dGVuc2lvbnMgPyBhbGxvd2VkRXh0ZW5zaW9ucyA6ICcnIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUgW2FjY2VwdF09XCJhY2NlcHRcIiBjbGFzcz1cImQtbm9uZVwiICNmaWxlQXR0YWNoZWQgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIEBpZiAoaGludHMpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgbWItM1wiPlxyXG4gICAgICAgIEBmb3IgKGhpbnQgb2YgaGludHM7IHRyYWNrIGhpbnQpIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGZzLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGRzLWljb25cclxuICAgICAgICAgICAgICAgIGljb249XCJ7e2hpbnQudmFsaWQgPyAnY2hlY2stY2lyY2xlLWYnIDogJ2NoZWNrLWNpcmNsZS1vJ319XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtMjQge3toaW50LnZhbGlkID8gJ2ZjLWdyZWVuJyA6ICdmYy1kYXJrLWdyYXknfX1cIj48L2RzLWljb24+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7e2hpbnQudmFsaWQgPyAnZmMtYmxhY2snIDogJ2ZjLWRhcmstZ3JheSd9fVwiPnt7IGhpbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKGhpbnQpIHtcclxuICAgICAgPG1hdC1oaW50IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJpbmZvXCIgY2xhc3M9XCJmcy0xNyBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1ibGFjayBsaW5lLWhlaWdodC0xXCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtaGludD5cclxuICAgIH1cclxuXHJcblxyXG4gICAgQGlmIChtdWx0aXBsZSkge1xyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3RcIj5cclxuICAgICAgICBAZm9yIChmaWxlIG9mIGRpc3BsYXllZEZpbGVzOyB0cmFjayBmaWxlOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRzLWF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmlsZT8uZmlsZU5hbWVcIlxyXG4gICAgICAgICAgICAgIFtmaWxlXT1cIntuYW1lIDpmaWxlLmZpbGVOYW1lfVwiXHJcbiAgICAgICAgICAgICAgKGRvd25sb2FkRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZG93bmxvYWQnLGksZmlsZSlcIlxyXG4gICAgICAgICAgICAgIChkZWxldGVFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkZWxldGUnLGksZmlsZSlcIlxyXG4gICAgICAgICAgICAgIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8L2RzLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMlwiPlRlc3QgZXJyb3IgPC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoIW11bHRpcGxlICYmIChjb250cm9sLnZhbHVlPy5maWxlQ29udGVudHMgfHwgY29udHJvbC52YWx1ZT8uYXR0YWNobWVudElkKSkge1xyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtLWNvbnRhaW5lciBmaWxlLWl0ZW0tY29udGFpbmVyLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb250cm9sLnZhbHVlPy5maWxlTmFtZVwiXHJcbiAgICAgICAgICAgIFtmaWxlXT1cIntuYW1lIDpjb250cm9sLnZhbHVlLmZpbGVOYW1lfVwiXHJcbiAgICAgICAgICAgIChkb3dubG9hZEV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2Rvd25sb2FkJyxudWxsLGNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2RlbGV0ZScsbnVsbCxjb250cm9sLnZhbHVlKVwiXHJcbiAgICAgICAgICAgIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiPlxyXG4gICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHMtZXJyb3JcIj5cclxuXHJcbiAgICAgIDwhLS0gKCF2YWxpZEV4dGVuc2lvbiApICAmJiAhbXVsdGlwbGUgLS0+XHJcbiAgICAgIEBpZiAoKCF2YWxpZEV4dGVuc2lvbikpIHtcclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3QgbXQtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbS1jb250YWluZXIgXCI+XHJcbiAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgIFtmaWxlXT1cIndyb25nRmlsZVwiIGVycm9yIFtzaG93QWN0aW9uc109XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8L2RzLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICB9XHJcblxyXG4gICAgICBAaWYgKCFhbGxvd2VkRmlsZVNpemUpIHtcclxuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTIgbXktMlwiPlxyXG4gICAgICAgICAge3sgbWF4U2l6ZSA9PT0gXCIwLjNcIiA/IGkxOG4udHJhbnNsYXRlKCdzdXBwb3J0MycpIDogaTE4bi50cmFuc2xhdGUoJ3N1cHBvcnQyJykgKyBtYXhTaXplICsgaTE4bi50cmFuc2xhdGUoJ21iJykgfX1cclxuICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKCghZmlsZU5vdER1cGxpY2F0ZWQpKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImZzLTEyIG15LTJcIj57eyBpMThuLnRyYW5zbGF0ZSgnZHVwbGljYXRlZC1lcnJvcicpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChsZW5ndGhFcnJvcikge1xyXG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMlwiPnt7IGkxOG4udHJhbnNsYXRlKCdsZW5ndGhFcnJvcicpIH19IDp7eyBtYXhMZW5ndGggfX08L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHNob3dFcnJvck1lc3NhZ2UpIHtcclxuICAgICAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMlwiPnt7ZXJyb3JNZXNzYWdlfX0gPC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgICB9XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcblxyXG5AaWYgKGlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgQGlmIChtdWx0aXBsZSAmJiBkaXNwbGF5ZWRGaWxlcykge1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj5cclxuICAgICAgICAgIEBpZiAobGFiZWwpIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgbGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGRpc3BsYXllZEZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBkaXNwbGF5ZWRGaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZpbGU/LmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTJcIiBbZmlsZV09XCJ7bmFtZSA6ZmlsZS5maWxlTmFtZX1cIiByZWFkT25seSAoZG93bmxvYWRFdmVudCk9XCJkb3dubG9hZEZpbGUoJGV2ZW50LGZpbGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpc2NcIj5cclxuICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdOb0F0dGFjaG1lbnRzJykgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCFtdWx0aXBsZSAmJiAoY29udHJvbC52YWx1ZT8uWydhdHRhY2htZW50SWQnXSB8fCBjb250cm9sLnZhbHVlPy5bJ2ZpbGVDb250ZW50cyddKSkge1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj5cclxuICAgICAgICAgIEBpZiAobGFiZWwpIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgbGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzYyBmaWxlLWl0ZW0tY29udGFpbmVyIGZpbGUtaXRlbS1jb250YWluZXItYWN0aW9uc1wiIFtuZ0NsYXNzXT1cInsnaW5zaWRlVGFibGVXaWR0aCc6aW5zaWRlVGFibGV9XCI+XHJcbiAgICAgICAgICAgIEBpZiAoY29udHJvbC52YWx1ZT8uWydhdHRhY2htZW50SWQnXSB8fCBjb250cm9sLnZhbHVlPy5bJ2ZpbGVDb250ZW50cyddKSB7XHJcbiAgICAgICAgICAgICAgPGRzLWF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb250cm9sLnZhbHVlPy5maWxlTmFtZVwiIFtmaWxlXT1cIntuYW1lIDpjb250cm9sLnZhbHVlLmZpbGVOYW1lfVwiIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAoZG93bmxvYWRFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkb3dubG9hZCcsbnVsbCxjb250cm9sLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZGVsZXRlJyxudWxsLGNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgIHJlYWRPbmx5PlxyXG4gICAgICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsU0FBUyxFQUNULHNCQUFzQixFQUN0QixVQUFVLEVBRVYsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFZLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFB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QUFRLENBQVE7SUFDckIsQ0FBQztDQUNOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWxldGVEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Tm9vcFNjcm9sbFN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgRGVzdHJveVJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7RG9jdW1lbnRGaWxlfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEVycm9yLCBNYXRIaW50fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge01hdFRvb2x0aXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tbGFiZWwvZm9ybS1sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBNYXRFcnJvcixcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBNYXRIaW50LFxyXG4gICAgTWF0VG9vbHRpcCxcclxuICAgIEZvcm1MYWJlbENvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEb2NzVXBsb2FkZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRG9jc1VwbG9hZGVyQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgbWF4U2l6ZUZsYWcgPSB0cnVlO1xyXG4gIG1heFNpemVWYWx1ZTogYW55O1xyXG4gIHdyb25nRXh0ZW5zaW9uRmxhZyA9IHRydWU7XHJcbiAgQElucHV0KCkgdXNlQ3JvcDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmb3JtS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgZG93bmxvYWRMaW5rID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN0eWxlSGVpZ2h0ID0gJyc7IC8vIG1lZGl1bSwgbWluaVxyXG4gIEBJbnB1dCgpIGZpbGVJbnB1dEhlaWdodCA9ICcnOyAvLyBtZWRpdW0sIG1pbmlcclxuICBASW5wdXQoKSBzdHlsZVdpZHRoID0gJzYnO1xyXG4gIEBJbnB1dCgpIGhpbnRzITogYW55O1xyXG4gIEBJbnB1dCgpIGFsbG93ZWRFeHRlbnNpb25zID0gJyc7XHJcbiAgQElucHV0KCkgY2FsbEFwaTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNwbGF5ID0gJyc7XHJcbiAgdmFsaWRFeHRlbnNpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGF0dGFjaFR5cGUgPSAnJztcclxuICBASW5wdXQoKSBlcnJvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBkaXNwbGF5ZWRGaWxlczogRG9jdW1lbnRGaWxlW10gPSBbXTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZmlsZU5vdER1cGxpY2F0ZWQgPSB0cnVlO1xyXG4gIGFsbG93ZWRGaWxlU2l6ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZ2V0RGF0YUZyb21UZW1wbGF0ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsbG93RmlsZUNvbnRlbnRzV2l0aE11bHRpQXR0YWNobWVudHMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZ1tdO1xyXG4gIGZpbGVzaXplOiBzdHJpbmc7XHJcbiAgd3JvbmdGaWxlID0ge1xyXG4gICAgbWltZVR5cGU6IFwiXCIsXHJcbiAgICBmaWxlQ29udGVudHM6IFwiXCIsXHJcbiAgICBmaWxlTmFtZTogdGhpcy5pMThuLmxhbmd1YWdlID09ICdhcicgPyBcItin2YXYqtiv2KfYryDYp9mE2YXZhNmBINiu2KfYt9mJ2KFcIiA6IFwiV3JvbmcgRmlsZSBFeHRlbnNpb25cIixcclxuICAgIG5hbWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnYXInID8gXCLYp9mF2KrYr9in2K8g2KfZhNmF2YTZgSDYrtin2LfZidihXCIgOiBcIldyb25nIEZpbGUgRXh0ZW5zaW9uXCJcclxuICB9XHJcbiAgYWxsQXR0YWNobWVudHMgPSBbXTtcclxuXHJcbiAgdXBsb2FkRm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNpZ25UeXBlID0gJ1NpZ24nO1xyXG4gIEBJbnB1dCgpIHNob3dTaWduQnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJpbnRUeXBlID0gJ1ByaW50JztcclxuICBASW5wdXQoKSBzaG93UHJpbnRCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkb3dubG9hZFR5cGUgPSAnRG93bmxvYWQnO1xyXG4gIEBJbnB1dCgpIHNob3dEb3dubG9hZEJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByZXZlbnRGaWxlQ29udGVudHMgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgYWRkU2lnbmF0dXJlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHJpbnRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbWl0ZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIG1heFNpemUgPSAnMTAnO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmlsZScpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuICBkaWFsb2c6IE1hdERpYWxvZyA9IGluamVjdChNYXREaWFsb2cpXHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRJbWFnZVR5cGVzID0ge1xyXG4gICAganBnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIEpQRzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBqcGVnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIHBuZzogWydpbWFnZS9wbmcnXVxyXG4gIH1cclxuXHJcbiAgdmFsaWRJbWdQZGZUeXBlcyA9IHtcclxuICAgIHBkZjogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICAgIGpwZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBKUEc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAganBlZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBibXA6IFsnaW1hZ2UvYm1wJywgJ2ltYWdlL3gtd2luZG93cy1ibXAnXSxcclxuICAgIHBuZzogWydpbWFnZS9wbmcnXVxyXG4gIH1cclxuXHJcbiAgdmFsaWRGaWxlVHlwZXMgPSB7XHJcbiAgICAncGRmJzogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICAgICdkb2MnOiBbJ2FwcGxpY2F0aW9uL21zd29yZCddLFxyXG4gICAgJ2RvY3gnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J10sXHJcbiAgICAncHB0JzogWydhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCddLFxyXG4gICAgJ3BwdHgnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nXSxcclxuICAgICdwcHMnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J10sXHJcbiAgICAncHBzeCc6IFsnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdyddLFxyXG4gICAgJ29kdCc6IFsnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0J10sXHJcbiAgICAneGxzJzogWydhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnXSxcclxuICAgICd4bHN4JzogWydhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCddLFxyXG4gICAgJ3ppcCc6IFsnYXBwbGljYXRpb24vemlwJywgJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnLCAnbXVsdGlwYXJ0L3gtemlwJywgJ2FwcGxpY2F0aW9uL3ppcCddLFxyXG4gICAgJ21zZyc6IFsnYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2snLCAnYXBwbGljYXRpb24vbXNnJ10sXHJcbiAgICAnY3N2JzogWyd0ZXh0L2NzdiddLFxyXG4gICAgJ3R4dCc6IFsndGV4dC9wbGFpbiddLFxyXG4gICAgJ3J0Zic6IFsnYXBwbGljYXRpb24vcnRmJywgJ2FwcGxpY2F0aW9uL3gtcnRmJywgJ3RleHQvcmljaHRleHQnXSxcclxuICAgICdodG1sJzogWyd0ZXh0L2h0bWwnXSxcclxuICAgIC8vICdtcDQnOiBbJ3ZpZGVvL21wNCddLFxyXG4gICAgLy8gJ200dic6IFsndmlkZW8vbXA0J10sXHJcbiAgICAnbW92JzogWyd2aWRlby9xdWlja3RpbWUnXSxcclxuICAgICd3bXYnOiBbJ3ZpZGVvL3gtbXMtd212J10sXHJcbiAgICAvLyAnYXZpJzogWyd2aWRlby94LW1zdmlkZW8nXSxcclxuICAgICdtcGcnOiBbJ21wZyddLFxyXG4gICAgJ3JtdmInOiBbJ3JtdmInXSxcclxuICAgIC8vICdvZ3YnOiBbJ3ZpZGVvL29nZyddLFxyXG4gICAgLy8gJzNncCc6IFsndmlkZW8vM2dwcCcsICdhdWRpby8zZ3BwJ10sXHJcbiAgICAvLyAnM2cyJzogWyd2aWRlby8zZ3BwMicsICdhdWRpby8zZ3BwJ10sXHJcbiAgICAnanBnJzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICAnanBlZyc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgJ3BuZyc6IFsnaW1hZ2UvcG5nJ10sXHJcbiAgICAnZ2lmJzogWydpbWFnZS9naWYnXSxcclxuICAgICdibXAnOiBbJ2ltYWdlL2JtcCcsICdpbWFnZS94LXdpbmRvd3MtYm1wJ11cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkUGRmVHlwZXMgPSB7XHJcbiAgICAncGRmJzogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICB9XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGxlbmd0aEVycm9yOiBib29sZWFuO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdHRhY2htZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxsQXR0YWNobWVudHMgPSBbLi4udGhpcy5hdHRhY2htZW50c107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlVHlwZShhdHRhY2htZW50OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFhdHRhY2htZW50LmZpbGVOYW1lPy5pbmNsdWRlcygnLicpICYmIGF0dGFjaG1lbnQubWltZVR5cGUuaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jaGVja0ZpbGVUeXBlKGF0dGFjaG1lbnQubWltZVR5cGUpO1xyXG4gICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGVOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrRmlsZVR5cGUoYXR0YWNobWVudC5maWxlTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXR0YWNobWVudC5taW1lVHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGaWxlVHlwZShhdHRhY2htZW50RGF0YTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpID09ICdtc2cnKSB7XHJcbiAgICAgIHJldHVybiAnZW1haWwtaWNvbidcclxuICAgIH0gZWxzZSBpZiAoYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAnanBlZycpIHtcclxuICAgICAgcmV0dXJuICdqcGcnXHJcbiAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ3hsc3gnIHx8IGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ3hscycpIHtcclxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWw7Y2hhcnNldD11dGYtOCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKTtcclxuICB9XHJcblxyXG4gIGF0dGFjaG1lbnRBY3Rpb24odHlwZTogYW55LCBpbmRleDogbnVtYmVyLCBmaWVsZDogYW55KSB7XHJcbiAgICBpZiAodHlwZSA9PSBcImRvd25sb2FkXCIpIHtcclxuICAgICAgaWYgKHRoaXMuZG93bmxvYWRMaW5rKSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oZmllbGQ/LmF0dGFjaG1lbnRJZCwgJ19ibGFuaycsICd0b3A9MCxsZWZ0PTAsaGVpZ2h0PWF1dG8sd2lkdGg9YXV0bycpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpZWxkPy5hdHRhY2htZW50SWQpIHtcclxuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZSh0eXBlLCBmaWVsZCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQ/LmZpbGVDb250ZW50cykge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlTmV3KGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICBpZiAodGhpcy52YWxpZEV4dGVuc2lvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoaW5kZXgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0YWNoZWRGaWxlKClcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgcGFuZWxDbGFzczogWydtYWluLXBvcHVwJywgJ2NvbmZpcm0tZGlhbG9nJ10sXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgTm9vcFNjcm9sbFN0cmF0ZWd5KCksXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgIGlmIChyZXR1cm5WYWx1ZSA9PSAneWVzJykge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTXVsdGkoaW5kZXgpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTXVsdGkoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hbGxBdHRhY2htZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRGaWxlTmV3KGZpbGVEYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5nZXRGaWxlVHlwZShmaWxlRGF0YSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVEYXRhLmZpbGVDb250ZW50c10sIHt0eXBlOiBmaWxlVHlwZX0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCBgJHtmaWxlRGF0YS5maWxlTmFtZX1gKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbClcclxuICAgIGlmIChpbnB1dD8uZmlsZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoaW5wdXQpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NVcGxvYWRlZEZpbGUoaW5wdXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVGaWxlSW5wdXQoaW5wdXQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlucHV0LmZpbGVzICYmIHRoaXMuZm9ybUtleSA9PT0gJ1RTVicpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlQXR0YWNobWVudC5lbWl0KGlucHV0LmZpbGVzWzBdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gaW5wdXQuZmlsZXNbMF07XHJcbiAgICBsZXQgZmlsZVR5cGUgPSBmaWxlLm5hbWU/LmVuZHNXaXRoKFwiLm1zZ1wiKSA/ICdhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9vaycgOiBmaWxlLnR5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMuYWNjZXB0Py5sZW5ndGggJiYgIXRoaXMuYWNjZXB0LmluY2x1ZGVzKGZpbGVUeXBlKSkge1xyXG4gICAgICBhbGVydCh0aGlzLmkxOG4udHJhbnNsYXRlKCd0aGlzSXNJbnZhbGlkRmlsZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBsb2FkRm9ybT8uZ2V0KCdmaWxlJyk/LnNldFZhbHVlKGZpbGUpO1xyXG4gICAgdGhpcy51cGxvYWRGb3JtPy5nZXQoJ25hbWUnKT8uc2V0VmFsdWUoZmlsZT8ubmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NVcGxvYWRlZEZpbGUoaW5wdXQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnVwbG9hZGluZykge1xyXG4gICAgICBjb25zdCBmaWxlRGF0YSA9IG5ldyBGaWxlSW5mbyhcclxuICAgICAgICBpbnB1dC5maWxlc1swXS5uYW1lLFxyXG4gICAgICAgIGlucHV0LmZpbGVzWzBdLm5hbWUsXHJcbiAgICAgICAgaW5wdXQuZmlsZXNbMF0udHlwZSxcclxuICAgICAgICAnJyxcclxuICAgICAgICB0aGlzLmZpbGVzaXplXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudXBkYXRlRmlsZVByb3BlcnRpZXMoaW5wdXQsIGZpbGVEYXRhKTtcclxuICAgICAgaWYgKCF0aGlzLmxlbmd0aEVycm9yICYmICt0aGlzLmZpbGVzaXplIDwgK3RoaXMubWF4U2l6ZSkge1xyXG4gICAgICAgIHRoaXMuYWxsb3dlZEZpbGVTaXplID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVwbG9hZFZhbGlkQW5kTm9uRHVwbGljYXRlRmlsZShpbnB1dCwgZmlsZURhdGEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWxsb3dlZEZpbGVTaXplID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpbGVQcm9wZXJ0aWVzKGlucHV0OiBhbnksIGZpbGVJbmZvOiBGaWxlSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXhTaXplVmFsdWUgPSB0aGlzLm1heFNpemUgPyB0aGlzLm1heFNpemUgOiAxO1xyXG4gICAgdGhpcy5maWxlc2l6ZSA9ICgoaW5wdXQuZmlsZXNbMF0uc2l6ZSAvIDEwMjQpIC8gMTAyNCkudG9GaXhlZCg0KTtcclxuICAgIHRoaXMubWF4U2l6ZUZsYWcgPSArdGhpcy5maWxlc2l6ZSA8ICt0aGlzLm1heFNpemU7XHJcbiAgICB0aGlzLmxlbmd0aEVycm9yID0gdGhpcy5kaXNwbGF5ZWRGaWxlcz8ubGVuZ3RoID49ICt0aGlzLm1heExlbmd0aDtcclxuICAgIHRoaXMud3JvbmdFeHRlbnNpb25GbGFnID0gdGhpcy5pc1ZhbGlkTWltZVR5cGUoaW5wdXQuZmlsZXNbMF0udHlwZSk7XHJcbiAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5pc1ZhbGlkRXh0ZW5zaW9uKGlucHV0LmZpbGVzWzBdLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSwgdGhpcy50eXBlKTtcclxuICAgIHRoaXMudmFsdWUgPSBmaWxlSW5mbztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBsb2FkVmFsaWRBbmROb25EdXBsaWNhdGVGaWxlKGlucHV0OiBhbnksIGZpbGVEYXRhOiBGaWxlSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsaWRFeHRlbnNpb24pIHtcclxuICAgICAgaWYgKHRoaXMuZ2V0RGF0YUZyb21UZW1wbGF0ZSkgdGhpcy5zZWxlY3RlZFRlbXBsYXRlQXR0YWNobWVudC5lbWl0KGlucHV0KTtcclxuICAgICAgdGhpcy5yZWFkRmlsZUFuZFVwbG9hZChpbnB1dC5maWxlc1swXSwgZmlsZURhdGEpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmVtaXRFbXB0eUZpbGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZEZpbGVBbmRVcGxvYWQoZmlsZTogRmlsZSwgZmlsZUluZm86IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgZmlsZUNvbnRlbnRzID0gKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKS5zcGxpdCgnLCcpWzFdO1xyXG4gICAgICBmaWxlSW5mby5maWxlQ29udGVudHMgPSBmaWxlQ29udGVudHM7XHJcbiAgICAgIGZpbGVJbmZvLmZpbGVzaXplID0gdGhpcy5maWxlc2l6ZTtcclxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTaW5nbGVGaWxlKGZpbGVDb250ZW50cywgZmlsZUluZm8pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGaWxlTm90RHVwbGljYXRlKGZpbGVJbmZvKSkge1xyXG4gICAgICAgIHRoaXMuYWRkTXVsdGlBdHRhY2htZW50cyhmaWxlSW5mbyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBsb2FkU2luZ2xlRmlsZShmaWxlQ29udGVudHM6IHN0cmluZywgZmlsZUluZm86IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVOb3REdXBsaWNhdGVkID0gdGhpcy5pc0ZpbGVOb3REdXBsaWNhdGUoZmlsZUluZm8pO1xyXG4gICAgaWYgKCF0aGlzLmZpbGVOb3REdXBsaWNhdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUuZmlsZUNvbnRlbnRzID0gZmlsZUNvbnRlbnRzO1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpXHJcbiAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy52YWx1ZSlcclxuICAgIGlmICh0aGlzLmNhbGxBcGkpIHtcclxuICAgICAgdGhpcy5hZGRBdHRhY2htZW50cygpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRFbXB0eUZpbGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbXB0eU9iaiA9IHtcclxuICAgICAgbWltZVR5cGU6IFwiXCIsXHJcbiAgICAgIGZpbGVDb250ZW50czogXCJcIixcclxuICAgICAgZmlsZU5hbWU6IFwiXCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXQoZW1wdHlPYmopXHJcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQXR0YWNobWVudHMoZmllbGQ6IGFueSwgYWxsb3dNdWx0aUF0dGFjaG1lbnRzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBcImZpbGVEZXNjcmlwdGlvblwiOiBcIlwiLFxyXG4gICAgICBcImF0dGFjaG1lbnRjb21tZW50XCI6IFwiXCIsXHJcbiAgICAgIFwiZmlsZU5hbWVcIjogZmllbGQuZmlsZU5hbWUsXHJcbiAgICAgIFwibWltZVR5cGVcIjogZmllbGQubWltZVR5cGUsXHJcbiAgICAgIFwiZmlsZUNvbnRlbnRzXCI6IGZpZWxkLmZpbGVDb250ZW50cyxcclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuZ2V0QXR0YWNobWVudHMoZGF0YSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHtcclxuICAgICAgICAgIFwiZmlsZU5hbWVcIjogZmllbGQuZmlsZU5hbWUsXHJcbiAgICAgICAgICBcImF0dGFjaG1lbnRJZFwiOiBmb3JtLmF0dGFjaG1lbnQuYXR0YWNobWVudElkLFxyXG4gICAgICAgICAgXCJtaW1lVHlwZVwiOiBmb3JtLmF0dGFjaG1lbnQubWltZVR5cGUsXHJcbiAgICAgICAgICBcImZpbGVDb250ZW50c1wiOiBmaWVsZC5maWxlQ29udGVudHNcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFsbG93TXVsdGlBdHRhY2htZW50cykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dGaWxlQ29udGVudHNXaXRoTXVsdGlBdHRhY2htZW50cykgbmV3T2JqWydmaWxlQ29udGVudHMnXSA9IGZpZWxkLmZpbGVDb250ZW50cztcclxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkRmlsZXMgPSB0aGlzLmRpc3BsYXllZEZpbGVzPy5sZW5ndGggPyB0aGlzLmRpc3BsYXllZEZpbGVzIDogW11cclxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkRmlsZXMucHVzaChuZXdPYmopO1xyXG4gICAgICAgICAgdGhpcy5hbGxBdHRhY2htZW50cy5wdXNoKG5ld09iaik7XHJcbiAgICAgICAgICB0aGlzLmVtaXQodGhpcy5kaXNwbGF5ZWRGaWxlcyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5kaXNwbGF5ZWRGaWxlcylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShuZXdPYmopXHJcbiAgICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KG5ld09iailcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGVycj8uZXJyb3I/Lm1ldGE/Lm1lc3NhZ2VzPy5mb3JFYWNoKChtc2cpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IobXNnLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZEF0dGFjaG1lbnRzKCkge1xyXG4gICAgdGhpcy5wcm9jZXNzQXR0YWNobWVudHModGhpcy5jb250cm9sLnZhbHVlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBhZGRNdWx0aUF0dGFjaG1lbnRzKGZpZWxkOiBhbnkpIHtcclxuICAgIHRoaXMucHJvY2Vzc0F0dGFjaG1lbnRzKGZpZWxkLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBpc0ZpbGVOb3REdXBsaWNhdGUoZmlsZTogRmlsZUluZm8pOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFsbEF0dGFjaG1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsQXR0YWNobWVudHM/LmZpbmRJbmRleCgoJGZpbGUpID0+IChmaWxlLmZpbGVOYW1lID09PSAkZmlsZS5maWxlTmFtZSkpID09PSAtMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzVmFsaWRNaW1lVHlwZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5hdHRhY2hUeXBlID09ICdwZGYnKSB7XHJcbiAgICAgIHJldHVybiAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKHRoaXMudmFsaWRQZGZUeXBlcykpLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hdHRhY2hUeXBlID09ICdpbWFnZScpIHtcclxuICAgICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXModGhpcy52YWxpZEltYWdlVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNWYWxpZEV4dGVuc2lvbih2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09ICdpbWFnZScpIHtcclxuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyh0aGlzLnZhbGlkSW1hZ2VUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiaW1hZ2VQZGZcIikge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRJbWdQZGZUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcInBkZlwiKSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZFBkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRGaWxlVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUF0dGFjaGVkRmlsZSgpIHtcclxuICAgIC8vIHRoaXMuZmllbGQgPSB0aGlzLnZhbHVlID0gbmV3IEZpbGVJbmZvKG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5ldyBGaWxlSW5mbyhudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsKSlcclxuICAgIGlmICh0aGlzLmlucHV0RmlsZSkge1xyXG4gICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSh0aGlzLmZpZWxkKTtcclxuICAgIHRoaXMuZW1pdCh0aGlzLnZhbHVlKVxyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZXZlbnQsIGZpZWxkKSB7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmxvYWRGaWxlKGZpZWxkLmF0dGFjaG1lbnRJZCkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2VPYmplY3Q6IHsgYm9keTogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsZUluZm9ybWF0aW9uID0gcmVzcG9uc2VPYmplY3QuYm9keTtcclxuICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLnNhdmVGaWxlKGZpbGVJbmZvcm1hdGlvbilcclxuICAgICAgICAvKmNvbnN0IGZpbGVCbG9iID0gdGhpcy5jb3JlU2VydmljZS5kYXRhVVJJdG9CbG9iKGZpbGVJbmZvcm1hdGlvbi5maWxlQ29udGVudHMpO1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbZmlsZUJsb2JdLCBmaWxlSW5mb3JtYXRpb24uZmlsZU5hbWUsIHt0eXBlOiBmaWxlSW5mb3JtYXRpb24ubWltZVR5cGV9KTtcclxuICAgICAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IGJsb2JVcmw7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVJbmZvcm1hdGlvbi5maWxlTmFtZTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChibG9iVXJsKTsqL1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnJvci5lcnJvcj8uWydtZXNzYWdlJ10pXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXQ8VD4odmFsdWU6IFQgfCBUW10pIHtcclxuICAgIGlmICh0aGlzLnByZXZlbnRGaWxlQ29udGVudHMpIHtcclxuICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XHJcbiAgICAgIHRoaXMuZGVsZXRlRmlsZUNvbnRlbnRzKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlRmlsZUNvbnRlbnRzKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnZmlsZUNvbnRlbnRzJyBpbiBkYXRhKSB7XHJcbiAgICAgIGRlbGV0ZSBkYXRhLmZpbGVDb250ZW50cztcclxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICBkYXRhLmZvckVhY2goZWxlbSA9PiB0aGlzLmRlbGV0ZUZpbGVDb250ZW50cyhlbGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBGaWxlSW5mbyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZmlsZU5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgbWltZVR5cGU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBmaWxlQ29udGVudHM6IHN0cmluZyxcclxuICAgIHB1YmxpYyBmaWxlc2l6ZTogc3RyaW5nXHJcbiAgKSB7IH1cclxufVxyXG4iLCJAaWYgKCFpc1JlYWRPbmx5KSB7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZihsYWJlbCl7XHJcbiAgICAgIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwiIXJlcXVpcmVkXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiPjwvYXBwLWZvcm0tbGFiZWw+XHJcbiAgICAgIH1cclxuICAgIDxzZWN0aW9uXHJcbiAgICAgIFtuZ0NsYXNzXT1cImluc2lkZVRhYmxlID8gJ2ZpbGUtdXBsb2FkZXItdGFibGUnIDogJ2ZpbGUtdXBsb2FkZXInXCIgY2xhc3M9XCIgbWItMlwiXHJcbiAgICAgIFtjbGFzcy5pbnNpZGVUYWJsZVN0eWxlXT1cImluc2lkZVRhYmxlXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJpbnNpZGVUYWJsZSA/ICdmaWxlLXVwbG9hZGVyLXRhYmxlLWRldicgOiAnJ1wiIGNsYXNzPVwiZmlsZS11cGxvYWRlci1pbnB1dFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImZpbGVBdHRhY2hlZC5jbGljaygpXCI+XHJcbiAgICAgICAgQGlmICghdXBsb2FkaW5nKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbiBtYi0xXCI+XHJcbiAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJpbnNpZGVUYWJsZSA/ICdmaWxlLXVwbG9hZGVyLXRhYmxlLXN2ZycgOiAnJ1wiIHdpZHRoPVwiNDFcIiBoZWlnaHQ9XCIzOFwiIHZpZXdCb3g9XCIwIDAgNDEgMzhcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTAgMjIuMTk0N1YyMC42NzM2QzAuMDk3MTMwMyAyMC4xMDE5IDAuMDcwMDk0IDE5LjUxNDEgMC4yNzYzNzEgMTguOTUzM0MxLjI4MzcyIDE2LjIwODYgMy4yMTIzMSAxNC41MDIzIDYuMDQyMSAxMy44MDk0QzYuNzA0OTkgMTMuNjQ3MiA2LjY4NDk3IDEzLjY2MzIgNi42OTg5OSAxMi45ODQzQzYuNzMyMDMgMTEuMzMyMSA2Ljk5ODM5IDkuNzE5OTIgNy42MjQyMyA4LjE3OTg2QzguODYyODkgNS4xMzY3OCAxMC45NDY3IDIuODM5NjkgMTMuODgxNiAxLjM5MTc1QzE3LjE2OCAtMC4yMzA0MjQgMjAuNTk1NiAtMC40NTA3MTkgMjQuMDU1MyAwLjgxNTk4QzI3LjQ5MjkgMi4wNzQ2NyAyOS45NjIyIDQuNDE1ODEgMzEuNDgwMiA3Ljc0ODI4QzMxLjc3ODYgOC40MDMxNiAzMi4wMjcgOS4wODMwNyAzMi4xNzEyIDkuNzkyMDJDMzIuMjQwMiAxMC4xMzE1IDMyLjQwMzUgMTAuMjU2NiAzMi43NTI5IDEwLjMxMDdDMzYuNzAxMiAxMC45MTY1IDM5LjMzNTggMTMuMTI1NSA0MC42OTQ2IDE2Ljg3MzVDNDAuOTA2OSAxNy40NjAzIDQwLjkxOTkgMTguMDczMSA0MC45NTk5IDE4LjY4MjlDNDAuOTY0OSAxOC43NjAxIDQwLjkzODkgMTguODQ0MiA0MSAxOC45MTEzVjIwLjUxMjRDNDAuOTEwOSAyMC45OTUgNDAuOTY5IDIxLjQ5MzcgNDAuODYwOCAyMS45NzM0QzQwLjUyNDQgMjMuNDYxNCAzOS44NDU0IDI0Ljc4MjEgMzguODUwMSAyNS45Mjk3QzM3LjQ1MjIgMjcuNTQxOCAzNS43MDU5IDI4LjU4ODIgMzMuNjE2MSAyOS4wNTE5QzMyLjc5MSAyOS4yMzUxIDMxLjk0OTkgMjkuMjUyMSAzMS4xMTE3IDI5LjI5MjJDMzAuNjU3MSAyOS4zMTQyIDMwLjU4NCAyOS4xOTMgMzAuNTkyIDI4Ljc0ODRDMzAuNjQ1MSAyNS44NDQ2IDI5LjgwMiAyMy4yNTcxIDI3Ljg2MjQgMjEuMDU5MUMyNS45OTc5IDE4Ljk0NjMgMjMuNjU5NyAxNy43MTY3IDIwLjg2NyAxNy40MDEyQzE4Ljg1NTMgMTcuMTczOSAxNi45MDU3IDE3LjQ1OTMgMTUuMDYxMiAxOC4zMzk1QzExLjgzMTkgMTkuODgxNiA5LjgxNDE2IDIyLjQwNjkgOC45NjEwMiAyNS44Njk2QzguNzQyNzMgMjYuNzUzOCA4LjY4MjY1IDI3LjY1OCA4LjcwNTY4IDI4LjU3MDJDOC43MjE3IDI5LjIxMTEgOC42MDI1NCAyOS4zMTIyIDcuOTU5NjggMjkuMjk3MkM1Ljk1MDk4IDI5LjI1MTEgNC4xMDU1MSAyOC43MjM0IDIuNTgxNDYgMjcuMzU5NkMxLjA3NjQ0IDI2LjAxNjggMC4wNjgwOTEzIDI0LjM5OTYgMC4wNDAwNTM3IDIyLjMwMjhDMC4wNDAwNTM3IDIyLjI2MDcgMC4wMjUwMzM2IDIyLjIyNTcgMCAyMi4xOTM3VjIyLjE5NDdaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjREVFMEUyXCIvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTI5LjAzMDMgMjguMjYzMkMyOS4wNjA0IDMzLjQwMzEgMjQuODY1NyAzNy42MTg3IDE5LjY4MzggMzcuNjU0OEMxNC41MTY5IDM3LjY5MDggMTAuMjg1MiAzMy40OTUyIDEwLjI1MjEgMjguMzA0MkMxMC4yMjAxIDIzLjE0MDMgMTQuNDI5NyAxOC45MTI2IDE5LjYyMjcgMTguODk0NkMyNC44MDM3IDE4Ljg3NjYgMjguOTk5MyAyMy4wNTQyIDI5LjAzMDMgMjguMjYzMlpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiM4RTlBQTBcIi8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjAuNTU3MyAyNS4yNjQ0QzIwLjQ2MjIgMjUuNDQ3NyAyMC41MDEyIDI1LjU5MzkgMjAuNTAxMiAyNS43MzRDMjAuNDk4MiAyOC4yMTU0IDIwLjUwMDIgMzAuNjk1NyAyMC40OTgyIDMzLjE3N0MyMC40OTgyIDMzLjgwOTkgMjAuMjMzOSAzNC4xNzA0IDE5Ljc0NjIgMzQuMjIzNEMxOS4yNjQ1IDM0LjI3NjUgMTguODggMzMuOTgzMSAxOC44MTY5IDMzLjUwMjVDMTguNzk1OSAzMy4zNDQzIDE4Ljc5NjkgMzMuMTgzIDE4Ljc5NjkgMzMuMDIzOEMxOC43OTU5IDMwLjU4MjYgMTguNzk2OSAyOC4xNDIzIDE4Ljc5NjkgMjUuNzAxQzE4Ljc5NjkgMjUuNTcyOCAxOC43OTY5IDI1LjQ0NDcgMTguNzk2OSAyNS4yMDAzQzE4LjE5NzEgMjUuODAzMSAxNy42Nzc0IDI2LjMyODggMTcuMTUyNyAyNi44NTA1QzE3LjAxMTUgMjYuOTkwNyAxNi44NjgzIDI3LjEzNDkgMTYuNzA2MSAyNy4yNDcxQzE2LjM1NjYgMjcuNDg2NCAxNS45MzQxIDI3LjQ0MTMgMTUuNjQ1NyAyNy4xNTRDMTUuMzY0MyAyNi44NzQ2IDE1LjMyMDMgMjYuNDQyIDE1LjU0ODYgMjYuMDkyNUMxNS42MjA3IDI1Ljk4MjQgMTUuNzEyOCAyNS44ODMyIDE1LjgwNjkgMjUuNzg5MUMxNi44NjEzIDI0LjczMDcgMTcuOTE2NyAyMy42NzMzIDE4Ljk3MzIgMjIuNjE3OUMxOS40MDE3IDIyLjE4OTMgMTkuODc4NCAyMi4xNzYzIDIwLjMwMzkgMjIuNTk4OEMyMS4zOTE0IDIzLjY4MDMgMjIuNDczOSAyNC43NjY3IDIzLjU1MzMgMjUuODU3MkMyMy45ODA5IDI2LjI4OTggMjQuMDEyOSAyNi44MDY1IDIzLjY1MzQgMjcuMTY3QzIzLjI5OSAyNy41MjE0IDIyLjc3NTMgMjcuNDg0NCAyMi4zNDM3IDI3LjA1NjhDMjEuNzQ5OSAyNi40NyAyMS4xNjYxIDI1Ljg3MzIgMjAuNTYwMyAyNS4yNjQ0SDIwLjU1NzNaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRjlGOUY5XCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKHVwbG9hZGluZykge1xyXG4gICAgICAgICAgPGRzLWljb24gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbCBmcy0zMC1pbXBcIj48L2RzLWljb24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZi0xNCBmYy1ibGFjayBmdy1ub3JtYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtY29yYWwgZnctbWVkaXVtXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2Jyb3dzZScpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xMCBmYy1kYXJrLWdyYXlcIj5cclxuICAgICAgICAgIHt7IGFsbG93ZWRFeHRlbnNpb25zID8gYWxsb3dlZEV4dGVuc2lvbnMgOiAnJyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjaW5wdXRGaWxlIFthY2NlcHRdPVwiYWNjZXB0XCIgY2xhc3M9XCJkLW5vbmVcIiAjZmlsZUF0dGFjaGVkIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICBAaWYgKGhpbnRzKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG1iLTNcIj5cclxuICAgICAgICBAZm9yIChoaW50IG9mIGhpbnRzOyB0cmFjayBoaW50KSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBmcy0xMlwiPlxyXG4gICAgICAgICAgICAgIDxkcy1pY29uXHJcbiAgICAgICAgICAgICAgICBpY29uPVwie3toaW50LnZhbGlkID8gJ2NoZWNrLWNpcmNsZS1mJyA6ICdjaGVjay1jaXJjbGUtbyd9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTI0IHt7aGludC52YWxpZCA/ICdmYy1ncmVlbicgOiAnZmMtZGFyay1ncmF5J319XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3toaW50LnZhbGlkID8gJ2ZjLWJsYWNrJyA6ICdmYy1kYXJrLWdyYXknfX1cIj57eyBoaW50LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChoaW50KSB7XHJcbiAgICAgIDxtYXQtaGludCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwiaW5mb1wiIGNsYXNzPVwiZnMtMTcgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtYmxhY2sgbGluZS1oZWlnaHQtMVwiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJmaWxlcy1saXN0XCI+XHJcbiAgICAgICAgQGZvciAoZmlsZSBvZiBkaXNwbGF5ZWRGaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZpbGU/LmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICBbZmlsZV09XCJ7bmFtZSA6ZmlsZS5maWxlTmFtZX1cIlxyXG4gICAgICAgICAgICAgIChkb3dubG9hZEV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2Rvd25sb2FkJyxpLGZpbGUpXCJcclxuICAgICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZGVsZXRlJyxpLGZpbGUpXCJcclxuICAgICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgICAgPCEtLSA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTJcIj5UZXN0IGVycm9yIDwvbWF0LWVycm9yPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCFtdWx0aXBsZSAmJiAoY29udHJvbC52YWx1ZT8uZmlsZUNvbnRlbnRzIHx8IGNvbnRyb2wudmFsdWU/LmF0dGFjaG1lbnRJZCkpIHtcclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJmaWxlcy1saXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbS1jb250YWluZXIgZmlsZS1pdGVtLWNvbnRhaW5lci1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29udHJvbC52YWx1ZT8uZmlsZU5hbWVcIlxyXG4gICAgICAgICAgICBbZmlsZV09XCJ7bmFtZSA6Y29udHJvbC52YWx1ZS5maWxlTmFtZX1cIlxyXG4gICAgICAgICAgICAoZG93bmxvYWRFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkb3dubG9hZCcsbnVsbCxjb250cm9sLnZhbHVlKVwiXHJcbiAgICAgICAgICAgIChkZWxldGVFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkZWxldGUnLG51bGwsY29udHJvbC52YWx1ZSlcIlxyXG4gICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLWVycm9yXCI+XHJcblxyXG4gICAgICA8IS0tICghdmFsaWRFeHRlbnNpb24gKSAgJiYgIW11bHRpcGxlIC0tPlxyXG4gICAgICBAaWYgKCghdmFsaWRFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJmaWxlcy1saXN0IG10LTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyIFwiPlxyXG4gICAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgICBbZmlsZV09XCJ3cm9uZ0ZpbGVcIiBlcnJvciBbc2hvd0FjdGlvbnNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmICghYWxsb3dlZEZpbGVTaXplKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImZzLTEyIG15LTJcIj5cclxuICAgICAgICAgIHt7IG1heFNpemUgPT09IFwiMC4zXCIgPyBpMThuLnRyYW5zbGF0ZSgnc3VwcG9ydDMnKSA6IGkxOG4udHJhbnNsYXRlKCdzdXBwb3J0MicpICsgbWF4U2l6ZSArIGkxOG4udHJhbnNsYXRlKCdtYicpIH19XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICgoIWZpbGVOb3REdXBsaWNhdGVkKSkge1xyXG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMiBteS0yXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2R1cGxpY2F0ZWQtZXJyb3InKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAobGVuZ3RoRXJyb3IpIHtcclxuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTJcIj57eyBpMThuLnRyYW5zbGF0ZSgnbGVuZ3RoRXJyb3InKSB9fSA6e3sgbWF4TGVuZ3RoIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzaG93RXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgPCEtLSA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTJcIj57e2Vycm9yTWVzc2FnZX19IDwvbWF0LWVycm9yPiAtLT5cclxuICAgICAgfVxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG5cclxuQGlmIChpc1JlYWRPbmx5KSB7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZiAobXVsdGlwbGUgJiYgZGlzcGxheWVkRmlsZXMpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+XHJcbiAgICAgICAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChkaXNwbGF5ZWRGaWxlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZGlzcGxheWVkRmlsZXM7IHRyYWNrIGZpbGU7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWxlPy5maWxlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0yXCIgW2ZpbGVdPVwie25hbWUgOmZpbGUuZmlsZU5hbWV9XCIgcmVhZE9ubHkgKGRvd25sb2FkRXZlbnQpPVwiZG93bmxvYWRGaWxlKCRldmVudCxmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBY3Rpb25zXT1cInNob3dBY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoIWRpc3BsYXllZEZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXNjXCI+XHJcbiAgICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgnTm9BdHRhY2htZW50cycpIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICghbXVsdGlwbGUgJiYgKGNvbnRyb2wudmFsdWU/LlsnYXR0YWNobWVudElkJ10gfHwgY29udHJvbC52YWx1ZT8uWydmaWxlQ29udGVudHMnXSkpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+XHJcbiAgICAgICAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpc2MgZmlsZS1pdGVtLWNvbnRhaW5lciBmaWxlLWl0ZW0tY29udGFpbmVyLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7J2luc2lkZVRhYmxlV2lkdGgnOmluc2lkZVRhYmxlfVwiPlxyXG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudmFsdWU/LlsnYXR0YWNobWVudElkJ10gfHwgY29udHJvbC52YWx1ZT8uWydmaWxlQ29udGVudHMnXSkge1xyXG4gICAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29udHJvbC52YWx1ZT8uZmlsZU5hbWVcIiBbZmlsZV09XCJ7bmFtZSA6Y29udHJvbC52YWx1ZS5maWxlTmFtZX1cIiBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGRvd25sb2FkRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZG93bmxvYWQnLG51bGwsY29udHJvbC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2RlbGV0ZScsbnVsbCxjb250cm9sLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICByZWFkT25seT5cclxuICAgICAgICAgICAgICA8L2RzLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
2
- import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, forwardRef, Input, Output } from '@angular/core';
2
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';
3
3
  import { NgClass } from '@angular/common';
4
4
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
5
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
@@ -7,6 +7,7 @@ import { MatFormField } from '@angular/material/form-field';
7
7
  import { MatInput } from '@angular/material/input';
8
8
  import { SatPopoverModule } from '@ncstate/sat-popover';
9
9
  import { Shareds } from '../shared-imports';
10
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@angular/material/autocomplete";
12
13
  import * as i2 from "@angular/material/core";
@@ -32,6 +33,7 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
32
33
  isUniqueUsers = false;
33
34
  userAlreadyExist = false;
34
35
  emitedDeletedValue = new EventEmitter();
36
+ destroyRef = inject(DestroyRef);
35
37
  deleteRow(ind, rowData) {
36
38
  if (!this.isReadOnly) {
37
39
  this.arrayList = this.arrayList.filter((item, index) => {
@@ -50,7 +52,7 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
50
52
  if (input.length >= 3) {
51
53
  this.selected = false;
52
54
  this.loading = true;
53
- this.coreService.searchEmployee(input).subscribe({
55
+ this.coreService.searchEmployee(input).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
54
56
  next: (form) => {
55
57
  this.loading = false;
56
58
  this.data = form.Users;
@@ -169,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
169
171
  }], emitedDeletedValue: [{
170
172
  type: Output
171
173
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL3NlYXJjaC1lbXBsb3llZS9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvc2VhcmNoLWVtcGxveWVlL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7O0FBeUI1QyxNQUFNLE9BQU8sdUJBQThCLFNBQVEsNkJBQW1DO0lBQzNFLFNBQVMsQ0FBVTtJQUNuQixT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SztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU2F0UG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4uL3ZhbGlkYXRpb24tZXJyb3JzL3ZhbGlkYXRpb24tZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEluZm9JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaGFyZWRzIH0gZnJvbSAnLi4vc2hhcmVkLWltcG9ydHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2VhcmNoLWVtcGxveWVlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNhdFBvcG92ZXJNb2R1bGUsXHJcbiAgICAuLi5TaGFyZWRzXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlYXJjaEVtcGxveWVlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hFbXBsb3llZUNvbXBvbmVudDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IHtcclxuICBASW5wdXQoKSB2YWx1ZU5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBvcHRpb25hbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGEhOiBhbnlbXTtcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRFbXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uSW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2hvd0VkaXQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZWRpdERpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZURpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgYXJyYXlMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzVW5pcXVlVXNlcnMgPSBmYWxzZTtcclxuICB1c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGVtaXRlZERlbGV0ZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIGRlbGV0ZVJvdyhpbmQ6IG51bWJlciwgcm93RGF0YSkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5hcnJheUxpc3QgPSB0aGlzLmFycmF5TGlzdC5maWx0ZXIoKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggIT0gaW5kO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIHJvd0RhdGE6IHJvd0RhdGEsXHJcbiAgICAgICAgYXJyYXlMaXN0OiB0aGlzLmFycmF5TGlzdFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdGVkRGVsZXRlZFZhbHVlLmVtaXQob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9hZE9wdGlvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgIGlmIChpbnB1dC5sZW5ndGggPj0gMykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2Uuc2VhcmNoRW1wbG95ZWUoaW5wdXQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSBmb3JtLlVzZXJzO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuXHJcbiAgICAgICAgfSwgY29tcGxldGU6ICgpID0+IHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09IDApIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbClcclxuICAgICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVEYXRhKG9wdGlvbjogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9wdGlvbj8uZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkgfHxcclxuICAgICAgb3B0aW9uPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEltYWdlKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPScgKyBpZDtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihvYmplY3Q6IGFueSwgZXY6IGFueSkge1xyXG4gICAgdGhpcy51c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKCB0aGlzLmFycmF5TGlzdC5zb21lKChpdGVtKSA9PiBpdGVtPy5wZXJzb25FbWFpbCA9PT0gb2JqZWN0Py5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLnVzZXJBbHJlYWR5RXhpc3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgIHBlcnNvbk5hbWU6IG9iamVjdC5uYW1lLFxyXG4gICAgICAgIHBlcnNvbkVtYWlsOiBvYmplY3QuZW1haWwsXHJcbiAgICAgICAgam9iOiBvYmplY3Quam9iLm5hbWUsXHJcbiAgICAgICAgam9iQ29kZTogb2JqZWN0LmpvYi5jb2RlLFxyXG4gICAgICAgIG1hbmFnZXI6IG9iamVjdC5tYW5hZ2VyLFxyXG4gICAgICAgIGRlcGFydG1lbnQ6IG9iamVjdC5kZXBhcnRtZW50LFxyXG4gICAgICAgIGdlbmVyYWxEZXBhcnRtZW50OiBvYmplY3QuZ2VuZXJhbERlcGFydG1lbnQsXHJcbiAgICAgICAgc2VjdG9yOiBvYmplY3Quc2VjdG9yLFxyXG4gICAgICAgIHNlY3Rpb246IG9iamVjdC5zZWN0aW9uLFxyXG4gICAgICAgIHNlbmlvclNlY3Rvck5hbWU6IG9iamVjdC5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYXJyYXlMaXN0LnB1c2gob2JqKTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMuYXJyYXlMaXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHtcclxuICAgICAgICBwZXJzb25OYW1lOiBvYmplY3QubmFtZSxcclxuICAgICAgICBwZXJzb25FbWFpbDogb2JqZWN0LmVtYWlsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGNvbnRyb2xWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbHVlKG9iamVjdC5uYW1lKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2Ugc2VhcmNoRW1wIHtcclxuICBwZXJzb25OYW1lPzogc3RyaW5nO1xyXG4gIHBlcnNvbkVtYWlsPzogc3RyaW5nO1xyXG4gIGNvbnRhY3Q/OiBzdHJpbmc7XHJcbiAgZW1wbG95ZWVOdW1iZXI/OiBzdHJpbmc7XHJcbn1cclxuIiwiQGlmICghaXNSZWFkT25seSkge1xyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICBAaWYobGFiZWwpe1xyXG4gICAgICA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cIiFyZXF1aXJlZFwiIFt0b29sdGlwXT1cInRvb2x0aXBcIj48L2FwcC1mb3JtLWxhYmVsPlxyXG4gICAgICB9XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3tjbGFzc05hbWV9fVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIj5cclxuICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8ZHMtaWNvbiBpY29uPVwic2VhcmNoXCIgY2xhc3M9XCJmYy1jb3JhbCBmcy0xOFwiPjwvZHMtaWNvbj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIiBhcmlhLWxhYmVsPVwiTnVtYmVyXCIgKGlucHV0KT1cIm9uTG9hZE9wdGlvbnMoJGV2ZW50KVwiIG1hdElucHV0IFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFtmb3JtQ29udHJvbF09XCJlbXBsb3llZVNlYXJjaENvbnRyb2xcIiBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICBAaWYgKGxvYWRpbmcpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktc3Bpbm5lciBkLWlubGluZS1ibG9jayBzcGluIGZjLWNvcmFsXCIgbWF0U3VmZml4Pjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBkYXRhOyB0cmFjayBvcHRpb24pIHtcclxuICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24/LlsncGVyc29uTmFtZSddXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdE9wdGlvbihvcHRpb24gLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1jYXJkIGNpcmNsZWQtaW1nIHNtYWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2Uob3B0aW9uPy5lbWFpbClcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtMTcgZnctbWVkaXVtIGZjLW9ueXggbWItMCBsaW5lLWhlaWdodC0xXCI+e3sgb3B0aW9uPy5uYW1lIH19PC9oNj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTMgZnctbm9ybWFsIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uPy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIEBpZiAoc2hvd0hpbnQpIHtcclxuICAgICAgICA8bWF0LWhpbnQ+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtb255eFwiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxhcHAtdmFsaWRhdGlvbi1lcnJvcnMgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPjwvYXBwLXZhbGlkYXRpb24tZXJyb3JzPlxyXG4gICAgQGlmICh1c2VyQWxyZWFkeUV4aXN0KSB7XHJcbiAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ3VzZXJBbHJlYWR5RXhpc3QnKSB9fVxyXG4gICAgICA8L21hdC1lcnJvcj5cclxuICAgIH1cclxuICAgIEBpZiAoYXJyYXlMaXN0Py5sZW5ndGggJiYgIWlzUmVhZE9ubHkgJiYgbXVsdGlwbGUpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtbGlzdCBuLXJlc3VsdHNcIj5cclxuICAgICAgICAgIEBmb3IgKGVtYWlscyBvZiBhcnJheUxpc3Q7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ib3ggbi1jb2wgcHgtM1wiIFtuZ0NsYXNzXT1cInsnbXQtMCc6ICRpbmRleCA9PT0gMH1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1pbmZvIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwidXNlciBpbWFnZVwiIFtzcmNdPVwiZ2V0SW1hZ2UoZW1haWxzPy5bJ3BlcnNvbkVtYWlsJ10pXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiIGNsYXNzPVwicHJvZi1pbWdcIiBkcmFnZ2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGVtYWlscz8uWydwZXJzb25OYW1lJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAoZW1haWxzPy5bJ3BlcnNvbk5hbWUnXSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGVtYWlscz8uWydwZXJzb25FbWFpbCddIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgQGlmICghKGlzUmVhZE9ubHkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkcy1idXR0b24gY2xhc3M9XCJkcy1idG4tYWN0aW9uXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImRlbGV0ZVJvdygkaW5kZXgsZW1haWxzKVwiIGljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cInRyYXNoXCIgY2xhc3M9XCJmYy1yZWQgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuQGlmIChpc1JlYWRPbmx5KSB7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gJiYgKGZpZWxkPy5wZXJzb25OYW1lIHx8IG11bHRpcGxlKSAtLT5cclxuICAgIDxhcHAtaW5mby1pdGVtXHJcbiAgICAgIGNsYXNzPVwiaW5mby1pdGVtXCIgdHlwZT1cInVzZXItcGlja2VyXCIgW2hhc0xhYmVsXT1cIiEhbGFiZWxcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbbmdDbGFzc109XCJ7J3VzZXItcGlja2VyJzogIWlzUmVhZE9ubHl9XCIgW2FjdGlvblR5cGVdPVwiIWlzUmVhZE9ubHkgPyAnZGVsZXRlJyA6ICdlZGl0J1wiXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiIFtuYW1lXT1cImNvbnRyb2wudmFsdWVbJ3BlcnNvbk5hbWUnXVwiIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlWydwZXJzb25FbWFpbCddXCIgW2FycmF5TGlzdF09XCJhcnJheUxpc3RcIj5cclxuICAgICAgPCEtLSBbYXJyYXlMaXN0XT1cImFycmF5TGlzdFwiIC0tPlxyXG4gICAgPC9hcHAtaW5mby1pdGVtPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG5cclxuPHNhdC1wb3BvdmVyICNzZWFyY2hFbXBQb3BvdmVyIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImJlbG93XCI+XHJcbiAgPGRpdiBjbGFzcz1cImRlZmF1bHQtcG9wb3ZlciBwLTNcIj5cclxuICAgIDxvbCBjbGFzcz1cInB4LTMgbS0wXCI+XHJcbiAgICAgIDxsaT57eyBpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzEnKSB9fTwvbGk+XHJcbiAgICAgIDxsaT57eyBpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzInKSB9fTwvbGk+XHJcbiAgICAgIDxsaT57eyBpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzMnKSB9fTwvbGk+XHJcbiAgICAgIDxsaT57eyBpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzQnKSB9fTwvbGk+XHJcbiAgICA8L29sPlxyXG4gIDwvZGl2PlxyXG48L3NhdC1wb3BvdmVyPlxyXG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL3NlYXJjaC1lbXBsb3llZS9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvc2VhcmNoLWVtcGxveWVlL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7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Qzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEZXN0cm95UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIGluamVjdCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TmdDbGFzc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmV9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBTYXRQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5mb0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNoYXJlZHMgfSBmcm9tICcuLi9zaGFyZWQtaW1wb3J0cyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaC1lbXBsb3llZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTWF0SW5wdXQsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgLi4uU2hhcmVkc1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWFyY2hFbXBsb3llZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRW1wbG95ZWVDb21wb25lbnQ8VHlwZT4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPiB7XHJcbiAgQElucHV0KCkgdmFsdWVOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcbiAgQElucHV0KCkgb3B0aW9uYWwgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkYXRhITogYW55W107XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRW1wID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbklucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHNob3dFZGl0ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGVkaXREaXJlY3RNYW5nZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVEaXJlY3RNYW5nZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGFycmF5TGlzdDogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBpc1VuaXF1ZVVzZXJzID0gZmFsc2U7XHJcbiAgdXNlckFscmVhZHlFeGlzdCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBlbWl0ZWREZWxldGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcblxyXG5cclxuICBkZWxldGVSb3coaW5kOiBudW1iZXIsIHJvd0RhdGEpIHtcclxuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5KSB7XHJcbiAgICAgIHRoaXMuYXJyYXlMaXN0ID0gdGhpcy5hcnJheUxpc3QuZmlsdGVyKChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9IGluZDtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICByb3dEYXRhOiByb3dEYXRhLFxyXG4gICAgICAgIGFycmF5TGlzdDogdGhpcy5hcnJheUxpc3RcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtaXRlZERlbGV0ZWRWYWx1ZS5lbWl0KG9iaik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvYWRPcHRpb25zKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5kYXRhID0gW107XHJcbiAgICBpZiAoaW5wdXQubGVuZ3RoID49IDMpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvcmVTZXJ2aWNlLnNlYXJjaEVtcGxveWVlKGlucHV0KS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IGZvcm0uVXNlcnM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG5cclxuICAgICAgICB9LCBjb21wbGV0ZTogKCkgPT4ge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5sZW5ndGggPT0gMCkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5jbHVkZURhdGEob3B0aW9uOiBhbnksIGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmIChcclxuICAgICAgb3B0aW9uPy5lbWFpbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSB8fFxyXG4gICAgICBvcHRpb24/Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gb3B0aW9uO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2UoaWQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJy9ncm91cC9pLWdhdGUvd20tYnBtL2Zvcm1zLy0vcHJveHkvcG9ydHJhaXQ/ZW1haWw9JyArIGlkO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3B0aW9uKG9iamVjdDogYW55LCBldjogYW55KSB7XHJcbiAgICB0aGlzLnVzZXJBbHJlYWR5RXhpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5kYXRhID0gW107XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIHRoaXMuYXJyYXlMaXN0LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LnBlcnNvbkVtYWlsID09PSBvYmplY3Q/LmVtYWlsKSkge1xyXG4gICAgICAgIHRoaXMudXNlckFscmVhZHlFeGlzdCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgcGVyc29uTmFtZTogb2JqZWN0Lm5hbWUsXHJcbiAgICAgICAgcGVyc29uRW1haWw6IG9iamVjdC5lbWFpbCxcclxuICAgICAgICBqb2I6IG9iamVjdC5qb2IubmFtZSxcclxuICAgICAgICBqb2JDb2RlOiBvYmplY3Quam9iLmNvZGUsXHJcbiAgICAgICAgbWFuYWdlcjogb2JqZWN0Lm1hbmFnZXIsXHJcbiAgICAgICAgZGVwYXJ0bWVudDogb2JqZWN0LmRlcGFydG1lbnQsXHJcbiAgICAgICAgZ2VuZXJhbERlcGFydG1lbnQ6IG9iamVjdC5nZW5lcmFsRGVwYXJ0bWVudCxcclxuICAgICAgICBzZWN0b3I6IG9iamVjdC5zZWN0b3IsXHJcbiAgICAgICAgc2VjdGlvbjogb2JqZWN0LnNlY3Rpb24sXHJcbiAgICAgICAgc2VuaW9yU2VjdG9yTmFtZTogb2JqZWN0LnNlbmlvclNlY3Rvck5hbWVcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcnJheUxpc3QucHVzaChvYmopO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5hcnJheUxpc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29udHJvbFZhbHVlID0ge1xyXG4gICAgICAgIHBlcnNvbk5hbWU6IG9iamVjdC5uYW1lLFxyXG4gICAgICAgIHBlcnNvbkVtYWlsOiBvYmplY3QuZW1haWxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoY29udHJvbFZhbHVlKTtcclxuICAgICAgdGhpcy5lbXBsb3llZVNlYXJjaENvbnRyb2wuc2V0VmFsdWUob2JqZWN0Lm5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBzZWFyY2hFbXAge1xyXG4gIHBlcnNvbk5hbWU/OiBzdHJpbmc7XHJcbiAgcGVyc29uRW1haWw/OiBzdHJpbmc7XHJcbiAgY29udGFjdD86IHN0cmluZztcclxuICBlbXBsb3llZU51bWJlcj86IHN0cmluZztcclxufVxyXG4iLCJAaWYgKCFpc1JlYWRPbmx5KSB7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZihsYWJlbCl7XHJcbiAgICAgIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwiIXJlcXVpcmVkXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiPjwvYXBwLWZvcm0tbGFiZWw+XHJcbiAgICAgIH1cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxkcy1pY29uIGljb249XCJzZWFyY2hcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTE4XCI+PC9kcy1pY29uPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiIGFyaWEtbGFiZWw9XCJOdW1iZXJcIiAoaW5wdXQpPVwib25Mb2FkT3B0aW9ucygkZXZlbnQpXCIgbWF0SW5wdXQgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW2Zvcm1Db250cm9sXT1cImVtcGxveWVlU2VhcmNoQ29udHJvbFwiIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCI+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZiAobG9hZGluZykge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zcGlubmVyIGQtaW5saW5lLWJsb2NrIHNwaW4gZmMtY29yYWxcIiBtYXRTdWZmaXg+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgQGZvciAob3B0aW9uIG9mIGRhdGE7IHRyYWNrIG9wdGlvbikge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8uWydwZXJzb25OYW1lJ11cIlxyXG4gICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0T3B0aW9uKG9wdGlvbiAsICRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNhcmQgY2lyY2xlZC1pbWcgc21hbGxcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZShvcHRpb24/LmVtYWlsKVwiIG9uZXJyb3I9XCJ0aGlzLm9uZXJyb3I9bnVsbDt0aGlzLnNyYz0nYXNzZXRzL2ltYWdlcy91c2VyLnN2Zyc7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLWhlaWdodC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJmcy0xNyBmdy1tZWRpdW0gZmMtb255eCBtYi0wIGxpbmUtaGVpZ2h0LTFcIj57eyBvcHRpb24/Lm5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMyBmdy1ub3JtYWwgZmMtZGFyay1ncmF5XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24/LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgQGlmIChzaG93SGludCkge1xyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIiBbbmdDbGFzc109XCJ7J2ZjLW9hc2lzLWxpZ2h0LWltcCc6dmFsdWV9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1oaW50PlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbiAgICBAaWYgKHVzZXJBbHJlYWR5RXhpc3QpIHtcclxuICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgndXNlckFscmVhZHlFeGlzdCcpIH19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgfVxyXG4gICAgQGlmIChhcnJheUxpc3Q/Lmxlbmd0aCAmJiAhaXNSZWFkT25seSAmJiBtdWx0aXBsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0IG4tcmVzdWx0c1wiPlxyXG4gICAgICAgICAgQGZvciAoZW1haWxzIG9mIGFycmF5TGlzdDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWJveCBuLWNvbCBweC0zXCIgW25nQ2xhc3NdPVwieydtdC0wJzogJGluZGV4ID09PSAwfVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJ1c2VyIGltYWdlXCIgW3NyY109XCJnZXRJbWFnZShlbWFpbHM/LlsncGVyc29uRW1haWwnXSlcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJwcm9mLWltZ1wiIGRyYWdnYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxzPy5bJ3BlcnNvbk5hbWUnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IChlbWFpbHM/LlsncGVyc29uTmFtZSddKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxzPy5bJ3BlcnNvbkVtYWlsJ10gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEoaXNSZWFkT25seSkpIHtcclxuICAgICAgICAgICAgICAgICAgPGRzLWJ1dHRvbiBjbGFzcz1cImRzLWJ0bi1hY3Rpb25cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiZGVsZXRlUm93KCRpbmRleCxlbWFpbHMpXCIgaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwidHJhc2hcIiBjbGFzcz1cImZjLXJlZCBmcy0yMFwiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG5cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG5AaWYgKGlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPCEtLSAmJiAoZmllbGQ/LnBlcnNvbk5hbWUgfHwgbXVsdGlwbGUpIC0tPlxyXG4gICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgY2xhc3M9XCJpbmZvLWl0ZW1cIiB0eXBlPVwidXNlci1waWNrZXJcIiBbaGFzTGFiZWxdPVwiISFsYWJlbFwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cInsndXNlci1waWNrZXInOiAhaXNSZWFkT25seX1cIiBbYWN0aW9uVHlwZV09XCIhaXNSZWFkT25seSA/ICdkZWxldGUnIDogJ2VkaXQnXCJcclxuICAgICAgW2xhYmVsXT1cImxhYmVsXCIgW25hbWVdPVwiY29udHJvbC52YWx1ZVsncGVyc29uTmFtZSddXCIgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVbJ3BlcnNvbkVtYWlsJ11cIiBbYXJyYXlMaXN0XT1cImFycmF5TGlzdFwiPlxyXG4gICAgICA8IS0tIFthcnJheUxpc3RdPVwiYXJyYXlMaXN0XCIgLS0+XHJcbiAgICA8L2FwcC1pbmZvLWl0ZW0+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcblxyXG48c2F0LXBvcG92ZXIgI3NlYXJjaEVtcFBvcG92ZXIgW2hhc0JhY2tkcm9wXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1wb3BvdmVyIHAtM1wiPlxyXG4gICAgPG9sIGNsYXNzPVwicHgtMyBtLTBcIj5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMScpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMicpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMycpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfNCcpIH19PC9saT5cclxuICAgIDwvb2w+XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==