@eqproject/eqp-dynamic-module 1.1.7 → 1.1.8

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.
@@ -17,7 +17,7 @@ export class EqpDynamicModuleComponent {
17
17
  this.utilityHelperService = utilityHelperService;
18
18
  this.context = new Context();
19
19
  //@Input() form: Form = new Form();
20
- this.previewMode = false;
20
+ this.userMode = false;
21
21
  this.repairMode = false;
22
22
  this.showButtons = true;
23
23
  this.showTitle = true;
@@ -66,8 +66,8 @@ export class EqpDynamicModuleComponent {
66
66
  }
67
67
  }
68
68
  ngAfterViewInit() {
69
- if (this.previewMode)
70
- setTimeout(() => this.onAddViewEditRecord(null), 300);
69
+ if (this.userMode)
70
+ setTimeout(() => this.onAddViewEditRecord(null), 1000);
71
71
  }
72
72
  getFormByID() {
73
73
  const dynamicModuleParams = new Array();
@@ -163,6 +163,7 @@ export class EqpDynamicModuleComponent {
163
163
  var dynRec = new DynRecord();
164
164
  dynRec.ID = event.ID ?? null;
165
165
  dynRec.EntID = this.form.ID;
166
+ dynRec.userID = this.userID;
166
167
  dynRec.Values = event ?? null;
167
168
  var dynamicModuleParams = [
168
169
  { ParamName: "Record", ParamValue: dynRec, ParamType: ParamTypeEnum['In Body'] }
@@ -227,13 +228,13 @@ export class EqpDynamicModuleComponent {
227
228
  }
228
229
  }
229
230
  EqpDynamicModuleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: EqpDynamicModuleComponent, deps: [{ token: i1.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
230
- EqpDynamicModuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: EqpDynamicModuleComponent, selector: "eqp-dynamic-module", inputs: { context: "context", previewMode: "previewMode", formID: "formID", userID: "userID", repairMode: "repairMode", values: "values", showButtons: "showButtons", showTitle: "showTitle", viewMode: "viewMode", FormJSON: "FormJSON", baseServerUrl: "baseServerUrl", userToken: "userToken", endPointConfiguration: "endPointConfiguration" }, outputs: { saveRecord: "saveRecord", deleteRecord: "deleteRecord", duplicateRecord: "duplicateRecord", SaveJSON: "SaveJSON", afterSaveRecord: "afterSaveRecord", afterDeleteRecord: "afterDeleteRecord", afterDuplicateRecord: "afterDuplicateRecord" }, ngImport: i0, template: "\r\n<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<add-form-record *ngIf=\"(viewMode == FormTypeEnum.SCALAR && repairMode==false)\" [form]=\"form\" [userID]=\"userID\" [record]=\"selectedRecord\"\r\n [showButtons]=\"showButtons\" [onlyView]=\"onlyView\" (saveRecordEvent)=\"onSaveRecord($event)\" [showTitle]=\"showTitle\">\r\n</add-form-record>\r\n\r\n<list-form-record *ngIf=\"(viewMode == FormTypeEnum.LIST && values && repairMode==false)&& !previewMode\" [form]=\"form\" [values]=\"values\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\" [showTitle]=\"showTitle\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\" (onDuplicateRecord)=\"onDuplicateRecord($event)\">\r\n</list-form-record>\r\n\r\n<repair-form-fields *ngIf=\"repairMode== true\" [FormJSON]=\"FormJSON\" (onSaveJson)=\"onSaveJson($event)\">\r\n\r\n</repair-form-fields>", styles: ["::ng-deep mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ListFormRecordComponent, selector: "list-form-record", inputs: ["showTitle", "form", "values"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "onDuplicateRecord"] }, { kind: "component", type: i4.AddFormRecordComponent, selector: "add-form-record", inputs: ["showTitle", "userID", "showButtons", "form", "record", "onlyView"], outputs: ["saveRecordEvent"] }, { kind: "component", type: i5.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "component", type: i6.RepairFormFieldsComponent, selector: "repair-form-fields", inputs: ["FormJSON"], outputs: ["onSaveJson"] }] });
231
+ EqpDynamicModuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: EqpDynamicModuleComponent, selector: "eqp-dynamic-module", inputs: { context: "context", userMode: "userMode", formID: "formID", userID: "userID", repairMode: "repairMode", values: "values", showButtons: "showButtons", showTitle: "showTitle", viewMode: "viewMode", FormJSON: "FormJSON", baseServerUrl: "baseServerUrl", userToken: "userToken", endPointConfiguration: "endPointConfiguration" }, outputs: { saveRecord: "saveRecord", deleteRecord: "deleteRecord", duplicateRecord: "duplicateRecord", SaveJSON: "SaveJSON", afterSaveRecord: "afterSaveRecord", afterDeleteRecord: "afterDeleteRecord", afterDuplicateRecord: "afterDuplicateRecord" }, ngImport: i0, template: "\r\n<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<add-form-record *ngIf=\"(viewMode == FormTypeEnum.SCALAR && repairMode==false)\" [form]=\"form\" [record]=\"selectedRecord\"\r\n [showButtons]=\"showButtons\" [onlyView]=\"onlyView\" (saveRecordEvent)=\"onSaveRecord($event)\" [showTitle]=\"showTitle\">\r\n</add-form-record>\r\n\r\n<list-form-record *ngIf=\"(viewMode == FormTypeEnum.LIST && values && repairMode==false)&& !userMode\" [form]=\"form\" [values]=\"values\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\" [showTitle]=\"showTitle\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\" (onDuplicateRecord)=\"onDuplicateRecord($event)\">\r\n</list-form-record>\r\n\r\n<repair-form-fields *ngIf=\"repairMode== true\" [FormJSON]=\"FormJSON\" (onSaveJson)=\"onSaveJson($event)\">\r\n\r\n</repair-form-fields>", styles: ["::ng-deep mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ListFormRecordComponent, selector: "list-form-record", inputs: ["showTitle", "form", "values"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "onDuplicateRecord"] }, { kind: "component", type: i4.AddFormRecordComponent, selector: "add-form-record", inputs: ["showTitle", "showButtons", "form", "record", "onlyView"], outputs: ["saveRecordEvent"] }, { kind: "component", type: i5.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "component", type: i6.RepairFormFieldsComponent, selector: "repair-form-fields", inputs: ["FormJSON"], outputs: ["onSaveJson"] }] });
231
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: EqpDynamicModuleComponent, decorators: [{
232
233
  type: Component,
233
- args: [{ selector: 'eqp-dynamic-module', template: "\r\n<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<add-form-record *ngIf=\"(viewMode == FormTypeEnum.SCALAR && repairMode==false)\" [form]=\"form\" [userID]=\"userID\" [record]=\"selectedRecord\"\r\n [showButtons]=\"showButtons\" [onlyView]=\"onlyView\" (saveRecordEvent)=\"onSaveRecord($event)\" [showTitle]=\"showTitle\">\r\n</add-form-record>\r\n\r\n<list-form-record *ngIf=\"(viewMode == FormTypeEnum.LIST && values && repairMode==false)&& !previewMode\" [form]=\"form\" [values]=\"values\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\" [showTitle]=\"showTitle\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\" (onDuplicateRecord)=\"onDuplicateRecord($event)\">\r\n</list-form-record>\r\n\r\n<repair-form-fields *ngIf=\"repairMode== true\" [FormJSON]=\"FormJSON\" (onSaveJson)=\"onSaveJson($event)\">\r\n\r\n</repair-form-fields>", styles: ["::ng-deep mat-form-field{width:100%}\n"] }]
234
+ args: [{ selector: 'eqp-dynamic-module', template: "\r\n<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n<add-form-record *ngIf=\"(viewMode == FormTypeEnum.SCALAR && repairMode==false)\" [form]=\"form\" [record]=\"selectedRecord\"\r\n [showButtons]=\"showButtons\" [onlyView]=\"onlyView\" (saveRecordEvent)=\"onSaveRecord($event)\" [showTitle]=\"showTitle\">\r\n</add-form-record>\r\n\r\n<list-form-record *ngIf=\"(viewMode == FormTypeEnum.LIST && values && repairMode==false)&& !userMode\" [form]=\"form\" [values]=\"values\"\r\n (onAddViewEditRecord)=\"onAddViewEditRecord($event)\" [showTitle]=\"showTitle\"\r\n (onDeleteRecord)=\"onDeleteRecord($event)\" (onDuplicateRecord)=\"onDuplicateRecord($event)\">\r\n</list-form-record>\r\n\r\n<repair-form-fields *ngIf=\"repairMode== true\" [FormJSON]=\"FormJSON\" (onSaveJson)=\"onSaveJson($event)\">\r\n\r\n</repair-form-fields>", styles: ["::ng-deep mat-form-field{width:100%}\n"] }]
234
235
  }], ctorParameters: function () { return [{ type: i1.UtilityHelperService }]; }, propDecorators: { context: [{
235
236
  type: Input
236
- }], previewMode: [{
237
+ }], userMode: [{
237
238
  type: Input
238
239
  }], formID: [{
239
240
  type: Input
@@ -272,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
272
273
  }], afterDuplicateRecord: [{
273
274
  type: Output
274
275
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZXhwb3J0ZWQvZXFwLWR5bmFtaWMtbW9kdWxlL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBMkQsYUFBYSxFQUFxQixNQUFNLDZDQUE2QyxDQUFDO0FBQ3hKLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLHlCQUF5QjtJQXNEcEMsWUFDVSxvQkFBMEM7UUFBMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQXJEM0MsWUFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUMsbUNBQW1DO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRzdCLGVBQVUsR0FBWSxLQUFL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SW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0sIFJlcXVlc3RNZXRob2RFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm0sIEZvcm1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluUmVjb3JkLCBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlcXAtZHluYW1pYy1tb2R1bGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcXBEeW5hbWljTW9kdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29udGV4dDogQ29udGV4dCA9IG5ldyBDb250ZXh0KCk7XHJcbiAgLy9ASW5wdXQoKSBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBASW5wdXQoKSBwcmV2aWV3TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZvcm1JRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJJRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlcGFpck1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB2YWx1ZXM6IEFycmF5PFJlY29yZD47XHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dUaXRsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgdmlld01vZGU6IEZvcm1UeXBlRW51bSA9IEZvcm1UeXBlRW51bS5MSVNUO1xyXG4gIEBJbnB1dCgpIEZvcm1KU09OOiAgc3RyaW5nID0gXCJcIjtcclxuICAvKipcclxuICAgKiBVcmwgZGVsIHNlcnZlciBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSwgc2FsdmFyZSBvIGVsaW1pbmFyZSBpIHJlY29yZC5cclxuICAgKiBVc2F0byBwZXIgY3JlYXJlIGxhIGNvbmZpZ3VyYXppb25lIGRpIGRlZmF1bHQgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFzZVNlcnZlclVybDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVG9rZW4gZGEgdXNhcmUgbmVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUgcGVyIHJlY3VwZXJhcmUgbyBzYWx2YXJlIGkgcmVjb3JkLlxyXG4gICAqIFVzYXRvIHNvbG8gc2UgdmllbmUgcG9wb2xhdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIi5cclxuICAgKi9cclxuICBASW5wdXQoKSB1c2VyVG9rZW46IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYXppb25lIGRlZ2xpIGVuZHBvaW50IGRhIGNoaWFtYXJlIHBlciByZWN1cGVyYXJlIG8gc2FsdmFyZSBpIGRhdGkuXHJcbiAgICogUHXDsiBlc3NlcmUgZGVmaW5pdGEgZGFsbCd1dGVudGUgb3BwdXJlIGxhc2NpYXRhIG51bGwsIHZpZW5lIHBvcG9sYXRhIGNvbiBkZWlcclxuICAgKiB2YWxvcmkgZGkgZGVmYXVsdCBzZSB2aWVuZSB2YWxvcml6emF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiIGFsdHJpbWVudGlcclxuICAgKiB2aWVuZSBsYXNjaWF0YSBudWxsIGUgbm9uIHZpZW5lIGVzZWd1aXRhIG5lc3N1bmEgY2hpYW1hdGEgYWwgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRpIGVtZXNzaSBxdWFuZG8gc2kgc2FsdmEsIGVsaW1pbmEgbyBkdXBsaWNhIHVuIHJlY29yZFxyXG4gICAqIHNlIG5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2F2ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIFNhdmVKU09OOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50aSBlbWVzc2kgRE9QTyBhdmVyIGVzZWd1aXRvIHVuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIgcGVyIGlsIHNhbHZhdGFnZ2lvLFxyXG4gICAqIGwnZWxpbWluYXppb25lIG8gbGEgZHVwbGljYXppb25lIGRpIHVuIHJlY29yZCBhbGwnZW5kcG9pbnQgc3BlY2lmaWNhdG8uXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJEZWxldGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRHVwbGljYXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgc2VsZWN0ZWRSZWNvcmQ6IFJlY29yZDtcclxuICBvbmx5VmlldzogYm9vbGVhbiA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLlNldENvbnRleHQodGhpcy5jb250ZXh0KTtcclxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEVuZFBvaW50cygpO1xyXG4gICAgXHJcbiAgICBpZih0aGlzLkZvcm1KU09OID09IFwiXCIgKXtcclxuICAgICAgdGhpcy5nZXRGb3JtQnlJRCgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbm5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICBpZih0aGlzLnByZXZpZXdNb2RlKVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25BZGRWaWV3RWRpdFJlY29yZChudWxsKSwzMDApOyBcclxufVxyXG4gIGdldEZvcm1CeUlEKCl7XHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID0gbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCwgZHluYW1pY01vZHVsZVBhcmFtcywgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcbiAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgZ2xpIGVuZHBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQgYSBwYXJ0aXJlIGRhbGwndXJsIGJhc2UgZGVsIHNlcnZlclxyXG4gICAqIGEgY3VpIHNpIGRldmUgY29ubmV0dGVyZSBlIGFsIHRva2VuIGRhIHBhc3NhcmUgcGVyIGF1dGVudGljYXJzaS5cclxuICAgKiBTZSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiIMOoIG51bGwgZSBub24gc29ubyBzdGF0aSBjb25maWd1cmF0aSBpIHZhcmkgZW5kcG9pbnQgYWxsb3JhXHJcbiAgICogbm9uIHZpZW5lIGVzZWd1aXRhIG5lc3N1bmEgY2hpYW1hdGEgaHR0cCBwZXIgcmVjdXBlcmFyZS9zYWx2YXJlIGkgZGF0aS5cclxuICAgKi9cclxuICBjb25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJiB0aGlzLmJhc2VTZXJ2ZXJVcmwpIHtcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPSB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLkNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHModGhpcy5iYXNlU2VydmVyVXJsLCB0aGlzLnVzZXJUb2tlbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdHV0dGkgaSByZWNvcmQgc2FsdmF0aSBwZXIgdW5hIHBhcnRpY29sYXJlIEZvcm0uXHJcbiAgICogTGEgY2hpYW1hdGEgdmllbmUgZWZmZXR0dWF0YSBzb2xvIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGwnZW5kUG9pbnQgZGEgdXNhcmUuXHJcbiAgICogTGEgcmlzcG9zdGEgZGVsbGEgY2hpYW1hdGEgZGV2ZSBlc3NlcmUgdW4gYXJyYXkgZGkgb2dnZXR0aSBkaSB0aXBvIFwiRHluUmVjb3JkXCJcclxuICAgKiBhIHBhcnRpcmUgZGFpIHF1YWxpIHZlbmdvbm8gcmljcmVhdGkgaSBSZWNvcmQgdXNhdGkgbmVsIGNsaWVudC5cclxuICAgKi9cclxuICBnZXRSZWNvcmRzQnlGb3JtSUQoKSB7XHJcbiAgICBpZiAodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJiB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnQpIHtcclxuICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAgeyBQYXJhbU5hbWU6ICdFbnRJRCcsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5JRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddIH1cclxuICAgICAgXTtcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUZvcm1JREVuZFBvaW50LCBkeW5hbWljTW9kdWxlUGFyYW1zLCAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBuZXcgQXJyYXk8UmVjb3JkPigpO1xyXG4gICAgICAgIHJlcy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgICAgdmFyIHRtcFJlYzogUmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgICAgICAgdG1wUmVjID0gSlNPTi5wYXJzZShyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgdG1wUmVjLklEID0gci5JRDtcclxuICAgICAgICAgIHRtcFJlYy5FbnRJRCA9IHIuRW50SUQ7XHJcbiAgICAgICAgICB0bXBSZWMudXNlcklEID1yLnVzZXJJRDtcclxuICAgICAgICAgIHRoaXMudmFsdWVzLnB1c2godG1wUmVjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gcXVhbmRvIHNpIHZ1b2xlIGFnZ2l1bmdlcmUsIHZpc3VhbGl6emFyZSBvIG1vZGlmaWNhcmUgdW4gcmVjb3JkLlxyXG4gICAqIFNlIGwnZXZlbnRvIMOoIG51bGwgdnVvbCBkaXJlIGNoZSBzdGlhbW8gYWdnaXVuZ2VuZG8gdW4gbnVvdm8gcmVjb3JkIGFsdHJpbWVudGkgc2lhbW8gaW4gbW9kaWZpY2FcclxuICAgKiBvIHZpc3VhbGl6emF6aW9uZS4gSW4gcXVlc3RpIHVsdGltaSBkdWUgY2FzaSwgc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kcG9pbnQgcGVyIGlsIHJlY3VwZXJvXHJcbiAgICogZGVsIHJlY29yZCBjb21wbGV0byBhbGxvcmEgdmllbmUgZWZmZXR0dWF0YSB1bmEgY2hpYW1hdGEgYWwgc2VydmVyLCBhbHRyaW1lbnRpIHZpZW5lIHVzYXRvIGwnb2dnZXR0byBzZWxlemlvbmF0by5cclxuICAgKiBAcGFyYW0gZXZlbnQgT2dnZXR0byBjb24gZHVlIHByb3ByaWV0w6A6XHJcbiAgICogXCJyZWNvcmRcIiA9IG9nZ2V0dG8gZGEgbW9kaWZpY2FyZS92aXN1YWxpenphcmUsXHJcbiAgICogXCJvbmx5Vmlld1wiID0gYm9vbGVhbm8gKHNlIFRSVUUgc2lhbW8gaW4gdmlzdWFsaXp6YXppb25lIGFsdHJpbWVudGkgaW4gbW9kaWZpY2EpXHJcbiAgICovXHJcbiAgb25BZGRWaWV3RWRpdFJlY29yZChldmVudDogeyByZWNvcmQ6IFJlY29yZCwgb25seVZpZXc6IGJvb2xlYW4gfSkge1xyXG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5vbmx5VmlldyA9IGV2ZW50Lm9ubHlWaWV3O1xyXG4gICAgICBpZiAodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJiB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5SURFbmRQb2ludCkge1xyXG4gICAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgICAgeyBQYXJhbU5hbWU6IFwiaWRcIiwgUGFyYW1WYWx1ZTogZXZlbnQucmVjb3JkLklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ1F1ZXJ5IHBhcmFtJ10gfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsIGR5bmFtaWNNb2R1bGVQYXJhbXMsIChyZXM6IER5blJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IEpTT04ucGFyc2UocmVzLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZC5JRCA9IHJlcy5JRDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQuRW50SUQgPSByZXMuRW50SUQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkLnVzZXJJRCA9IHJlcy51c2VySUQ7XHJcbiAgICAgICAgICB0aGlzLnZpZXdNb2RlID0gRm9ybVR5cGVFbnVtLlNDQUxBUjtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudC5yZWNvcmQpKTtcclxuICAgICAgICB0aGlzLnZpZXdNb2RlID0gRm9ybVR5cGVFbnVtLlNDQUxBUjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25seVZpZXcgPSBmYWxzZTtcclxuICAgICAgdGhpcy52aWV3TW9kZSA9IEZvcm1UeXBlRW51bS5TQ0FMQVI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgaWwgcmVjb3JkIGFnZ2l1bnRvIG8gbW9kaWZpY2F0by5cclxuICAgKiBTZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRQb2ludCBwZXIgaWwgc2FsdmF0YWdnaW8gdmllbmUgZWZmZXR0dWF0YSB1bmEgY2hpYW1hdGEgYWwgc2VydmVyIHBhc3NhbmRvIGwnb2dnZXRvIGRhIHNhbHZhcmVcclxuICAgKiBuZWwgYm9keSBkZWxsYSBjaGlhbWF0YSwgYWx0cmltZW50aSBzY2F0ZW5hIGwnZXZlbnRvIFwic2F2ZVJlY29yZFwiLlxyXG4gICAqIEBwYXJhbSBldmVudCBPZ2dldHRvIGRpIHRpcG8gUmVjb3JkIGRhIHNhbHZhcmUuXHJcbiAgICovXHJcbiAgb25TYXZlUmVjb3JkKGV2ZW50OiBSZWNvcmQpIHtcclxuICAgIGlmIChldmVudCAhPSBudWxsICYmIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICE9IG51bGwgJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5TYXZlRW5kUG9pbnQpIHtcclxuICAgICAgdmFyIGR5blJlYzogRHluUmVjb3JkID0gbmV3IER5blJlY29yZCgpO1xyXG4gICAgICBkeW5SZWMuSUQgPSBldmVudC5JRCA/PyBudWxsO1xyXG4gICAgICBkeW5SZWMuRW50SUQgPSB0aGlzLmZvcm0uSUQ7XHJcbiAgICAgIGR5blJlYy5WYWx1ZXMgPSBldmVudCA/PyBudWxsO1xyXG4gICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICB7IFBhcmFtTmFtZTogXCJSZWNvcmRcIiwgUGFyYW1WYWx1ZTogZHluUmVjLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9XHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuU2F2ZUVuZFBvaW50LCBkeW5hbWljTW9kdWxlUGFyYW1zLCAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRSZWNvcmRzQnlGb3JtSUQoKTtcclxuICAgICAgICB0aGlzLmFmdGVyU2F2ZVJlY29yZC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB0aGlzLnZpZXdNb2RlID0gRm9ybVR5cGVFbnVtLkxJU1Q7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlUmVjb3JkLmVtaXQoZXZlbnQpO1xyXG4gICAgICB0aGlzLnZpZXdNb2RlID0gRm9ybVR5cGVFbnVtLkxJU1Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGR1cGxpY2FyZSB1biByZWNvcmQgcHJlY2VkZW50ZW1lbnRlIHNhbHZhdG8uXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGxhIGR1cGxpY2F6aW9uZSBsYXRvIHNlcnZlciBhbGxvcmEgZWZmZXR0dWEgdW5hIGNoaWFtYXRhIHBhc3NhbmRvIG5lbCBib2R5XHJcbiAgICogdW4gb2dnZXR0byBjb250ZW5lbnRlIGlsIHJlY29yZCBkYSBkdXBsaWNhcmUsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBkaSBvdXRwdXQgXCJkdXBsaWNhdGVSZWNvcmRcIi5cclxuICAgKiBAcGFyYW0gcmVjb3JkIE9nZ2V0dG8gZGkgdGlwbyBSZWNvcmQgZGEgZHVwbGljYXJlLlxyXG4gICAqL1xyXG4gIG9uRHVwbGljYXRlUmVjb3JkKHJlY29yZDogUmVjb3JkKSB7XHJcbiAgICBpZiAodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5EdXBsaWNhdGVFbmRQb2ludCkge1xyXG4gICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKCdEdXBsaWNhcmUgaWwgcmVjb3JkIHNlbGV6aW9uYXRvPycsICgpID0+IHtcclxuICAgICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICAgIHsgUGFyYW1OYW1lOiBcImlkXCIsIFBhcmFtVmFsdWU6IHJlY29yZC5JRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuRHVwbGljYXRlRW5kUG9pbnQsIGR5bmFtaWNNb2R1bGVQYXJhbXMsIChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyRHVwbGljYXRlUmVjb3JkLmVtaXQocmVjb3JkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgZmFsc2UsICdSaWNoaWVzdGEgY29uZmVybWEnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHVwbGljYXRlUmVjb3JkLmVtaXQocmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZWxpbWluYXJlIHVuIHJlY29yZC5cclxuICAgKiBTZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRQb2ludCBwZXIgbCdlbGltaW5hemlvbmUgYWxsb3JhIGVmZmV0dHVhIHVuYSBjaGlhbWF0YSBwYXNzYW5kbyBsJ0lEIGRlbCByZWNvcmQgZGEgZWxpbWluYXJlXHJcbiAgICogY29tZSBxdWVyeSBwYXJhbSBhbGwnaW50ZXJubyBkZWxsYSByb3R0YSwgYWx0cmltZW50aSBzY2F0ZW5hIGwnZXZlbnRvIGRpIG91dHB1dCBcImRlbGV0ZVJlY29yZFwiLlxyXG4gICAqIEBwYXJhbSByZWNvcmQgT2dnZXR0byBkaSB0aXBvIFJlY29yZCBkYSBkdXBsaWNhcmUuXHJcbiAgICovXHJcbiAgb25EZWxldGVSZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIGlmICh0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJiB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkRlbGV0ZUVuZFBvaW50KSB7XHJcbiAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkNvbmZpcm0oJ0VsaW1pbmFyZSBpbCByZWNvcmQgc2VsZXppb25hdG8/JywgKCkgPT4ge1xyXG4gICAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgICAgeyBQYXJhbU5hbWU6IFwiaWRcIiwgUGFyYW1WYWx1ZTogcmVjb3JkLklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ1F1ZXJ5IHBhcmFtJ10gfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5EZWxldGVFbmRQb2ludCwgZHluYW1pY01vZHVsZVBhcmFtcywgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRSZWNvcmRzQnlGb3JtSUQoKTtcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJEZWxldGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCBmYWxzZSwgJ1JpY2hpZXN0YSBjb25mZXJtYScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWxldGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TYXZlSnNvbihyZWNvcmQ6IHN0cmluZykge1xyXG4gICAgICB0aGlzLlNhdmVKU09OLmVtaXQocmVjb3JkKTtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxlcXAtZHluYW1pYy1tb2R1bGUtc3Bpbm5lcj48L2VxcC1keW5hbWljLW1vZHVsZS1zcGlubmVyPlxyXG5cclxuPGFkZC1mb3JtLXJlY29yZCAqbmdJZj1cIih2aWV3TW9kZSA9PSBGb3JtVHlwZUVudW0uU0NBTEFSICYmIHJlcGFpck1vZGU9PWZhbHNlKVwiIFtmb3JtXT1cImZvcm1cIiBbdXNlcklEXT1cInVzZXJJRFwiIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmRcIlxyXG4gICAgW3Nob3dCdXR0b25zXT1cInNob3dCdXR0b25zXCIgW29ubHlWaWV3XT1cIm9ubHlWaWV3XCIgKHNhdmVSZWNvcmRFdmVudCk9XCJvblNhdmVSZWNvcmQoJGV2ZW50KVwiIFtzaG93VGl0bGVdPVwic2hvd1RpdGxlXCI+XHJcbjwvYWRkLWZvcm0tcmVjb3JkPlxyXG5cclxuPGxpc3QtZm9ybS1yZWNvcmQgKm5nSWY9XCIodmlld01vZGUgPT0gRm9ybVR5cGVFbnVtLkxJU1QgJiYgdmFsdWVzICYmIHJlcGFpck1vZGU9PWZhbHNlKSYmICFwcmV2aWV3TW9kZVwiIFtmb3JtXT1cImZvcm1cIiBbdmFsdWVzXT1cInZhbHVlc1wiXHJcbiAgICAob25BZGRWaWV3RWRpdFJlY29yZCk9XCJvbkFkZFZpZXdFZGl0UmVjb3JkKCRldmVudClcIiBbc2hvd1RpdGxlXT1cInNob3dUaXRsZVwiXHJcbiAgICAob25EZWxldGVSZWNvcmQpPVwib25EZWxldGVSZWNvcmQoJGV2ZW50KVwiIChvbkR1cGxpY2F0ZVJlY29yZCk9XCJvbkR1cGxpY2F0ZVJlY29yZCgkZXZlbnQpXCI+XHJcbjwvbGlzdC1mb3JtLXJlY29yZD5cclxuXHJcbjxyZXBhaXItZm9ybS1maWVsZHMgKm5nSWY9XCJyZXBhaXJNb2RlPT0gdHJ1ZVwiIFtGb3JtSlNPTl09XCJGb3JtSlNPTlwiIChvblNhdmVKc29uKT1cIm9uU2F2ZUpzb24oJGV2ZW50KVwiPlxyXG5cclxuPC9yZXBhaXItZm9ybS1maWVsZHM+Il19
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZXhwb3J0ZWQvZXFwLWR5bmFtaWMtbW9kdWxlL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBMkQsYUFBYSxFQUFxQixNQUFNLDZDQUE2QyxDQUFDO0FBQ3hKLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLHlCQUF5QjtJQXNEcEMsWUFDVSxvQkFBMEM7UUFBMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQXJEM0MsWUFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUMsbUNBQW1DO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsZUFBVSxHQUFZLEtBQUss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cnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0sIFJlcXVlc3RNZXRob2RFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm0sIEZvcm1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluUmVjb3JkLCBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlcXAtZHluYW1pYy1tb2R1bGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lcXAtZHluYW1pYy1tb2R1bGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VxcC1keW5hbWljLW1vZHVsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcXBEeW5hbWljTW9kdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29udGV4dDogQ29udGV4dCA9IG5ldyBDb250ZXh0KCk7XHJcbiAgLy9ASW5wdXQoKSBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBASW5wdXQoKSB1c2VyTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZvcm1JRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJJRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlcGFpck1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB2YWx1ZXM6IEFycmF5PFJlY29yZD47XHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dUaXRsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgdmlld01vZGU6IEZvcm1UeXBlRW51bSA9IEZvcm1UeXBlRW51bS5MSVNUO1xyXG4gIEBJbnB1dCgpIEZvcm1KU09OOiAgc3RyaW5nID0gXCJcIjtcclxuICAvKipcclxuICAgKiBVcmwgZGVsIHNlcnZlciBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSwgc2FsdmFyZSBvIGVsaW1pbmFyZSBpIHJlY29yZC5cclxuICAgKiBVc2F0byBwZXIgY3JlYXJlIGxhIGNvbmZpZ3VyYXppb25lIGRpIGRlZmF1bHQgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFzZVNlcnZlclVybDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVG9rZW4gZGEgdXNhcmUgbmVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUgcGVyIHJlY3VwZXJhcmUgbyBzYWx2YXJlIGkgcmVjb3JkLlxyXG4gICAqIFVzYXRvIHNvbG8gc2UgdmllbmUgcG9wb2xhdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIi5cclxuICAgKi9cclxuICBASW5wdXQoKSB1c2VyVG9rZW46IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYXppb25lIGRlZ2xpIGVuZHBvaW50IGRhIGNoaWFtYXJlIHBlciByZWN1cGVyYXJlIG8gc2FsdmFyZSBpIGRhdGkuXHJcbiAgICogUHXDsiBlc3NlcmUgZGVmaW5pdGEgZGFsbCd1dGVudGUgb3BwdXJlIGxhc2NpYXRhIG51bGwsIHZpZW5lIHBvcG9sYXRhIGNvbiBkZWlcclxuICAgKiB2YWxvcmkgZGkgZGVmYXVsdCBzZSB2aWVuZSB2YWxvcml6emF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiIGFsdHJpbWVudGlcclxuICAgKiB2aWVuZSBsYXNjaWF0YSBudWxsIGUgbm9uIHZpZW5lIGVzZWd1aXRhIG5lc3N1bmEgY2hpYW1hdGEgYWwgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRpIGVtZXNzaSBxdWFuZG8gc2kgc2FsdmEsIGVsaW1pbmEgbyBkdXBsaWNhIHVuIHJlY29yZFxyXG4gICAqIHNlIG5vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBlbmRwb2ludCBkYSBjaGlhbWFyZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2F2ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIFNhdmVKU09OOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50aSBlbWVzc2kgRE9QTyBhdmVyIGVzZWd1aXRvIHVuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIgcGVyIGlsIHNhbHZhdGFnZ2lvLFxyXG4gICAqIGwnZWxpbWluYXppb25lIG8gbGEgZHVwbGljYXppb25lIGRpIHVuIHJlY29yZCBhbGwnZW5kcG9pbnQgc3BlY2lmaWNhdG8uXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJEZWxldGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRHVwbGljYXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgc2VsZWN0ZWRSZWNvcmQ6IFJlY29yZDtcclxuICBvbmx5VmlldzogYm9vbGVhbiA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLlNldENvbnRleHQodGhpcy5jb250ZXh0KTtcclxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEVuZFBvaW50cygpO1xyXG4gICAgXHJcbiAgICBpZih0aGlzLkZvcm1KU09OID09IFwiXCIgKXtcclxuICAgICAgdGhpcy5nZXRGb3JtQnlJRCgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbm5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICBpZih0aGlzLnVzZXJNb2RlKVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25BZGRWaWV3RWRpdFJlY29yZChudWxsKSwxMDAwKTsgXHJcbn1cclxuICBnZXRGb3JtQnlJRCgpe1xyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9IG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnUXVlcnkgcGFyYW0nXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbCh0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsIGR5bmFtaWNNb2R1bGVQYXJhbXMsIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG4gICAgICB0aGlzLmdldFJlY29yZHNCeUZvcm1JRCgpO1xyXG4gICAgfSwgKGVycikgPT4ge1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNvbmZpZ3VyYXJlIGdsaSBlbmRwb2ludCBkYSB1c2FyZSBkaSBkZWZhdWx0IGEgcGFydGlyZSBkYWxsJ3VybCBiYXNlIGRlbCBzZXJ2ZXJcclxuICAgKiBhIGN1aSBzaSBkZXZlIGNvbm5ldHRlcmUgZSBhbCB0b2tlbiBkYSBwYXNzYXJlIHBlciBhdXRlbnRpY2Fyc2kuXHJcbiAgICogU2UgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIiDDqCBudWxsIGUgbm9uIHNvbm8gc3RhdGkgY29uZmlndXJhdGkgaSB2YXJpIGVuZHBvaW50IGFsbG9yYVxyXG4gICAqIG5vbiB2aWVuZSBlc2VndWl0YSBuZXNzdW5hIGNoaWFtYXRhIGh0dHAgcGVyIHJlY3VwZXJhcmUvc2FsdmFyZSBpIGRhdGkuXHJcbiAgICovXHJcbiAgY29uZmlndXJlRGVmYXVsdEVuZFBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiYgdGhpcy5iYXNlU2VydmVyVXJsKSB7XHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uID0gdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5Db25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKHRoaXMuYmFzZVNlcnZlclVybCwgdGhpcy51c2VyVG9rZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByZWN1cGVyYXJlIHR1dHRpIGkgcmVjb3JkIHNhbHZhdGkgcGVyIHVuYSBwYXJ0aWNvbGFyZSBGb3JtLlxyXG4gICAqIExhIGNoaWFtYXRhIHZpZW5lIGVmZmV0dHVhdGEgc29sbyBzZSDDqCBzdGF0byBjb25maWd1cmF0byBsJ2VuZFBvaW50IGRhIHVzYXJlLlxyXG4gICAqIExhIHJpc3Bvc3RhIGRlbGxhIGNoaWFtYXRhIGRldmUgZXNzZXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGkgdGlwbyBcIkR5blJlY29yZFwiXHJcbiAgICogYSBwYXJ0aXJlIGRhaSBxdWFsaSB2ZW5nb25vIHJpY3JlYXRpIGkgUmVjb3JkIHVzYXRpIG5lbCBjbGllbnQuXHJcbiAgICovXHJcbiAgZ2V0UmVjb3Jkc0J5Rm9ybUlEKCkge1xyXG4gICAgaWYgKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUZvcm1JREVuZFBvaW50KSB7XHJcbiAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHsgUGFyYW1OYW1lOiAnRW50SUQnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uSUQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnUXVlcnkgcGFyYW0nXSB9XHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlGb3JtSURFbmRQb2ludCwgZHluYW1pY01vZHVsZVBhcmFtcywgKHJlczogQXJyYXk8RHluUmVjb3JkPikgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsdWVzID0gbmV3IEFycmF5PFJlY29yZD4oKTtcclxuICAgICAgICByZXMuZm9yRWFjaChyID0+IHtcclxuICAgICAgICAgIHZhciB0bXBSZWM6IFJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgICAgICAgIHRtcFJlYyA9IEpTT04ucGFyc2Uoci5TZXJpYWxpemVkVmFsdWVzKTtcclxuICAgICAgICAgIHRtcFJlYy5JRCA9IHIuSUQ7XHJcbiAgICAgICAgICB0bXBSZWMuRW50SUQgPSByLkVudElEO1xyXG4gICAgICAgICAgdG1wUmVjLnVzZXJJRCA9ci51c2VySUQ7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHRtcFJlYyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIHF1YW5kbyBzaSB2dW9sZSBhZ2dpdW5nZXJlLCB2aXN1YWxpenphcmUgbyBtb2RpZmljYXJlIHVuIHJlY29yZC5cclxuICAgKiBTZSBsJ2V2ZW50byDDqCBudWxsIHZ1b2wgZGlyZSBjaGUgc3RpYW1vIGFnZ2l1bmdlbmRvIHVuIG51b3ZvIHJlY29yZCBhbHRyaW1lbnRpIHNpYW1vIGluIG1vZGlmaWNhXHJcbiAgICogbyB2aXN1YWxpenphemlvbmUuIEluIHF1ZXN0aSB1bHRpbWkgZHVlIGNhc2ksIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIHVuIGVuZHBvaW50IHBlciBpbCByZWN1cGVyb1xyXG4gICAqIGRlbCByZWNvcmQgY29tcGxldG8gYWxsb3JhIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciwgYWx0cmltZW50aSB2aWVuZSB1c2F0byBsJ29nZ2V0dG8gc2VsZXppb25hdG8uXHJcbiAgICogQHBhcmFtIGV2ZW50IE9nZ2V0dG8gY29uIGR1ZSBwcm9wcmlldMOgOlxyXG4gICAqIFwicmVjb3JkXCIgPSBvZ2dldHRvIGRhIG1vZGlmaWNhcmUvdmlzdWFsaXp6YXJlLFxyXG4gICAqIFwib25seVZpZXdcIiA9IGJvb2xlYW5vIChzZSBUUlVFIHNpYW1vIGluIHZpc3VhbGl6emF6aW9uZSBhbHRyaW1lbnRpIGluIG1vZGlmaWNhKVxyXG4gICAqL1xyXG4gIG9uQWRkVmlld0VkaXRSZWNvcmQoZXZlbnQ6IHsgcmVjb3JkOiBSZWNvcmQsIG9ubHlWaWV3OiBib29sZWFuIH0pIHtcclxuICAgIGlmIChldmVudCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMub25seVZpZXcgPSBldmVudC5vbmx5VmlldztcclxuICAgICAgaWYgKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiYgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQpIHtcclxuICAgICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICAgIHsgUGFyYW1OYW1lOiBcImlkXCIsIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5JRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50LCBkeW5hbWljTW9kdWxlUGFyYW1zLCAocmVzOiBEeW5SZWNvcmQpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSBKU09OLnBhcnNlKHJlcy5TZXJpYWxpemVkVmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQuSUQgPSByZXMuSUQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkLkVudElEID0gcmVzLkVudElEO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZC51c2VySUQgPSByZXMudXNlcklEO1xyXG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9IEZvcm1UeXBlRW51bS5TQ0FMQVI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXZlbnQucmVjb3JkKSk7XHJcbiAgICAgICAgdGhpcy52aWV3TW9kZSA9IEZvcm1UeXBlRW51bS5TQ0FMQVI7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSBudWxsO1xyXG4gICAgICB0aGlzLm9ubHlWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmlld01vZGUgPSBGb3JtVHlwZUVudW0uU0NBTEFSO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGlsIHJlY29yZCBhZ2dpdW50byBvIG1vZGlmaWNhdG8uXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwYXNzYW5kbyBsJ29nZ2V0byBkYSBzYWx2YXJlXHJcbiAgICogbmVsIGJvZHkgZGVsbGEgY2hpYW1hdGEsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBcInNhdmVSZWNvcmRcIi5cclxuICAgKiBAcGFyYW0gZXZlbnQgT2dnZXR0byBkaSB0aXBvIFJlY29yZCBkYSBzYWx2YXJlLlxyXG4gICAqL1xyXG4gIG9uU2F2ZVJlY29yZChldmVudDogUmVjb3JkKSB7XHJcbiAgICBpZiAoZXZlbnQgIT0gbnVsbCAmJiB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAhPSBudWxsICYmIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuU2F2ZUVuZFBvaW50KSB7XHJcbiAgICAgIHZhciBkeW5SZWM6IER5blJlY29yZCA9IG5ldyBEeW5SZWNvcmQoKTtcclxuICAgICAgZHluUmVjLklEID0gZXZlbnQuSUQgPz8gbnVsbDtcclxuICAgICAgZHluUmVjLkVudElEID0gdGhpcy5mb3JtLklEO1xyXG4gICAgICBkeW5SZWMudXNlcklEID10aGlzLnVzZXJJRDtcclxuICAgICAgZHluUmVjLlZhbHVlcyA9IGV2ZW50ID8/IG51bGw7XHJcbiAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHsgUGFyYW1OYW1lOiBcIlJlY29yZFwiLCBQYXJhbVZhbHVlOiBkeW5SZWMsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH1cclxuICAgICAgXTtcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5TYXZlRW5kUG9pbnQsIGR5bmFtaWNNb2R1bGVQYXJhbXMsIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmdldFJlY29yZHNCeUZvcm1JRCgpO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJTYXZlUmVjb3JkLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMudmlld01vZGUgPSBGb3JtVHlwZUVudW0uTElTVDtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmVSZWNvcmQuZW1pdChldmVudCk7XHJcbiAgICAgIHRoaXMudmlld01vZGUgPSBGb3JtVHlwZUVudW0uTElTVDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZHVwbGljYXJlIHVuIHJlY29yZCBwcmVjZWRlbnRlbWVudGUgc2FsdmF0by5cclxuICAgKiBTZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRQb2ludCBwZXIgbGEgZHVwbGljYXppb25lIGxhdG8gc2VydmVyIGFsbG9yYSBlZmZldHR1YSB1bmEgY2hpYW1hdGEgcGFzc2FuZG8gbmVsIGJvZHlcclxuICAgKiB1biBvZ2dldHRvIGNvbnRlbmVudGUgaWwgcmVjb3JkIGRhIGR1cGxpY2FyZSwgYWx0cmltZW50aSBzY2F0ZW5hIGwnZXZlbnRvIGRpIG91dHB1dCBcImR1cGxpY2F0ZVJlY29yZFwiLlxyXG4gICAqIEBwYXJhbSByZWNvcmQgT2dnZXR0byBkaSB0aXBvIFJlY29yZCBkYSBkdXBsaWNhcmUuXHJcbiAgICovXHJcbiAgb25EdXBsaWNhdGVSZWNvcmQocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIGlmICh0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJiB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkR1cGxpY2F0ZUVuZFBvaW50KSB7XHJcbiAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkNvbmZpcm0oJ0R1cGxpY2FyZSBpbCByZWNvcmQgc2VsZXppb25hdG8/JywgKCkgPT4ge1xyXG4gICAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgICAgeyBQYXJhbU5hbWU6IFwiaWRcIiwgUGFyYW1WYWx1ZTogcmVjb3JkLklELCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ1F1ZXJ5IHBhcmFtJ10gfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwodGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5EdXBsaWNhdGVFbmRQb2ludCwgZHluYW1pY01vZHVsZVBhcmFtcywgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRSZWNvcmRzQnlGb3JtSUQoKTtcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJEdXBsaWNhdGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCBmYWxzZSwgJ1JpY2hpZXN0YSBjb25mZXJtYScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBlbGltaW5hcmUgdW4gcmVjb3JkLlxyXG4gICAqIFNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIHVuIGVuZFBvaW50IHBlciBsJ2VsaW1pbmF6aW9uZSBhbGxvcmEgZWZmZXR0dWEgdW5hIGNoaWFtYXRhIHBhc3NhbmRvIGwnSUQgZGVsIHJlY29yZCBkYSBlbGltaW5hcmVcclxuICAgKiBjb21lIHF1ZXJ5IHBhcmFtIGFsbCdpbnRlcm5vIGRlbGxhIHJvdHRhLCBhbHRyaW1lbnRpIHNjYXRlbmEgbCdldmVudG8gZGkgb3V0cHV0IFwiZGVsZXRlUmVjb3JkXCIuXHJcbiAgICogQHBhcmFtIHJlY29yZCBPZ2dldHRvIGRpIHRpcG8gUmVjb3JkIGRhIGR1cGxpY2FyZS5cclxuICAgKi9cclxuICBvbkRlbGV0ZVJlY29yZChyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgaWYgKHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuRGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuQ29uZmlybSgnRWxpbWluYXJlIGlsIHJlY29yZCBzZWxlemlvbmF0bz8nLCAoKSA9PiB7XHJcbiAgICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAgICB7IFBhcmFtTmFtZTogXCJpZFwiLCBQYXJhbVZhbHVlOiByZWNvcmQuSUQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnUXVlcnkgcGFyYW0nXSB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbCh0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkRlbGV0ZUVuZFBvaW50LCBkeW5hbWljTW9kdWxlUGFyYW1zLCAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldFJlY29yZHNCeUZvcm1JRCgpO1xyXG4gICAgICAgICAgdGhpcy5hZnRlckRlbGV0ZVJlY29yZC5lbWl0KHJlY29yZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIGZhbHNlLCAnUmljaGllc3RhIGNvbmZlcm1hJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRlbGV0ZVJlY29yZC5lbWl0KHJlY29yZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNhdmVKc29uKHJlY29yZDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuU2F2ZUpTT04uZW1pdChyZWNvcmQpO1xyXG4gIH1cclxufVxyXG4iLCJcclxuPGVxcC1keW5hbWljLW1vZHVsZS1zcGlubmVyPjwvZXFwLWR5bmFtaWMtbW9kdWxlLXNwaW5uZXI+XHJcblxyXG48YWRkLWZvcm0tcmVjb3JkICpuZ0lmPVwiKHZpZXdNb2RlID09IEZvcm1UeXBlRW51bS5TQ0FMQVIgJiYgcmVwYWlyTW9kZT09ZmFsc2UpXCIgW2Zvcm1dPVwiZm9ybVwiIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmRcIlxyXG4gICAgW3Nob3dCdXR0b25zXT1cInNob3dCdXR0b25zXCIgW29ubHlWaWV3XT1cIm9ubHlWaWV3XCIgKHNhdmVSZWNvcmRFdmVudCk9XCJvblNhdmVSZWNvcmQoJGV2ZW50KVwiIFtzaG93VGl0bGVdPVwic2hvd1RpdGxlXCI+XHJcbjwvYWRkLWZvcm0tcmVjb3JkPlxyXG5cclxuPGxpc3QtZm9ybS1yZWNvcmQgKm5nSWY9XCIodmlld01vZGUgPT0gRm9ybVR5cGVFbnVtLkxJU1QgJiYgdmFsdWVzICYmIHJlcGFpck1vZGU9PWZhbHNlKSYmICF1c2VyTW9kZVwiIFtmb3JtXT1cImZvcm1cIiBbdmFsdWVzXT1cInZhbHVlc1wiXHJcbiAgICAob25BZGRWaWV3RWRpdFJlY29yZCk9XCJvbkFkZFZpZXdFZGl0UmVjb3JkKCRldmVudClcIiBbc2hvd1RpdGxlXT1cInNob3dUaXRsZVwiXHJcbiAgICAob25EZWxldGVSZWNvcmQpPVwib25EZWxldGVSZWNvcmQoJGV2ZW50KVwiIChvbkR1cGxpY2F0ZVJlY29yZCk9XCJvbkR1cGxpY2F0ZVJlY29yZCgkZXZlbnQpXCI+XHJcbjwvbGlzdC1mb3JtLXJlY29yZD5cclxuXHJcbjxyZXBhaXItZm9ybS1maWVsZHMgKm5nSWY9XCJyZXBhaXJNb2RlPT0gdHJ1ZVwiIFtGb3JtSlNPTl09XCJGb3JtSlNPTlwiIChvblNhdmVKc29uKT1cIm9uU2F2ZUpzb24oJGV2ZW50KVwiPlxyXG5cclxuPC9yZXBhaXItZm9ybS1maWVsZHM+Il19