@alfresco/adf-process-services 7.0.0-alpha.3 → 7.0.0-alpha.3-11105495707

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.
@@ -30,20 +30,22 @@ import { MatIconModule } from '@angular/material/icon';
30
30
  import { MatButtonModule } from '@angular/material/button';
31
31
  import { MatMenuModule } from '@angular/material/menu';
32
32
  import { MatListModule } from '@angular/material/list';
33
+ import { ActivatedRoute, Router } from '@angular/router';
33
34
  import * as i0 from "@angular/core";
34
35
  import * as i1 from "@alfresco/adf-core";
35
36
  import * as i2 from "../../services/process-content.service";
36
37
  import * as i3 from "../../services/activiti-alfresco.service";
37
38
  import * as i4 from "@alfresco/adf-content-services";
38
- import * as i5 from "./attach-file-widget-dialog.service";
39
- import * as i6 from "@angular/common";
40
- import * as i7 from "@ngx-translate/core";
41
- import * as i8 from "@angular/material/icon";
42
- import * as i9 from "@angular/material/button";
43
- import * as i10 from "@angular/material/menu";
44
- import * as i11 from "@angular/material/list";
39
+ import * as i5 from "@angular/router";
40
+ import * as i6 from "./attach-file-widget-dialog.service";
41
+ import * as i7 from "@angular/common";
42
+ import * as i8 from "@ngx-translate/core";
43
+ import * as i9 from "@angular/material/icon";
44
+ import * as i10 from "@angular/material/button";
45
+ import * as i11 from "@angular/material/menu";
46
+ import * as i12 from "@angular/material/list";
45
47
  export class AttachFileWidgetComponent extends UploadWidgetComponent {
46
- constructor(formService, thumbnails, processContentService, activitiContentService, contentService, contentDialog, appConfigService, downloadService, attachDialogService) {
48
+ constructor(formService, thumbnails, processContentService, activitiContentService, contentService, contentDialog, appConfigService, downloadService, router, activatedRoute, attachDialogService) {
47
49
  super(formService, thumbnails, processContentService);
48
50
  this.formService = formService;
49
51
  this.thumbnails = thumbnails;
@@ -53,6 +55,8 @@ export class AttachFileWidgetComponent extends UploadWidgetComponent {
53
55
  this.contentDialog = contentDialog;
54
56
  this.appConfigService = appConfigService;
55
57
  this.downloadService = downloadService;
58
+ this.router = router;
59
+ this.activatedRoute = activatedRoute;
56
60
  this.attachDialogService = attachDialogService;
57
61
  this.typeId = 'AttachFileWidgetComponent';
58
62
  this.repositoryList = [];
@@ -113,6 +117,7 @@ export class AttachFileWidgetComponent extends UploadWidgetComponent {
113
117
  else {
114
118
  this.contentDialog.openFileBrowseDialogByFolderId(params.fileSource.selectedFolder.pathId).subscribe((selections) => {
115
119
  this.tempFilesList.push(...selections);
120
+ this.updateNodesParams();
116
121
  this.uploadFileFromCS(selections, this.field.params.fileSource.selectedFolder.accountId, this.field.params.fileSource.selectedFolder.siteId);
117
122
  });
118
123
  }
@@ -124,6 +129,7 @@ export class AttachFileWidgetComponent extends UploadWidgetComponent {
124
129
  onRemoveAttachFile(file) {
125
130
  if (this.isTemporaryFile(file)) {
126
131
  this.tempFilesList.splice(this.tempFilesList.indexOf(file.contentBlob), 1);
132
+ this.updateNodesParams();
127
133
  }
128
134
  this.removeFile(file);
129
135
  }
@@ -176,6 +182,7 @@ export class AttachFileWidgetComponent extends UploadWidgetComponent {
176
182
  this.contentDialog.openFileBrowseDialogByDefaultLocation().subscribe((selections) => {
177
183
  if (selections.length) {
178
184
  this.tempFilesList.push(...selections);
185
+ this.updateNodesParams();
179
186
  this.uploadFileFromCS(selections, `alfresco-${repository.id}-${repository.name}Alfresco`);
180
187
  }
181
188
  });
@@ -218,13 +225,20 @@ export class AttachFileWidgetComponent extends UploadWidgetComponent {
218
225
  this.hasFile = true;
219
226
  });
220
227
  }
228
+ updateNodesParams() {
229
+ this.router.navigate([], {
230
+ relativeTo: this.activatedRoute,
231
+ queryParams: { nodes: this.tempFilesList.map(file => file.id).join(',') },
232
+ queryParamsHandling: 'merge'
233
+ });
234
+ }
221
235
  getDomainHost(urlToCheck) {
222
236
  const result = urlToCheck.match('^(?:https?://)?(?:[^@/\n]+@)?(?:www\\.)?([^:/?\n]+)');
223
237
  return result[1];
224
238
  }
225
239
  }
226
- AttachFileWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AttachFileWidgetComponent, deps: [{ token: i1.FormService }, { token: i1.ThumbnailService }, { token: i2.ProcessContentService }, { token: i3.ActivitiContentService }, { token: i4.ContentService }, { token: i4.ContentNodeDialogService }, { token: i1.AppConfigService }, { token: i1.DownloadService }, { token: i5.AttachFileWidgetDialogService }], target: i0.ɵɵFactoryTarget.Component });
227
- AttachFileWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AttachFileWidgetComponent, isStandalone: true, selector: "attach-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-attach-widget {{ field.className }}\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\">\n <div id=\"adf-attach-widget-simple-upload\" *ngIf=\"isSimpleUploadButton() && isUploadButtonVisible()\">\n <a mat-raised-button color=\"primary\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onAttachFileChanged($event)\" />\n </a>\n </div>\n <div class=\"adf-attach-widget__menu-upload\" (focusout)=\"markAsTouched()\" *ngIf=\"isUploadButtonVisible() && isMultipleSourceUpload()\">\n <button mat-raised-button color=\"primary\" [matMenuTriggerFor]=\"menu\" [id]=\"field.id\">\n <mat-icon>attach_file</mat-icon>\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n </button>\n <mat-menu #menu=\"matMenu\" class=\"adf-attach-widget__menu-content\">\n <button mat-menu-item (click)=\"uploadFile.click()\" id=\"attach-local-file\" *ngIf=\"isAllFileSourceSelected()\">\n {{ 'FORM.FIELD.LOCALSTORAGE' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input\n #uploadFile\n class=\"adf-attach-widget__input-type\"\n [multiple]=\"multipleOption\"\n type=\"file\"\n [id]=\"field.id\"\n (change)=\"onAttachFileChanged($event)\"\n />\n </button>\n <button\n mat-menu-item\n *ngIf=\"isDefinedSourceFolder()\"\n id=\"attach-{{ field.params?.fileSource?.name }}\"\n (click)=\"openSelectDialogFromFileSource()\"\n >\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ field.params?.fileSource?.name }}\n </button>\n <div *ngIf=\"!isDefinedSourceFolder()\">\n <button mat-menu-item *ngFor=\"let repo of repositoryList\" id=\"attach-{{ repo?.name }}\" (click)=\"openSelectDialog(repo)\">\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ repo.name }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n\n<div data-automation-id=\"adf-attach-widget-readonly-list\">\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-attach-files-row\" *ngFor=\"let file of field.value; index as i\">\n <mat-icon matListItemIcon>\n <img class=\"adf-attach-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"file.content ? getIcon(file.content.mimeType) : getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"onAttachFileClicked(file)\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [attr.aria-label]=\"file.name\"\n [tabindex]=\"i\"/>\n </mat-icon>\n\n <div matListItemLine class=\"adf-attach-widget__label\">\n <span id=\"{{'file-'+file.id}}\"\n (click)=\"onAttachFileClicked(file)\"\n [title]=\"file.name\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [tabindex]=\"i\" class=\"adf-file\">\n {{file.name}}\n </span>\n <button id=\"{{'file-'+file.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button\n id=\"{{ 'file-' + file.id + '-show-file' }}\"\n [disabled]=\"file.isExternal || !file.contentAvailable || !file.mimeType\"\n mat-menu-item\n (click)=\"onAttachFileClicked(file)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button\n id=\"{{ 'file-' + file.id + '-download-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType\"\n mat-menu-item\n (click)=\"downloadContent(file)\"\n >\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button\n *ngIf=\"!field.readOnly\"\n mat-menu-item\n [id]=\"'file-' + file.id + '-remove'\"\n (click)=\"onRemoveAttachFile(file)\"\n (keyup.enter)=\"onRemoveAttachFile(file)\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n </mat-menu>\n </mat-list-item>\n </mat-list>\n</div>\n\n<error-widget [error]=\"field.validationSummary\"></error-widget>\n<error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n", styles: [".adf-attach-widget-container{margin-bottom:15px;display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget{width:100%;word-break:break-all;padding:.4375em 0;border-top:.8438em solid transparent}.adf-attach-widget__icon{cursor:pointer}.adf-attach-widget__label{display:flex;align-items:center;cursor:pointer}.adf-attach-widget__label:hover{text-decoration:underline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i11.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i11.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i11.MatListItemLine, selector: "[matListItemLine]" }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: AlfrescoIconComponent, selector: "adf-alfresco-icon" }], encapsulation: i0.ViewEncapsulation.None });
240
+ AttachFileWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AttachFileWidgetComponent, deps: [{ token: i1.FormService }, { token: i1.ThumbnailService }, { token: i2.ProcessContentService }, { token: i3.ActivitiContentService }, { token: i4.ContentService }, { token: i4.ContentNodeDialogService }, { token: i1.AppConfigService }, { token: i1.DownloadService }, { token: i5.Router }, { token: i5.ActivatedRoute }, { token: i6.AttachFileWidgetDialogService }], target: i0.ɵɵFactoryTarget.Component });
241
+ AttachFileWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AttachFileWidgetComponent, isStandalone: true, selector: "attach-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-attach-widget {{ field.className }}\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\">\n <div id=\"adf-attach-widget-simple-upload\" *ngIf=\"isSimpleUploadButton() && isUploadButtonVisible()\">\n <a mat-raised-button color=\"primary\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onAttachFileChanged($event)\" />\n </a>\n </div>\n <div class=\"adf-attach-widget__menu-upload\" (focusout)=\"markAsTouched()\" *ngIf=\"isUploadButtonVisible() && isMultipleSourceUpload()\">\n <button mat-raised-button color=\"primary\" [matMenuTriggerFor]=\"menu\" [id]=\"field.id\">\n <mat-icon>attach_file</mat-icon>\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n </button>\n <mat-menu #menu=\"matMenu\" class=\"adf-attach-widget__menu-content\">\n <button mat-menu-item (click)=\"uploadFile.click()\" id=\"attach-local-file\" *ngIf=\"isAllFileSourceSelected()\">\n {{ 'FORM.FIELD.LOCALSTORAGE' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input\n #uploadFile\n class=\"adf-attach-widget__input-type\"\n [multiple]=\"multipleOption\"\n type=\"file\"\n [id]=\"field.id\"\n (change)=\"onAttachFileChanged($event)\"\n />\n </button>\n <button\n mat-menu-item\n *ngIf=\"isDefinedSourceFolder()\"\n id=\"attach-{{ field.params?.fileSource?.name }}\"\n (click)=\"openSelectDialogFromFileSource()\"\n >\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ field.params?.fileSource?.name }}\n </button>\n <div *ngIf=\"!isDefinedSourceFolder()\">\n <button mat-menu-item *ngFor=\"let repo of repositoryList\" id=\"attach-{{ repo?.name }}\" (click)=\"openSelectDialog(repo)\">\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ repo.name }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n\n<div data-automation-id=\"adf-attach-widget-readonly-list\">\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-attach-files-row\" *ngFor=\"let file of field.value; index as i\">\n <mat-icon matListItemIcon>\n <img class=\"adf-attach-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"file.content ? getIcon(file.content.mimeType) : getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"onAttachFileClicked(file)\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [attr.aria-label]=\"file.name\"\n [tabindex]=\"i\"/>\n </mat-icon>\n\n <div matListItemLine class=\"adf-attach-widget__label\">\n <span id=\"{{'file-'+file.id}}\"\n (click)=\"onAttachFileClicked(file)\"\n [title]=\"file.name\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [tabindex]=\"i\" class=\"adf-file\">\n {{file.name}}\n </span>\n <button id=\"{{'file-'+file.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button\n id=\"{{ 'file-' + file.id + '-show-file' }}\"\n [disabled]=\"file.isExternal || !file.contentAvailable || !file.mimeType\"\n mat-menu-item\n (click)=\"onAttachFileClicked(file)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button\n id=\"{{ 'file-' + file.id + '-download-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType\"\n mat-menu-item\n (click)=\"downloadContent(file)\"\n >\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button\n *ngIf=\"!field.readOnly\"\n mat-menu-item\n [id]=\"'file-' + file.id + '-remove'\"\n (click)=\"onRemoveAttachFile(file)\"\n (keyup.enter)=\"onRemoveAttachFile(file)\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n </mat-menu>\n </mat-list-item>\n </mat-list>\n</div>\n\n<error-widget [error]=\"field.validationSummary\"></error-widget>\n<error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n", styles: [".adf-attach-widget-container{margin-bottom:15px;display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget{width:100%;word-break:break-all;padding:.4375em 0;border-top:.8438em solid transparent}.adf-attach-widget__icon{cursor:pointer}.adf-attach-widget__label{display:flex;align-items:center;cursor:pointer}.adf-attach-widget__label:hover{text-decoration:underline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i12.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i12.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i12.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i12.MatListItemLine, selector: "[matListItemLine]" }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: AlfrescoIconComponent, selector: "adf-alfresco-icon" }], encapsulation: i0.ViewEncapsulation.None });
228
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AttachFileWidgetComponent, decorators: [{
229
243
  type: Component,
230
244
  args: [{ selector: 'attach-widget', standalone: true, imports: [
@@ -247,5 +261,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
247
261
  '(invalid)': 'event($event)',
248
262
  '(select)': 'event($event)'
249
263
  }, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-attach-widget {{ field.className }}\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}\n <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\">\n <div id=\"adf-attach-widget-simple-upload\" *ngIf=\"isSimpleUploadButton() && isUploadButtonVisible()\">\n <a mat-raised-button color=\"primary\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onAttachFileChanged($event)\" />\n </a>\n </div>\n <div class=\"adf-attach-widget__menu-upload\" (focusout)=\"markAsTouched()\" *ngIf=\"isUploadButtonVisible() && isMultipleSourceUpload()\">\n <button mat-raised-button color=\"primary\" [matMenuTriggerFor]=\"menu\" [id]=\"field.id\">\n <mat-icon>attach_file</mat-icon>\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n </button>\n <mat-menu #menu=\"matMenu\" class=\"adf-attach-widget__menu-content\">\n <button mat-menu-item (click)=\"uploadFile.click()\" id=\"attach-local-file\" *ngIf=\"isAllFileSourceSelected()\">\n {{ 'FORM.FIELD.LOCALSTORAGE' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input\n #uploadFile\n class=\"adf-attach-widget__input-type\"\n [multiple]=\"multipleOption\"\n type=\"file\"\n [id]=\"field.id\"\n (change)=\"onAttachFileChanged($event)\"\n />\n </button>\n <button\n mat-menu-item\n *ngIf=\"isDefinedSourceFolder()\"\n id=\"attach-{{ field.params?.fileSource?.name }}\"\n (click)=\"openSelectDialogFromFileSource()\"\n >\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ field.params?.fileSource?.name }}\n </button>\n <div *ngIf=\"!isDefinedSourceFolder()\">\n <button mat-menu-item *ngFor=\"let repo of repositoryList\" id=\"attach-{{ repo?.name }}\" (click)=\"openSelectDialog(repo)\">\n <mat-icon>\n <adf-alfresco-icon></adf-alfresco-icon>\n </mat-icon>\n {{ repo.name }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n\n<div data-automation-id=\"adf-attach-widget-readonly-list\">\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-attach-files-row\" *ngFor=\"let file of field.value; index as i\">\n <mat-icon matListItemIcon>\n <img class=\"adf-attach-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"file.content ? getIcon(file.content.mimeType) : getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"onAttachFileClicked(file)\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [attr.aria-label]=\"file.name\"\n [tabindex]=\"i\"/>\n </mat-icon>\n\n <div matListItemLine class=\"adf-attach-widget__label\">\n <span id=\"{{'file-'+file.id}}\"\n (click)=\"onAttachFileClicked(file)\"\n [title]=\"file.name\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [tabindex]=\"i\" class=\"adf-file\">\n {{file.name}}\n </span>\n <button id=\"{{'file-'+file.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button\n id=\"{{ 'file-' + file.id + '-show-file' }}\"\n [disabled]=\"file.isExternal || !file.contentAvailable || !file.mimeType\"\n mat-menu-item\n (click)=\"onAttachFileClicked(file)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button\n id=\"{{ 'file-' + file.id + '-download-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType\"\n mat-menu-item\n (click)=\"downloadContent(file)\"\n >\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button\n *ngIf=\"!field.readOnly\"\n mat-menu-item\n [id]=\"'file-' + file.id + '-remove'\"\n (click)=\"onRemoveAttachFile(file)\"\n (keyup.enter)=\"onRemoveAttachFile(file)\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n </mat-menu>\n </mat-list-item>\n </mat-list>\n</div>\n\n<error-widget [error]=\"field.validationSummary\"></error-widget>\n<error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"></error-widget>\n", styles: [".adf-attach-widget-container{margin-bottom:15px;display:flex;align-items:center}.adf-attach-widget-container input{cursor:pointer;height:100%;right:0;opacity:0;position:absolute;top:0;width:300px;z-index:4}.adf-attach-widget__input-type{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.adf-attach-widget{width:100%;word-break:break-all;padding:.4375em 0;border-top:.8438em solid transparent}.adf-attach-widget__icon{cursor:pointer}.adf-attach-widget__label{display:flex;align-items:center;cursor:pointer}.adf-attach-widget__label:hover{text-decoration:underline}\n"] }]
250
- }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i1.ThumbnailService }, { type: i2.ProcessContentService }, { type: i3.ActivitiContentService }, { type: i4.ContentService }, { type: i4.ContentNodeDialogService }, { type: i1.AppConfigService }, { type: i1.DownloadService }, { type: i5.AttachFileWidgetDialogService }]; } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLWZpbGUtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvZm9ybS93aWRnZXRzL2NvbnRlbnQtd2lkZ2V0L2F0dGFjaC1maWxlLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL2Zvcm0vd2lkZ2V0cy9jb250ZW50LXdpZGdldC9hdHRhY2gtZmlsZS13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakgsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEw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QUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBpc0Rldk1vZGUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgQXBwQ29uZmlnVmFsdWVzLCBEb3dubG9hZFNlcnZpY2UsIEVycm9yV2lkZ2V0Q29tcG9uZW50LCBGb3JtU2VydmljZSwgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBbGZyZXNjb0ljb25Db21wb25lbnQsIENvbnRlbnROb2RlRGlhbG9nU2VydmljZSwgQ29udGVudFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQWxmcmVzY29FbmRwb2ludFJlcHJlc2VudGF0aW9uLCBOb2RlLCBOb2RlQ2hpbGRBc3NvY2lhdGlvbiwgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgZnJvbSwgb2YsIFN1YmplY3QsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF0dGFjaEZpbGVXaWRnZXREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9hdHRhY2gtZmlsZS13aWRnZXQtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC53aWRnZXQnO1xuaW1wb3J0IHsgUHJvY2Vzc0NvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZpdGlDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGl2aXRpLWFsZnJlc2NvLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhdHRhY2gtd2lkZ2V0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0TGlzdE1vZHVsZSxcbiAgICAgICAgRXJyb3JXaWRnZXRDb21wb25lbnQsXG4gICAgICAgIEFsZnJlc2NvSWNvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaC1maWxlLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXR0YWNoLWZpbGUtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGludmFsaWQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKHNlbGVjdCknOiAnZXZlbnQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNoRmlsZVdpZGdldENvbXBvbmVudCBleHRlbmRzIFVwbG9hZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICB0eXBlSWQgPSAnQXR0YWNoRmlsZVdpZGdldENvbXBvbmVudCc7XG4gICAgcmVwb3NpdG9yeUxpc3Q6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSB0ZW1wRmlsZXNMaXN0ID0gW107XG4gICAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdGh1bWJuYWlsczogVGh1bWJuYWlsU2VydmljZSxcbiAgICAgICAgcHVibGljIHByb2Nlc3NDb250ZW50U2VydmljZTogUHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGl2aXRpQ29udGVudFNlcnZpY2U6IEFjdGl2aXRpQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnREaWFsb2c6IENvbnRlbnROb2RlRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRvd25sb2FkU2VydmljZTogRG93bmxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGF0dGFjaERpYWxvZ1NlcnZpY2U6IEF0dGFjaEZpbGVXaWRnZXREaWFsb2dTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlLCB0aHVtYm5haWxzLCBwcm9jZXNzQ29udGVudFNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGQudmFsdWUpICYmIHRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBGaWxlc0xpc3QucHVzaCguLi50aGlzLmZpZWxkLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5nZXRBbGZyZXNjb1JlcG9zaXRvcmllcygpLnN1YnNjcmliZSgocmVwb0xpc3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVwb3NpdG9yeUxpc3QgPSByZXBvTGlzdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS50YXNrU2F2ZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChmb3JtU2F2ZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtU2F2ZWQuZm9ybS5pZCA9PT0gdGhpcy5maWVsZC5mb3JtLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgaXNGaWxlU291cmNlQ29uZmlndXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U7XG4gICAgfVxuXG4gICAgaXNNdWx0aXBsZVNvdXJjZVVwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZpZWxkLnJlYWRPbmx5ICYmIHRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpICYmICF0aGlzLmlzT25seUxvY2FsU291cmNlU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBpc0FsbEZpbGVTb3VyY2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQucGFyYW1zPy5maWxlU291cmNlPy5zZXJ2aWNlSWQgPT09ICdhbGwtZmlsZS1zb3VyY2VzJyAmJiAhdGhpcy5maWVsZC5wYXJhbXMubGluaztcbiAgICB9XG5cbiAgICBpc09ubHlMb2NhbFNvdXJjZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U/LnNlcnZpY2VJZCA9PT0gJ2xvY2FsLWZpbGUnO1xuICAgIH1cblxuICAgIGlzU2ltcGxlVXBsb2FkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuaXNVcGxvYWRCdXR0b25WaXNpYmxlKCkgJiYgIXRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpKSB8fCB0aGlzLmlzT25seUxvY2FsU291cmNlU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBpc1VwbG9hZEJ1dHRvblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuaGFzRmlsZSB8fCB0aGlzLm11bHRpcGxlT3B0aW9uKSAmJiAhdGhpcy5maWVsZC5yZWFkT25seTtcbiAgICB9XG5cbiAgICBpc0RlZmluZWRTb3VyY2VGb2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmllbGQucGFyYW1zPy5maWxlU291cmNlPy5zZWxlY3RlZEZvbGRlcjtcbiAgICB9XG5cbiAgICBpc1RlbXBvcmFyeUZpbGUoZmlsZTogeyBuYW1lPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcEZpbGVzTGlzdC5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0ubmFtZSA9PT0gZmlsZS5uYW1lKSA+PSAwO1xuICAgIH1cblxuICAgIGdldE5vZGVGcm9tVGVtcEZpbGUoZmlsZTogeyBuYW1lPzogc3RyaW5nIH0pOiBOb2RlQ2hpbGRBc3NvY2lhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBGaWxlc0xpc3QuZmluZCgoZWxlbSkgPT4gZWxlbS5uYW1lID09PSBmaWxlLm5hbWUpO1xuICAgIH1cblxuICAgIG9wZW5TZWxlY3REaWFsb2dGcm9tRmlsZVNvdXJjZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5maWVsZC5wYXJhbXM7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnJlcG9zaXRvcnlMaXN0LmZpbmQoKHJlcG8pID0+IHJlcG8ubmFtZSA9PT0gcGFyYW1zPy5maWxlU291cmNlPy5uYW1lKTtcbiAgICAgICAgaWYgKHJlcG9zaXRvcnkgJiYgdGhpcy5pc0V4dGVybmFsSG9zdChyZXBvc2l0b3J5KSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlRnJvbUV4dGVybmFsQ1MocmVwb3NpdG9yeSwgcGFyYW1zPy5maWxlU291cmNlPy5zZWxlY3RlZEZvbGRlcj8ucGF0aElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudERpYWxvZy5vcGVuRmlsZUJyb3dzZURpYWxvZ0J5Rm9sZGVySWQocGFyYW1zLmZpbGVTb3VyY2Uuc2VsZWN0ZWRGb2xkZXIucGF0aElkKS5zdWJzY3JpYmUoKHNlbGVjdGlvbnM6IE5vZGVbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcEZpbGVzTGlzdC5wdXNoKC4uLnNlbGVjdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUZyb21DUyhcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5wYXJhbXMuZmlsZVNvdXJjZS5zZWxlY3RlZEZvbGRlci5hY2NvdW50SWQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucGFyYW1zLmZpbGVTb3VyY2Uuc2VsZWN0ZWRGb2xkZXIuc2l0ZUlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BdHRhY2hGaWxlQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMudGVtcEZpbGVzTGlzdC5wdXNoKC4uLkFycmF5LmZyb20oZXZlbnQudGFyZ2V0LmZpbGVzKSk7XG4gICAgICAgIHRoaXMub25GaWxlQ2hhbmdlZChldmVudCk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVBdHRhY2hGaWxlKGZpbGU6IEZpbGUgfCBSZWxhdGVkQ29udGVudFJlcHJlc2VudGF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcG9yYXJ5RmlsZShmaWxlKSkge1xuICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0LnNwbGljZSh0aGlzLnRlbXBGaWxlc0xpc3QuaW5kZXhPZigoZmlsZSBhcyBSZWxhdGVkQ29udGVudFJlcHJlc2VudGF0aW9uKS5jb250ZW50QmxvYiksIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICB9XG5cbiAgICBvbkF0dGFjaEZpbGVDbGlja2VkKGZpbGU6IGFueSkge1xuICAgICAgICBpZiAoZmlsZS5pc0V4dGVybmFsIHx8ICFmaWxlLmNvbnRlbnRBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1RlbXBvcmFyeUZpbGUoZmlsZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUNvbnRlbnRDbGlja2VkLm5leHQoZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVDbGlja2VkKGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb250ZW50KGZpbGU6IGFueSB8IFJlbGF0ZWRDb250ZW50UmVwcmVzZW50YXRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUZW1wb3JhcnlGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlQmxvYiA9IChmaWxlIGFzIFJlbGF0ZWRDb250ZW50UmVwcmVzZW50YXRpb24pLmNvbnRlbnRCbG9iO1xuICAgICAgICAgICAgaWYgKGZpbGVCbG9iKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRCbG9iKGZpbGVCbG9iLCBmaWxlLm5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlVXBsb2FkZWQ6IE5vZGVDaGlsZEFzc29jaWF0aW9uID0gdGhpcy5nZXROb2RlRnJvbVRlbXBGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVVcmwgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldENvbnRlbnRVcmwobm9kZVVwbG9hZGVkLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZFVybChub2RlVXJsLCBmaWxlLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlLnNvdXJjZUlkKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VIb3N0ID0gdGhpcy5maW5kU291cmNlKGZpbGUuc291cmNlKTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VIb3N0ICYmIHRoaXMuaXNFeHRlcm5hbEhvc3Qoc291cmNlSG9zdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaERpYWxvZ1NlcnZpY2UuZG93bmxvYWRVUkwoc291cmNlSG9zdCwgZmlsZS5zb3VyY2VJZCkuc3Vic2NyaWJlKChub2RlVXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkVXJsKG5vZGVVcmwsIGZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVVcmwgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldENvbnRlbnRVcmwoZmlsZS5zb3VyY2VJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRVcmwobm9kZVVybCwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLmdldEZpbGVSYXdDb250ZW50KGZpbGUuaWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoYmxvYjogQmxvYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEJsb2IoYmxvYiwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICgpID0+IHt9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdERpYWxvZyhyZXBvc2l0b3J5OiBBbGZyZXNjb0VuZHBvaW50UmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHRlcm5hbEhvc3QocmVwb3NpdG9yeSkgJiYgIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVGcm9tRXh0ZXJuYWxDUyhyZXBvc2l0b3J5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudERpYWxvZy5vcGVuRmlsZUJyb3dzZURpYWxvZ0J5RGVmYXVsdExvY2F0aW9uKCkuc3Vic2NyaWJlKChzZWxlY3Rpb25zOiBOb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0LnB1c2goLi4uc2VsZWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUZyb21DUyhzZWxlY3Rpb25zLCBgYWxmcmVzY28tJHtyZXBvc2l0b3J5LmlkfS0ke3JlcG9zaXRvcnkubmFtZX1BbGZyZXNjb2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRmlsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxIb3N0KHJlcG9zaXRvcnk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RUNNSG9zdCA9IHRoaXMuZ2V0RG9tYWluSG9zdCh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KEFwcENvbmZpZ1ZhbHVlcy5FQ01IT1NUKSk7XG4gICAgICAgIGNvbnN0IGNob3NlblJlcG9zaXRvcnlIb3N0ID0gdGhpcy5nZXREb21haW5Ib3N0KHJlcG9zaXRvcnkucmVwb3NpdG9yeVVybCk7XG4gICAgICAgIHJldHVybiBjaG9zZW5SZXBvc2l0b3J5SG9zdCAhPT0gY3VycmVudEVDTUhvc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kU291cmNlKHNvdXJjZUlkZW50aWZpZXI6IHN0cmluZyk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnlMaXN0LmZpbmQoKHJlcG9zaXRvcnkpID0+IHNvdXJjZUlkZW50aWZpZXIgPT09IGBhbGZyZXNjby0ke3JlcG9zaXRvcnkuaWR9LSR7cmVwb3NpdG9yeS5uYW1lfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkRmlsZUZyb21FeHRlcm5hbENTKHJlcG9zaXRvcnk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbiwgY3VycmVudEZvbGRlcklkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZGVudGlmaWVyID0gYGFsZnJlc2NvLSR7cmVwb3NpdG9yeS5pZH0tJHtyZXBvc2l0b3J5Lm5hbWV9QWxmcmVzY29gO1xuICAgICAgICB0aGlzLmF0dGFjaERpYWxvZ1NlcnZpY2Uub3BlbkxvZ2luKHJlcG9zaXRvcnksIGN1cnJlbnRGb2xkZXJJZCwgYWNjb3VudElkZW50aWZpZXIpLnN1YnNjcmliZSgoc2VsZWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgc2VsZWN0aW9ucy5mb3JFYWNoKChub2RlKSA9PiAobm9kZVsnaXNFeHRlcm5hbCddID0gdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0LnB1c2goLi4uc2VsZWN0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVGcm9tQ1Moc2VsZWN0aW9ucywgYWNjb3VudElkZW50aWZpZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZEZpbGVGcm9tQ1MoZmlsZU5vZGVMaXN0OiBOb2RlW10sIGFjY291bnRJZDogc3RyaW5nLCBzaXRlSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsZXNTYXZlZCA9IFtdO1xuXG4gICAgICAgIGZpbGVOb2RlTGlzdC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLmlzTGluayA9IHRoaXMuZmllbGQucGFyYW1zLmxpbms7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZyb20oZmlsZU5vZGVMaXN0KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKG5vZGUpID0+XG4gICAgICAgICAgICAgICAgICAgIHppcChvZihub2RlPy5jb250ZW50Py5taW1lVHlwZSksIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5hcHBseUFsZnJlc2NvTm9kZShub2RlLCBzaXRlSWQsIGFjY291bnRJZCksIG9mKG5vZGVbJ2lzRXh0ZXJuYWwnXSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoW21pbWVUeXBlLCByZXMsIGlzRXh0ZXJuYWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICAgICAgICAgICAgICByZXNbJ2lzRXh0ZXJuYWwnXSA9IGlzRXh0ZXJuYWw7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzU2F2ZWQucHVzaChyZXMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0ZpbGVzID0gdGhpcy5maWVsZC52YWx1ZSA/IHRoaXMuZmllbGQudmFsdWUgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSA9IFsuLi5wcmV2aW91c0ZpbGVzLCAuLi5maWxlc1NhdmVkXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5qc29uLnZhbHVlID0gWy4uLnByZXZpb3VzRmlsZXMsIC4uLmZpbGVzU2F2ZWRdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREb21haW5Ib3N0KHVybFRvQ2hlY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVybFRvQ2hlY2subWF0Y2goJ14oPzpodHRwcz86Ly8pPyg/OlteQC9cXG5dK0ApPyg/Ond3d1xcXFwuKT8oW146Lz9cXG5dKyknKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFsxXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXQge3sgZmllbGQuY2xhc3NOYW1lIH19XCIgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiXG4gICAgICAgID57eyBmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4qPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGlkPVwiYWRmLWF0dGFjaC13aWRnZXQtc2ltcGxlLXVwbG9hZFwiICpuZ0lmPVwiaXNTaW1wbGVVcGxvYWRCdXR0b24oKSAmJiBpc1VwbG9hZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICAgICAgPGEgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAge3sgJ0ZPUk0uRklFTEQuVVBMT0FEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0ICN1cGxvYWRGaWxlcyBbbXVsdGlwbGVdPVwibXVsdGlwbGVPcHRpb25cIiB0eXBlPVwiZmlsZVwiIFtpZF09XCJmaWVsZC5pZFwiIChjaGFuZ2UpPVwib25BdHRhY2hGaWxlQ2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldF9fbWVudS11cGxvYWRcIiAoZm9jdXNvdXQpPVwibWFya0FzVG91Y2hlZCgpXCIgKm5nSWY9XCJpc1VwbG9hZEJ1dHRvblZpc2libGUoKSAmJiBpc011bHRpcGxlU291cmNlVXBsb2FkKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbaWRdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXR0YWNoX2ZpbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZJRUxELlVQTE9BRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXRfX21lbnUtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgaWQ9XCJhdHRhY2gtbG9jYWwtZmlsZVwiICpuZ0lmPVwiaXNBbGxGaWxlU291cmNlU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GSUVMRC5MT0NBTFNUT1JBR0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgI3VwbG9hZEZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXRfX2lucHV0LXR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlT3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQXR0YWNoRmlsZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNEZWZpbmVkU291cmNlRm9sZGVyKClcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImF0dGFjaC17eyBmaWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U/Lm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdERpYWxvZ0Zyb21GaWxlU291cmNlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1hbGZyZXNjby1pY29uPjwvYWRmLWFsZnJlc2NvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLnBhcmFtcz8uZmlsZVNvdXJjZT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEZWZpbmVkU291cmNlRm9sZGVyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCByZXBvIG9mIHJlcG9zaXRvcnlMaXN0XCIgaWQ9XCJhdHRhY2gte3sgcmVwbz8ubmFtZSB9fVwiIChjbGljayk9XCJvcGVuU2VsZWN0RGlhbG9nKHJlcG8pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1hbGZyZXNjby1pY29uPjwvYWRmLWFsZnJlc2NvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVwby5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtYXR0YWNoLXdpZGdldC1yZWFkb25seS1saXN0XCI+XG4gICAgPG1hdC1saXN0ICpuZ0lmPVwiaGFzRmlsZVwiPlxuICAgICAgICA8bWF0LWxpc3QtaXRlbSBjbGFzcz1cImFkZi1hdHRhY2gtZmlsZXMtcm93XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmllbGQudmFsdWU7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZS0nK2ZpbGUuaWQrJy1pY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImZpbGUuY29udGVudCA/IGdldEljb24oZmlsZS5jb250ZW50Lm1pbWVUeXBlKSA6IGdldEljb24oZmlsZS5taW1lVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJtaW1lVHlwZUljb25cIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImlcIi8+XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8ZGl2IG1hdExpc3RJdGVtTGluZSBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwie3snZmlsZS0nK2ZpbGUuaWR9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaVwiIGNsYXNzPVwiYWRmLWZpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tmaWxlLm5hbWV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwie3snZmlsZS0nK2ZpbGUuaWQrJy1vcHRpb24tbWVudSd9fVwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsZUFjdGlvbk1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkJVVFRPTi5GSUxFX09QVElPTl9NRU5VJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1tZW51ICNmaWxlQWN0aW9uTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgJ2ZpbGUtJyArIGZpbGUuaWQgKyAnLXNob3ctZmlsZScgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsZS5pc0V4dGVybmFsIHx8ICFmaWxlLmNvbnRlbnRBdmFpbGFibGUgfHwgIWZpbGUubWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0ZPUk0uRklFTEQuVklFV19GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgJ2ZpbGUtJyArIGZpbGUuaWQgKyAnLWRvd25sb2FkLWZpbGUnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGUuaXNFeHRlcm5hbCB8fCAhZmlsZS5taW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29udGVudChmaWxlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdGT1JNLkZJRUxELkRPV05MT0FEX0ZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmllbGQucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZS0nICsgZmlsZS5pZCArICctcmVtb3ZlJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUF0dGFjaEZpbGUoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25SZW1vdmVBdHRhY2hGaWxlKGZpbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC0yNFwiPmhpZ2hsaWdodF9vZmY8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnRk9STS5GSUVMRC5SRU1PVkVfRklMRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPC9tYXQtbGlzdD5cbjwvZGl2PlxuXG48ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiPjwvZXJyb3Itd2lkZ2V0PlxuPGVycm9yLXdpZGdldCAqbmdJZj1cIiFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpICYmICFpc1NlbGVjdGVkKClcIiByZXF1aXJlZD1cInt7ICdGT1JNLkZJRUxELlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVwiPjwvZXJyb3Itd2lkZ2V0PlxuIl19
264
+ }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i1.ThumbnailService }, { type: i2.ProcessContentService }, { type: i3.ActivitiContentService }, { type: i4.ContentService }, { type: i4.ContentNodeDialogService }, { type: i1.AppConfigService }, { type: i1.DownloadService }, { type: i5.Router }, { type: i5.ActivatedRoute }, { type: i6.AttachFileWidgetDialogService }]; } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLWZpbGUtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvZm9ybS93aWRnZXRzL2NvbnRlbnQtd2lkZ2V0L2F0dGFjaC1maWxlLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL2Zvcm0vd2lkZ2V0cy9jb250ZW50LXdpZGdldC9hdHRhY2gtZmlsZS13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakgsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBOEJ6RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEscUJBQXFCO0lBTWhFLFlBQ1csV0FBd0IsRUFDeEIsVUFBNEIsRUFDNUIscUJBQTRDLEVBQzNDLHNCQUE4QyxFQUM5QyxjQUE4QixFQUM5QixhQUF1QyxFQUN2QyxnQkFBa0MsRUFDbEMsZUFBZ0MsRUFDaEMsTUFBYyxFQUNkLGNBQThCLEVBQzlCLG1CQUFrRDtRQUUxRCxLQUFLLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBWi9DLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtRQWhCOUQsV0FBTSxHQUFHLDJCQUEyQixDQUFDO1FBQ3JDLG1CQUFjLEdBQXFDLEVBQUUsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQWdCNUMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDekUsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2hGLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQzNDLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDdEcsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEtBQUssa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDdEcsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEtBQUssWUFBWSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNoSCxDQUFDO0lBRUQscUJBQXFCO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDMUUsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBdUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUF1QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsOEJBQThCO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUYsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pGO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtnQkFDeEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FDakIsVUFBVSxFQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDckQsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQXlDO1FBQ3hELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBRSxJQUFxQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUztRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDM0MsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUF3QztRQUNwRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxRQUFRLEdBQUksSUFBcUMsQ0FBQyxXQUFXLENBQUM7WUFDcEUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxRDtpQkFBTTtnQkFDSCxNQUFNLFlBQVksR0FBeUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEQ7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDbEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEQ7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQzNELENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxDQUFDLEVBQ0QsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUNYLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUEwQztRQUN2RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMscUNBQXFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUU7Z0JBQ3hGLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxVQUFVLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDO2lCQUM3RjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQTBDO1FBQzdELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM5RixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sb0JBQW9CLEtBQUssY0FBYyxDQUFDO0lBQ25ELENBQUM7SUFFTyxVQUFVLENBQUMsZ0JBQXdCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixLQUFLLFlBQVksVUFBVSxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsVUFBMEMsRUFBRSxlQUF3QjtRQUNqRyxNQUFNLGlCQUFpQixHQUFHLFlBQVksVUFBVSxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDakYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxZQUFvQixFQUFFLFNBQWlCLEVBQUUsTUFBZTtRQUM3RSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFdEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUNiLElBQUksQ0FDRCxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNkLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDbkksQ0FDSjthQUNBLFNBQVMsQ0FDTixDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFO1lBQzVCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUM7WUFDL0IsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLEVBQ0QsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNSLEdBQUcsRUFBRTtZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FDSixDQUFDO0lBQ1YsQ0FBQztJQUdPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDaEIsRUFBRSxFQUNGO1lBQ0ksVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQy9CLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekUsbUJBQW1CLEVBQUUsT0FBTztTQUMvQixDQUNKLENBQUM7SUFDTixDQUFDO0lBRU8sYUFBYSxDQUFDLFVBQWtCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN2RixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDOzt1SEEzT1EseUJBQXlCOzJHQUF6Qix5QkFBeUIsMldDakV0QyxtOUxBc0hBLDJvQkQ3RVEsWUFBWSwrUEFDWixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsZUFBZSxvcEJBQ2YsYUFBYSxrWkFDYixhQUFhLDRiQUNiLG9CQUFvQix3RkFDcEIscUJBQXFCOzRGQWlCaEIseUJBQXlCO2tCQTVCckMsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN4QixRQUdLO3dCQUNGLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBpc0Rldk1vZGUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgQXBwQ29uZmlnVmFsdWVzLCBEb3dubG9hZFNlcnZpY2UsIEVycm9yV2lkZ2V0Q29tcG9uZW50LCBGb3JtU2VydmljZSwgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBbGZyZXNjb0ljb25Db21wb25lbnQsIENvbnRlbnROb2RlRGlhbG9nU2VydmljZSwgQ29udGVudFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQWxmcmVzY29FbmRwb2ludFJlcHJlc2VudGF0aW9uLCBOb2RlLCBOb2RlQ2hpbGRBc3NvY2lhdGlvbiwgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgZnJvbSwgb2YsIFN1YmplY3QsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF0dGFjaEZpbGVXaWRnZXREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9hdHRhY2gtZmlsZS13aWRnZXQtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC53aWRnZXQnO1xuaW1wb3J0IHsgUHJvY2Vzc0NvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvY2Vzcy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZpdGlDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGl2aXRpLWFsZnJlc2NvLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F0dGFjaC13aWRnZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBNYXRMaXN0TW9kdWxlLFxuICAgICAgICBFcnJvcldpZGdldENvbXBvbmVudCxcbiAgICAgICAgQWxmcmVzY29JY29uQ29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNoLWZpbGUtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdHRhY2gtZmlsZS13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2hGaWxlV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHR5cGVJZCA9ICdBdHRhY2hGaWxlV2lkZ2V0Q29tcG9uZW50JztcbiAgICByZXBvc2l0b3J5TGlzdDogQWxmcmVzY29FbmRwb2ludFJlcHJlc2VudGF0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIHRlbXBGaWxlc0xpc3QgPSBbXTtcbiAgICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0aHVtYm5haWxzOiBUaHVtYm5haWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcHJvY2Vzc0NvbnRlbnRTZXJ2aWNlOiBQcm9jZXNzQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWN0aXZpdGlDb250ZW50U2VydmljZTogQWN0aXZpdGlDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudERpYWxvZzogQ29udGVudE5vZGVEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGF0dGFjaERpYWxvZ1NlcnZpY2U6IEF0dGFjaEZpbGVXaWRnZXREaWFsb2dTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlLCB0aHVtYm5haWxzLCBwcm9jZXNzQ29udGVudFNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGQudmFsdWUpICYmIHRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBGaWxlc0xpc3QucHVzaCguLi50aGlzLmZpZWxkLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5nZXRBbGZyZXNjb1JlcG9zaXRvcmllcygpLnN1YnNjcmliZSgocmVwb0xpc3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVwb3NpdG9yeUxpc3QgPSByZXBvTGlzdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS50YXNrU2F2ZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChmb3JtU2F2ZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtU2F2ZWQuZm9ybS5pZCA9PT0gdGhpcy5maWVsZC5mb3JtLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgaXNGaWxlU291cmNlQ29uZmlndXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U7XG4gICAgfVxuXG4gICAgaXNNdWx0aXBsZVNvdXJjZVVwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZpZWxkLnJlYWRPbmx5ICYmIHRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpICYmICF0aGlzLmlzT25seUxvY2FsU291cmNlU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBpc0FsbEZpbGVTb3VyY2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQucGFyYW1zPy5maWxlU291cmNlPy5zZXJ2aWNlSWQgPT09ICdhbGwtZmlsZS1zb3VyY2VzJyAmJiAhdGhpcy5maWVsZC5wYXJhbXMubGluaztcbiAgICB9XG5cbiAgICBpc09ubHlMb2NhbFNvdXJjZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U/LnNlcnZpY2VJZCA9PT0gJ2xvY2FsLWZpbGUnO1xuICAgIH1cblxuICAgIGlzU2ltcGxlVXBsb2FkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuaXNVcGxvYWRCdXR0b25WaXNpYmxlKCkgJiYgIXRoaXMuaXNGaWxlU291cmNlQ29uZmlndXJlZCgpKSB8fCB0aGlzLmlzT25seUxvY2FsU291cmNlU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBpc1VwbG9hZEJ1dHRvblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuaGFzRmlsZSB8fCB0aGlzLm11bHRpcGxlT3B0aW9uKSAmJiAhdGhpcy5maWVsZC5yZWFkT25seTtcbiAgICB9XG5cbiAgICBpc0RlZmluZWRTb3VyY2VGb2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmllbGQucGFyYW1zPy5maWxlU291cmNlPy5zZWxlY3RlZEZvbGRlcjtcbiAgICB9XG5cbiAgICBpc1RlbXBvcmFyeUZpbGUoZmlsZTogeyBuYW1lPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcEZpbGVzTGlzdC5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0ubmFtZSA9PT0gZmlsZS5uYW1lKSA+PSAwO1xuICAgIH1cblxuICAgIGdldE5vZGVGcm9tVGVtcEZpbGUoZmlsZTogeyBuYW1lPzogc3RyaW5nIH0pOiBOb2RlQ2hpbGRBc3NvY2lhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBGaWxlc0xpc3QuZmluZCgoZWxlbSkgPT4gZWxlbS5uYW1lID09PSBmaWxlLm5hbWUpO1xuICAgIH1cblxuICAgIG9wZW5TZWxlY3REaWFsb2dGcm9tRmlsZVNvdXJjZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5maWVsZC5wYXJhbXM7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnJlcG9zaXRvcnlMaXN0LmZpbmQoKHJlcG8pID0+IHJlcG8ubmFtZSA9PT0gcGFyYW1zPy5maWxlU291cmNlPy5uYW1lKTtcbiAgICAgICAgaWYgKHJlcG9zaXRvcnkgJiYgdGhpcy5pc0V4dGVybmFsSG9zdChyZXBvc2l0b3J5KSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlRnJvbUV4dGVybmFsQ1MocmVwb3NpdG9yeSwgcGFyYW1zPy5maWxlU291cmNlPy5zZWxlY3RlZEZvbGRlcj8ucGF0aElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudERpYWxvZy5vcGVuRmlsZUJyb3dzZURpYWxvZ0J5Rm9sZGVySWQocGFyYW1zLmZpbGVTb3VyY2Uuc2VsZWN0ZWRGb2xkZXIucGF0aElkKS5zdWJzY3JpYmUoKHNlbGVjdGlvbnM6IE5vZGVbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcEZpbGVzTGlzdC5wdXNoKC4uLnNlbGVjdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTm9kZXNQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVGcm9tQ1MoXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucGFyYW1zLmZpbGVTb3VyY2Uuc2VsZWN0ZWRGb2xkZXIuYWNjb3VudElkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnBhcmFtcy5maWxlU291cmNlLnNlbGVjdGVkRm9sZGVyLnNpdGVJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXR0YWNoRmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLnRlbXBGaWxlc0xpc3QucHVzaCguLi5BcnJheS5mcm9tKGV2ZW50LnRhcmdldC5maWxlcykpO1xuICAgICAgICB0aGlzLm9uRmlsZUNoYW5nZWQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlQXR0YWNoRmlsZShmaWxlOiBGaWxlIHwgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5pc1RlbXBvcmFyeUZpbGUoZmlsZSkpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcEZpbGVzTGlzdC5zcGxpY2UodGhpcy50ZW1wRmlsZXNMaXN0LmluZGV4T2YoKGZpbGUgYXMgUmVsYXRlZENvbnRlbnRSZXByZXNlbnRhdGlvbikuY29udGVudEJsb2IpLCAxKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTm9kZXNQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgfVxuXG4gICAgb25BdHRhY2hGaWxlQ2xpY2tlZChmaWxlOiBhbnkpIHtcbiAgICAgICAgaWYgKGZpbGUuaXNFeHRlcm5hbCB8fCAhZmlsZS5jb250ZW50QXZhaWxhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNUZW1wb3JhcnlGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1Db250ZW50Q2xpY2tlZC5uZXh0KGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlQ2xpY2tlZChmaWxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvd25sb2FkQ29udGVudChmaWxlOiBhbnkgfCBSZWxhdGVkQ29udGVudFJlcHJlc2VudGF0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcG9yYXJ5RmlsZShmaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZUJsb2IgPSAoZmlsZSBhcyBSZWxhdGVkQ29udGVudFJlcHJlc2VudGF0aW9uKS5jb250ZW50QmxvYjtcbiAgICAgICAgICAgIGlmIChmaWxlQmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkQmxvYihmaWxlQmxvYiwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZVVwbG9hZGVkOiBOb2RlQ2hpbGRBc3NvY2lhdGlvbiA9IHRoaXMuZ2V0Tm9kZUZyb21UZW1wRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlVXJsID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRDb250ZW50VXJsKG5vZGVVcGxvYWRlZC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRVcmwobm9kZVVybCwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZS5zb3VyY2VJZCkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlSG9zdCA9IHRoaXMuZmluZFNvdXJjZShmaWxlLnNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoc291cmNlSG9zdCAmJiB0aGlzLmlzRXh0ZXJuYWxIb3N0KHNvdXJjZUhvc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRhY2hEaWFsb2dTZXJ2aWNlLmRvd25sb2FkVVJMKHNvdXJjZUhvc3QsIGZpbGUuc291cmNlSWQpLnN1YnNjcmliZSgobm9kZVVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZFVybChub2RlVXJsLCBmaWxlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlVXJsID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRDb250ZW50VXJsKGZpbGUuc291cmNlSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkVXJsKG5vZGVVcmwsIGZpbGUubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5nZXRGaWxlUmF3Q29udGVudChmaWxlLmlkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRCbG9iKGJsb2IsIGZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5TZWxlY3REaWFsb2cocmVwb3NpdG9yeTogQWxmcmVzY29FbmRwb2ludFJlcHJlc2VudGF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRXh0ZXJuYWxIb3N0KHJlcG9zaXRvcnkpICYmICFpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlRnJvbUV4dGVybmFsQ1MocmVwb3NpdG9yeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnREaWFsb2cub3BlbkZpbGVCcm93c2VEaWFsb2dCeURlZmF1bHRMb2NhdGlvbigpLnN1YnNjcmliZSgoc2VsZWN0aW9uczogTm9kZVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcEZpbGVzTGlzdC5wdXNoKC4uLnNlbGVjdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5vZGVzUGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUZyb21DUyhzZWxlY3Rpb25zLCBgYWxmcmVzY28tJHtyZXBvc2l0b3J5LmlkfS0ke3JlcG9zaXRvcnkubmFtZX1BbGZyZXNjb2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRmlsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxIb3N0KHJlcG9zaXRvcnk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RUNNSG9zdCA9IHRoaXMuZ2V0RG9tYWluSG9zdCh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KEFwcENvbmZpZ1ZhbHVlcy5FQ01IT1NUKSk7XG4gICAgICAgIGNvbnN0IGNob3NlblJlcG9zaXRvcnlIb3N0ID0gdGhpcy5nZXREb21haW5Ib3N0KHJlcG9zaXRvcnkucmVwb3NpdG9yeVVybCk7XG4gICAgICAgIHJldHVybiBjaG9zZW5SZXBvc2l0b3J5SG9zdCAhPT0gY3VycmVudEVDTUhvc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kU291cmNlKHNvdXJjZUlkZW50aWZpZXI6IHN0cmluZyk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnlMaXN0LmZpbmQoKHJlcG9zaXRvcnkpID0+IHNvdXJjZUlkZW50aWZpZXIgPT09IGBhbGZyZXNjby0ke3JlcG9zaXRvcnkuaWR9LSR7cmVwb3NpdG9yeS5uYW1lfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkRmlsZUZyb21FeHRlcm5hbENTKHJlcG9zaXRvcnk6IEFsZnJlc2NvRW5kcG9pbnRSZXByZXNlbnRhdGlvbiwgY3VycmVudEZvbGRlcklkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZGVudGlmaWVyID0gYGFsZnJlc2NvLSR7cmVwb3NpdG9yeS5pZH0tJHtyZXBvc2l0b3J5Lm5hbWV9QWxmcmVzY29gO1xuICAgICAgICB0aGlzLmF0dGFjaERpYWxvZ1NlcnZpY2Uub3BlbkxvZ2luKHJlcG9zaXRvcnksIGN1cnJlbnRGb2xkZXJJZCwgYWNjb3VudElkZW50aWZpZXIpLnN1YnNjcmliZSgoc2VsZWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgc2VsZWN0aW9ucy5mb3JFYWNoKChub2RlKSA9PiAobm9kZVsnaXNFeHRlcm5hbCddID0gdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy50ZW1wRmlsZXNMaXN0LnB1c2goLi4uc2VsZWN0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVGcm9tQ1Moc2VsZWN0aW9ucywgYWNjb3VudElkZW50aWZpZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZEZpbGVGcm9tQ1MoZmlsZU5vZGVMaXN0OiBOb2RlW10sIGFjY291bnRJZDogc3RyaW5nLCBzaXRlSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsZXNTYXZlZCA9IFtdO1xuXG4gICAgICAgIGZpbGVOb2RlTGlzdC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLmlzTGluayA9IHRoaXMuZmllbGQucGFyYW1zLmxpbms7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZyb20oZmlsZU5vZGVMaXN0KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKG5vZGUpID0+XG4gICAgICAgICAgICAgICAgICAgIHppcChvZihub2RlPy5jb250ZW50Py5taW1lVHlwZSksIHRoaXMuYWN0aXZpdGlDb250ZW50U2VydmljZS5hcHBseUFsZnJlc2NvTm9kZShub2RlLCBzaXRlSWQsIGFjY291bnRJZCksIG9mKG5vZGVbJ2lzRXh0ZXJuYWwnXSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoW21pbWVUeXBlLCByZXMsIGlzRXh0ZXJuYWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICAgICAgICAgICAgICByZXNbJ2lzRXh0ZXJuYWwnXSA9IGlzRXh0ZXJuYWw7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzU2F2ZWQucHVzaChyZXMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0ZpbGVzID0gdGhpcy5maWVsZC52YWx1ZSA/IHRoaXMuZmllbGQudmFsdWUgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSA9IFsuLi5wcmV2aW91c0ZpbGVzLCAuLi5maWxlc1NhdmVkXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5qc29uLnZhbHVlID0gWy4uLnByZXZpb3VzRmlsZXMsIC4uLmZpbGVzU2F2ZWRdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHVwZGF0ZU5vZGVzUGFyYW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgbm9kZXM6IHRoaXMudGVtcEZpbGVzTGlzdC5tYXAoZmlsZSA9PiBmaWxlLmlkKS5qb2luKCcsJykgfSxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREb21haW5Ib3N0KHVybFRvQ2hlY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVybFRvQ2hlY2subWF0Y2goJ14oPzpodHRwcz86Ly8pPyg/OlteQC9cXG5dK0ApPyg/Ond3d1xcXFwuKT8oW146Lz9cXG5dKyknKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFsxXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXQge3sgZmllbGQuY2xhc3NOYW1lIH19XCIgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiXG4gICAgICAgID57eyBmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4qPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGlkPVwiYWRmLWF0dGFjaC13aWRnZXQtc2ltcGxlLXVwbG9hZFwiICpuZ0lmPVwiaXNTaW1wbGVVcGxvYWRCdXR0b24oKSAmJiBpc1VwbG9hZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICAgICAgPGEgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAge3sgJ0ZPUk0uRklFTEQuVVBMT0FEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0ICN1cGxvYWRGaWxlcyBbbXVsdGlwbGVdPVwibXVsdGlwbGVPcHRpb25cIiB0eXBlPVwiZmlsZVwiIFtpZF09XCJmaWVsZC5pZFwiIChjaGFuZ2UpPVwib25BdHRhY2hGaWxlQ2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtYXR0YWNoLXdpZGdldF9fbWVudS11cGxvYWRcIiAoZm9jdXNvdXQpPVwibWFya0FzVG91Y2hlZCgpXCIgKm5nSWY9XCJpc1VwbG9hZEJ1dHRvblZpc2libGUoKSAmJiBpc011bHRpcGxlU291cmNlVXBsb2FkKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbaWRdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXR0YWNoX2ZpbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZJRUxELlVQTE9BRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXRfX21lbnUtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidXBsb2FkRmlsZS5jbGljaygpXCIgaWQ9XCJhdHRhY2gtbG9jYWwtZmlsZVwiICpuZ0lmPVwiaXNBbGxGaWxlU291cmNlU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GSUVMRC5MT0NBTFNUT1JBR0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgI3VwbG9hZEZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWF0dGFjaC13aWRnZXRfX2lucHV0LXR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlT3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQXR0YWNoRmlsZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNEZWZpbmVkU291cmNlRm9sZGVyKClcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImF0dGFjaC17eyBmaWVsZC5wYXJhbXM/LmZpbGVTb3VyY2U/Lm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdERpYWxvZ0Zyb21GaWxlU291cmNlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1hbGZyZXNjby1pY29uPjwvYWRmLWFsZnJlc2NvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLnBhcmFtcz8uZmlsZVNvdXJjZT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEZWZpbmVkU291cmNlRm9sZGVyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCByZXBvIG9mIHJlcG9zaXRvcnlMaXN0XCIgaWQ9XCJhdHRhY2gte3sgcmVwbz8ubmFtZSB9fVwiIChjbGljayk9XCJvcGVuU2VsZWN0RGlhbG9nKHJlcG8pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1hbGZyZXNjby1pY29uPjwvYWRmLWFsZnJlc2NvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVwby5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtYXR0YWNoLXdpZGdldC1yZWFkb25seS1saXN0XCI+XG4gICAgPG1hdC1saXN0ICpuZ0lmPVwiaGFzRmlsZVwiPlxuICAgICAgICA8bWF0LWxpc3QtaXRlbSBjbGFzcz1cImFkZi1hdHRhY2gtZmlsZXMtcm93XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmllbGQudmFsdWU7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZS0nK2ZpbGUuaWQrJy1pY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImZpbGUuY29udGVudCA/IGdldEljb24oZmlsZS5jb250ZW50Lm1pbWVUeXBlKSA6IGdldEljb24oZmlsZS5taW1lVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJtaW1lVHlwZUljb25cIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImlcIi8+XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8ZGl2IG1hdExpc3RJdGVtTGluZSBjbGFzcz1cImFkZi1hdHRhY2gtd2lkZ2V0X19sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwie3snZmlsZS0nK2ZpbGUuaWR9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXR0YWNoRmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaVwiIGNsYXNzPVwiYWRmLWZpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tmaWxlLm5hbWV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwie3snZmlsZS0nK2ZpbGUuaWQrJy1vcHRpb24tbWVudSd9fVwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsZUFjdGlvbk1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1BST0NFU1NfTElTVC5ERVRBSUxTLkJVVFRPTi5GSUxFX09QVElPTl9NRU5VJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1tZW51ICNmaWxlQWN0aW9uTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgJ2ZpbGUtJyArIGZpbGUuaWQgKyAnLXNob3ctZmlsZScgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsZS5pc0V4dGVybmFsIHx8ICFmaWxlLmNvbnRlbnRBdmFpbGFibGUgfHwgIWZpbGUubWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkF0dGFjaEZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0ZPUk0uRklFTEQuVklFV19GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwie3sgJ2ZpbGUtJyArIGZpbGUuaWQgKyAnLWRvd25sb2FkLWZpbGUnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGUuaXNFeHRlcm5hbCB8fCAhZmlsZS5taW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29udGVudChmaWxlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdGT1JNLkZJRUxELkRPV05MT0FEX0ZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmllbGQucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZS0nICsgZmlsZS5pZCArICctcmVtb3ZlJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUF0dGFjaEZpbGUoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25SZW1vdmVBdHRhY2hGaWxlKGZpbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC0yNFwiPmhpZ2hsaWdodF9vZmY8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnRk9STS5GSUVMRC5SRU1PVkVfRklMRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPC9tYXQtbGlzdD5cbjwvZGl2PlxuXG48ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiPjwvZXJyb3Itd2lkZ2V0PlxuPGVycm9yLXdpZGdldCAqbmdJZj1cIiFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpICYmICFpc1NlbGVjdGVkKClcIiByZXF1aXJlZD1cInt7ICdGT1JNLkZJRUxELlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVwiPjwvZXJyb3Itd2lkZ2V0PlxuIl19
@@ -55,7 +55,7 @@ export class UploadWidgetComponent extends WidgetComponent {
55
55
  onFileChanged(event) {
56
56
  const files = event.target.files;
57
57
  let filesSaved = [];
58
- if (this.field.json.value) {
58
+ if (this.field?.json.value) {
59
59
  filesSaved = [...this.field.json.value];
60
60
  }
61
61
  if (files && files.length > 0) {
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
126
126
  type: ViewChild,
127
127
  args: ['uploadFiles']
128
128
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvZm9ybS93aWRnZXRzL3VwbG9hZC91cGxvYWQud2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9mb3JtL3dpZGdldHMvdXBsb2FkL3VwbG9hZC53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQXFCdkQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFTdEQsWUFBbUIsV0FBd0IsRUFBVSxnQkFBa0Ms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QUUsZUFBZSwyRkFBRSxhQUFhLHVXQUFFLGVBQWUsd2FBQUUsYUFBYSxvTEFBRSxvQkFBb0I7NEZBZ0JuRyxxQkFBcUI7a0JBbkJqQyxTQUFTOytCQUNJLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDLFFBR3ZHO3dCQUNGLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7cUtBU3JDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IFRodW1ibmFpbFNlcnZpY2UsIEZvcm1TZXJ2aWNlLCBDb250ZW50TGlua01vZGVsLCBXaWRnZXRDb21wb25lbnQsIEVycm9yV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9jZXNzQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBtZXJnZU1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1cGxvYWQtd2lkZ2V0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBFcnJvcldpZGdldENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC53aWRnZXQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLndpZGdldC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGludmFsaWQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKHNlbGVjdCknOiAnZXZlbnQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBoYXNGaWxlOiBib29sZWFuO1xuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmc7XG4gICAgbXVsdGlwbGVPcHRpb246IHN0cmluZyA9ICcnO1xuICAgIG1pbWVUeXBlSWNvbjogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgndXBsb2FkRmlsZXMnKVxuICAgIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSwgcHVibGljIHByb2Nlc3NDb250ZW50U2VydmljZTogUHJvY2Vzc0NvbnRlbnRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQ/LnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0TXVsdGlwbGVGaWxlUGFyYW0oKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKGZpbGU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbGVtZW50RnJvbUxpc3QoZmlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgICAgIGxldCBmaWxlc1NhdmVkID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuZmllbGQuanNvbi52YWx1ZSkge1xuICAgICAgICAgICAgZmlsZXNTYXZlZCA9IFsuLi50aGlzLmZpZWxkLmpzb24udmFsdWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZyb20oZmlsZXMpXG4gICAgICAgICAgICAgICAgLnBpcGUobWVyZ2VNYXAoKGZpbGUpID0+IHRoaXMudXBsb2FkUmF3Q29udGVudChmaWxlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKHJlcykgPT4gZmlsZXNTYXZlZC5wdXNoKHJlcyksXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnZhbHVlID0gZmlsZXNTYXZlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuanNvbi52YWx1ZSA9IGZpbGVzU2F2ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkUmF3Q29udGVudChmaWxlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLmNyZWF0ZVRlbXBvcmFyeVJhd1JlbGF0ZWRDb250ZW50KGZpbGUpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5jb250ZW50QmxvYiA9IGZpbGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRNdWx0aXBsZUZpbGVQYXJhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQ/LnBhcmFtcz8ubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlwbGVPcHRpb24gPSB0aGlzLmZpZWxkLnBhcmFtcy5tdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRWxlbWVudEZyb21MaXN0KGZpbGU6IGFueSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmllbGQudmFsdWUuaW5kZXhPZihmaWxlKTtcblxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLmpzb24udmFsdWUgPSB0aGlzLmZpZWxkLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5maWVsZC51cGRhdGVGb3JtKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0aGlzLmZpZWxkLnZhbHVlLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgaWYgKCF0aGlzLmhhc0ZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5maWVsZC5qc29uLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEljb24obWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG1pbWVUeXBlKTtcbiAgICB9XG5cbiAgICBmaWxlQ2xpY2tlZChjb250ZW50TGlua01vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBDb250ZW50TGlua01vZGVsKGNvbnRlbnRMaW5rTW9kZWwpO1xuICAgICAgICBsZXQgZmV0Y2ggPSB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5nZXRDb250ZW50UHJldmlldyhmaWxlLmlkKTtcbiAgICAgICAgaWYgKGZpbGUuaXNUeXBlSW1hZ2UoKSB8fCBmaWxlLmlzVHlwZVBkZigpKSB7XG4gICAgICAgICAgICBmZXRjaCA9IHRoaXMucHJvY2Vzc0NvbnRlbnRTZXJ2aWNlLmdldEZpbGVSYXdDb250ZW50KGZpbGUuaWQpO1xuICAgICAgICB9XG4gICAgICAgIGZldGNoLnN1YnNjcmliZSgoYmxvYjogQmxvYikgPT4ge1xuICAgICAgICAgICAgZmlsZS5jb250ZW50QmxvYiA9IGJsb2I7XG4gICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZvcm1Db250ZW50Q2xpY2tlZC5uZXh0KGZpbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXVwbG9hZC13aWRnZXQge3tmaWVsZC5jbGFzc05hbWV9fVwiIFtjbGFzcy5hZGYtaW52YWxpZF09XCIhZmllbGQuaXNWYWxpZFwiIFtjbGFzcy5hZGYtcmVhZG9ubHldPVwiZmllbGQucmVhZE9ubHlcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhZGYtbGFiZWxcIiBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIj57e2ZpZWxkLm5hbWUgfCB0cmFuc2xhdGUgfX08c3BhbiBjbGFzcz1cImFkZi1hc3Rlcmlza1wiICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdXBsb2FkLXdpZGdldC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtYXQtbGlzdCAqbmdJZj1cImhhc0ZpbGVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBjbGFzcz1cImFkZi11cGxvYWQtZmlsZXMtcm93XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmllbGQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBtYXRMaXN0SXRlbUxpbmUgY2xhc3M9XCJhZGYtdXBsb2FkLXdpZGdldF9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmaWxlLScrZmlsZS5pZCsnLWljb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImdldEljb24oZmlsZS5taW1lVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwibWltZVR5cGVJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJmaWxlQ2xpY2tlZChmaWxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCIvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmUgaWQ9XCJ7eydmaWxlLScrZmlsZS5pZH19XCIgKGNsaWNrKT1cImZpbGVDbGlja2VkKGZpbGUpXCIgKGtleXVwLmVudGVyKT1cImZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYWRmLWZpbGVcIj57e2ZpbGUubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZpZWxkLnJlYWRPbmx5XCIgbWF0LWljb24tYnV0dG9uIFtpZF09XCInZmlsZS0nK2ZpbGUuaWQrJy1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShmaWxlKTtcIiAoa2V5dXAuZW50ZXIpPVwicmVtb3ZlRmlsZShmaWxlKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC0yNFwiPmhpZ2hsaWdodF9vZmY8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L21hdC1saXN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKCFoYXNGaWxlIHx8IG11bHRpcGxlT3B0aW9uKSAmJiAhZmllbGQucmVhZE9ubHlcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInVwbG9hZEZpbGVzLmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnRk9STS5GSUVMRC5VUExPQUQnIHwgdHJhbnNsYXRlIH19PG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI3VwbG9hZEZpbGVzIFttdWx0aXBsZV09XCJtdWx0aXBsZU9wdGlvblwiIHR5cGU9XCJmaWxlXCIgW2lkXT1cImZpZWxkLmlkXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxlcnJvci13aWRnZXQgW2Vycm9yXT1cImZpZWxkLnZhbGlkYXRpb25TdW1tYXJ5XCI+PC9lcnJvci13aWRnZXQ+XG4gICAgPGVycm9yLXdpZGdldCAqbmdJZj1cImlzSW52YWxpZEZpZWxkUmVxdWlyZWQoKVwiIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XCI+PC9lcnJvci13aWRnZXQ+XG48L2Rpdj5cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvZm9ybS93aWRnZXRzL3VwbG9hZC91cGxvYWQud2lkZ2V0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMvc3JjL2xpYi9mb3JtL3dpZGdldHMvdXBsb2FkL3VwbG9hZC53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQXFCdkQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFTdEQsWUFBbUIsV0FBd0IsRUFBVSxnQkFBa0Ms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QUUsZUFBZSwyRkFBRSxhQUFhLHVXQUFFLGVBQWUsd2FBQUUsYUFBYSxvTEFBRSxvQkFBb0I7NEZBZ0JuRyxxQkFBcUI7a0JBbkJqQyxTQUFTOytCQUNJLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDLFFBR3ZHO3dCQUNGLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7cUtBU3JDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IFRodW1ibmFpbFNlcnZpY2UsIEZvcm1TZXJ2aWNlLCBDb250ZW50TGlua01vZGVsLCBXaWRnZXRDb21wb25lbnQsIEVycm9yV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9jZXNzQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBtZXJnZU1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1cGxvYWQtd2lkZ2V0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBFcnJvcldpZGdldENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC53aWRnZXQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLndpZGdldC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW5wdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGludmFsaWQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKHNlbGVjdCknOiAnZXZlbnQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBoYXNGaWxlOiBib29sZWFuO1xuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmc7XG4gICAgbXVsdGlwbGVPcHRpb246IHN0cmluZyA9ICcnO1xuICAgIG1pbWVUeXBlSWNvbjogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgndXBsb2FkRmlsZXMnKVxuICAgIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSwgcHVibGljIHByb2Nlc3NDb250ZW50U2VydmljZTogUHJvY2Vzc0NvbnRlbnRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQ/LnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0ZpbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0TXVsdGlwbGVGaWxlUGFyYW0oKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKGZpbGU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbGVtZW50RnJvbUxpc3QoZmlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgICAgIGxldCBmaWxlc1NhdmVkID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuZmllbGQ/Lmpzb24udmFsdWUpIHtcbiAgICAgICAgICAgIGZpbGVzU2F2ZWQgPSBbLi4udGhpcy5maWVsZC5qc29uLnZhbHVlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmcm9tKGZpbGVzKVxuICAgICAgICAgICAgICAgIC5waXBlKG1lcmdlTWFwKChmaWxlKSA9PiB0aGlzLnVwbG9hZFJhd0NvbnRlbnQoZmlsZSkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChyZXMpID0+IGZpbGVzU2F2ZWQucHVzaChyZXMpLFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSA9IGZpbGVzU2F2ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmpzb24udmFsdWUgPSBmaWxlc1NhdmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGaWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZFJhd0NvbnRlbnQoZmlsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5jcmVhdGVUZW1wb3JhcnlSYXdSZWxhdGVkQ29udGVudChmaWxlKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuY29udGVudEJsb2IgPSBmaWxlO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TXVsdGlwbGVGaWxlUGFyYW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkPy5wYXJhbXM/Lm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpcGxlT3B0aW9uID0gdGhpcy5maWVsZC5wYXJhbXMubXVsdGlwbGUgPyAnbXVsdGlwbGUnIDogJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUVsZW1lbnRGcm9tTGlzdChmaWxlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkLnZhbHVlLmluZGV4T2YoZmlsZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC5qc29uLnZhbHVlID0gdGhpcy5maWVsZC52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudXBkYXRlRm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYXNGaWxlID0gdGhpcy5maWVsZC52YWx1ZS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmICghdGhpcy5oYXNGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZmllbGQuanNvbi52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJY29uKG1pbWVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihtaW1lVHlwZSk7XG4gICAgfVxuXG4gICAgZmlsZUNsaWNrZWQoY29udGVudExpbmtNb2RlbDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQ29udGVudExpbmtNb2RlbChjb250ZW50TGlua01vZGVsKTtcbiAgICAgICAgbGV0IGZldGNoID0gdGhpcy5wcm9jZXNzQ29udGVudFNlcnZpY2UuZ2V0Q29udGVudFByZXZpZXcoZmlsZS5pZCk7XG4gICAgICAgIGlmIChmaWxlLmlzVHlwZUltYWdlKCkgfHwgZmlsZS5pc1R5cGVQZGYoKSkge1xuICAgICAgICAgICAgZmV0Y2ggPSB0aGlzLnByb2Nlc3NDb250ZW50U2VydmljZS5nZXRGaWxlUmF3Q29udGVudChmaWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgICBmZXRjaC5zdWJzY3JpYmUoKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgIGZpbGUuY29udGVudEJsb2IgPSBibG9iO1xuICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtQ29udGVudENsaWNrZWQubmV4dChmaWxlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi11cGxvYWQtd2lkZ2V0IHt7ZmllbGQuY2xhc3NOYW1lfX1cIiBbY2xhc3MuYWRmLWludmFsaWRdPVwiIWZpZWxkLmlzVmFsaWRcIiBbY2xhc3MuYWRmLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRPbmx5XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYWRmLWxhYmVsXCIgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+e3tmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19PHNwYW4gY2xhc3M9XCJhZGYtYXN0ZXJpc2tcIiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXVwbG9hZC13aWRnZXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bWF0LWxpc3QgKm5nSWY9XCJoYXNGaWxlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJhZGYtdXBsb2FkLWZpbGVzLXJvd1wiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgbWF0TGlzdEl0ZW1MaW5lIGNsYXNzPVwiYWRmLXVwbG9hZC13aWRnZXRfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZS0nK2ZpbGUuaWQrJy1pY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRJY29uKGZpbGUubWltZVR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIm1pbWVUeXBlSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVDbGlja2VkKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZmlsZUNsaWNrZWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1MaW5lIGlkPVwie3snZmlsZS0nK2ZpbGUuaWR9fVwiIChjbGljayk9XCJmaWxlQ2xpY2tlZChmaWxlKVwiIChrZXl1cC5lbnRlcik9XCJmaWxlQ2xpY2tlZChmaWxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImFkZi1maWxlXCI+e3tmaWxlLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFmaWVsZC5yZWFkT25seVwiIG1hdC1pY29uLWJ1dHRvbiBbaWRdPVwiJ2ZpbGUtJytmaWxlLmlkKyctcmVtb3ZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoZmlsZSk7XCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUZpbGUoZmlsZSk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtMjRcIj5oaWdobGlnaHRfb2ZmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIighaGFzRmlsZSB8fCBtdWx0aXBsZU9wdGlvbikgJiYgIWZpZWxkLnJlYWRPbmx5XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGxvYWRGaWxlcy5jbGljaygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0ZPUk0uRklFTEQuVVBMT0FEJyB8IHRyYW5zbGF0ZSB9fTxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0ICN1cGxvYWRGaWxlcyBbbXVsdGlwbGVdPVwibXVsdGlwbGVPcHRpb25cIiB0eXBlPVwiZmlsZVwiIFtpZF09XCJmaWVsZC5pZFwiIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiPjwvZXJyb3Itd2lkZ2V0PlxuICAgIDxlcnJvci13aWRnZXQgKm5nSWY9XCJpc0ludmFsaWRGaWVsZFJlcXVpcmVkKClcIiByZXF1aXJlZD1cInt7ICdGT1JNLkZJRUxELlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVwiPjwvZXJyb3Itd2lkZ2V0PlxuPC9kaXY+XG4iXX0=