@lowcodeunit/applications-flow-common 1.34.50-lets-get-social-ish → 1.34.53-lets-get-social-ish

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.
@@ -22,18 +22,6 @@ export class DFSModifiersDialogComponent {
22
22
  this.snackBar = snackBar;
23
23
  this.ModifierDialogForm = this.formbldr.group({});
24
24
  }
25
- // public get Application(): EaCApplicationAsCode {
26
- // return this.State?.EaC?.Applications[this.data.applicationLookup] || {};
27
- // }
28
- // public get Environment(): EaCEnvironmentAsCode {
29
- // return this.State?.EaC?.Environments[this.data.environmentLookup];
30
- // }
31
- // public get SourceControls(): { [lookup: string]: EaCSourceControl } {
32
- // return this.Environment?.Sources || {};
33
- // }
34
- // public get SourceControlLookups(): Array<string> {
35
- // return Object.keys(this.Environment?.Sources || {});
36
- // }
37
25
  get State() {
38
26
  return this.eacSvc.State;
39
27
  }
@@ -43,9 +31,10 @@ export class DFSModifiersDialogComponent {
43
31
  get DFSModifersFormGroup() {
44
32
  return this.DFSModifersFormControls?.ModifierFormGroup;
45
33
  }
34
+ get SelectedModifiersFormGroup() {
35
+ return this.DFSModifersFormControls?.ModifierSelectFormGroup;
36
+ }
46
37
  ngOnInit() {
47
- console.log("MDF lookup at dialog: ", this.data.modifierLookup);
48
- console.log("MODS: ", this.data.modifiers);
49
38
  this.determineLevel();
50
39
  }
51
40
  CloseDialog() {
@@ -63,6 +52,16 @@ export class DFSModifiersDialogComponent {
63
52
  this.ErrorMessage = event.Message;
64
53
  }
65
54
  }
55
+ IsDisabled() {
56
+ this.SaveDisabled = true;
57
+ if (this.DFSModifersFormGroup) {
58
+ this.SaveDisabled = (!this.DFSModifersFormGroup?.valid || !this.ModifierDialogForm?.valid);
59
+ }
60
+ else if (this.SelectedModifiersFormGroup) {
61
+ this.SaveDisabled = (!this.SelectedModifiersFormGroup?.valid || !this.SelectedModifiersFormGroup?.dirty);
62
+ }
63
+ return this.SaveDisabled;
64
+ }
66
65
  SaveDFSModifier() {
67
66
  switch (this.data.level) {
68
67
  case "enterprise": {
@@ -79,11 +78,10 @@ export class DFSModifiersDialogComponent {
79
78
  this.DFSModifersFormControls.SaveModifier(this.data.projectLookup);
80
79
  }
81
80
  case "application": {
82
- //apply modifier to application
83
81
  this.DFSModifersFormControls.SaveModifierForApplication(this.data.applicationLookup);
84
82
  }
85
83
  }
86
- this.DFSModifersFormControls.SaveModifier();
84
+ // this.DFSModifersFormControls.SaveModifier();
87
85
  }
88
86
  determineLevel() {
89
87
  switch (this.data.level) {
@@ -97,10 +95,10 @@ export class DFSModifiersDialogComponent {
97
95
  }
98
96
  }
99
97
  DFSModifiersDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DFSModifiersDialogComponent, deps: [{ token: i1.EaCService }, { token: i2.FormBuilder }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
100
- DFSModifiersDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DFSModifiersDialogComponent, selector: "lcu-dfs-modifiers-dialog", viewQueries: [{ propertyName: "DFSModifersFormControls", first: true, predicate: DFSModifiersFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n <lcu-dfs-modifier-form\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [modifiers]=\"data.modifiers\"\n [level]=\"data.level\"\n >\n\n </lcu-dfs-modifier-form>\n\n <form\n [formGroup]=\"ModifierDialogForm\"\n >\n\n <mat-checkbox *ngIf=\"data.level === 'enterprise'\" formControlName=\"applyToAllProjects\">Apply to all Projects</mat-checkbox>\n </form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n <!-- -->\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveDFSModifier()\"\n [disabled]=\"(!this.DFSModifersFormGroup?.valid || !this.ModifierDialogForm?.valid)\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n", styles: [""], components: [{ type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.DFSModifiersFormComponent, selector: "lcu-dfs-modifier-form", inputs: ["editing-modifier-lookup", "modifiers", "project", "project-lookup", "level"] }, { type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i9.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i11.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
98
+ DFSModifiersDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DFSModifiersDialogComponent, selector: "lcu-dfs-modifiers-dialog", viewQueries: [{ propertyName: "DFSModifersFormControls", first: true, predicate: DFSModifiersFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n <lcu-dfs-modifier-form\n [application-lookup]=\"data.applicationLookup\"\n [project-lookup]=\"data.projectLookup\"\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [level]=\"data.level\"\n >\n\n </lcu-dfs-modifier-form>\n\n <form\n [formGroup]=\"ModifierDialogForm\"\n >\n\n <mat-checkbox *ngIf=\"data.level === 'enterprise' && data.modifierLookup\" formControlName=\"applyToAllProjects\">Apply to all Projects</mat-checkbox>\n </form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n <!-- -->\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveDFSModifier()\"\n [disabled]=\"IsDisabled()\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n", styles: [""], components: [{ type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.DFSModifiersFormComponent, selector: "lcu-dfs-modifier-form", inputs: ["editing-modifier-lookup", "application-lookup", "project", "project-lookup", "level"] }, { type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i9.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i11.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
101
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DFSModifiersDialogComponent, decorators: [{
102
100
  type: Component,
103
- args: [{ selector: 'lcu-dfs-modifiers-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n <lcu-dfs-modifier-form\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [modifiers]=\"data.modifiers\"\n [level]=\"data.level\"\n >\n\n </lcu-dfs-modifier-form>\n\n <form\n [formGroup]=\"ModifierDialogForm\"\n >\n\n <mat-checkbox *ngIf=\"data.level === 'enterprise'\" formControlName=\"applyToAllProjects\">Apply to all Projects</mat-checkbox>\n </form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n <!-- -->\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveDFSModifier()\"\n [disabled]=\"(!this.DFSModifersFormGroup?.valid || !this.ModifierDialogForm?.valid)\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n", styles: [""] }]
101
+ args: [{ selector: 'lcu-dfs-modifiers-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n <lcu-dfs-modifier-form\n [application-lookup]=\"data.applicationLookup\"\n [project-lookup]=\"data.projectLookup\"\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [level]=\"data.level\"\n >\n\n </lcu-dfs-modifier-form>\n\n <form\n [formGroup]=\"ModifierDialogForm\"\n >\n\n <mat-checkbox *ngIf=\"data.level === 'enterprise' && data.modifierLookup\" formControlName=\"applyToAllProjects\">Apply to all Projects</mat-checkbox>\n </form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n <!-- -->\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveDFSModifier()\"\n [disabled]=\"IsDisabled()\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n", styles: [""] }]
104
102
  }], ctorParameters: function () { return [{ type: i1.EaCService }, { type: i2.FormBuilder }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
105
103
  type: Inject,
106
104
  args: [MAT_DIALOG_DATA]
@@ -108,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
108
106
  type: ViewChild,
109
107
  args: [DFSModifiersFormComponent]
110
108
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZzLW1vZGlmaWVycy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZGlhbG9ncy9kZnMtbW9kaWZpZXJzLWRpYWxvZy9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL2Rmcy1tb2RpZmllcnMtZGlhbG9nL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBbUIzRyxNQUFNLE9BQU8sMkJBQTJCO0lBcUN0QyxZQUFzQixNQUFrQixFQUMvQixRQUFxQixFQUNyQixTQUFvRCxFQUMzQixJQUE0QixFQUNsRCxRQUFxQjtRQUpYLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEyQztRQUMzQixTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuRCxDQUFDO0lBdkNKLG1EQUFtRDtJQUNuRCw2RUFBNkU7SUFDN0UsSUFBSTtJQUVKLG1EQUFtRDtJQUNuRCx1RUFBdUU7SUFDdkUsSUFBSTtJQUVKLHdFQUF3RTtJQUN4RSw0Q0FBNEM7SUFDNUMsSUFBSTtJ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QUEwQjs7MEJBNkNqQyxNQUFNOzJCQUFDLGVBQWU7c0VBckNsQix1QkFBdUI7c0JBRDdCLFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IEVhQ0RGU01vZGlmaWVyIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IERGU01vZGlmaWVyc0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9kZnMtbW9kaWZpZXJzLWZvcm0vZGZzLW1vZGlmaWVycy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFYUNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25zRmxvd1N0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgREZTTW9kaWZpZXJzRGlhbG9nRGF0YSB7XG4gIGFwcGxpY2F0aW9uTG9va3VwPzogc3RyaW5nLFxuICBtb2RpZmllckxvb2t1cD86IHN0cmluZztcbiAgbW9kaWZpZXJzOiAgeyBbbG9va3VwOiBzdHJpbmddOiBFYUNERlNNb2RpZmllciB9O1xuICBsZXZlbDogc3RyaW5nO1xuICBwcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3UtZGZzLW1vZGlmaWVycy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGZzLW1vZGlmaWVycy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgREZTTW9kaWZpZXJzRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKERGU01vZGlmaWVyc0Zvcm1Db21wb25lbnQpXG4gIHB1YmxpYyBERlNNb2RpZmVyc0Zvcm1Db250cm9sczogREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudDtcblxuICAvLyBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uKCk6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIHtcbiAgLy8gICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5BcHBsaWNhdGlvbnNbdGhpcy5kYXRhLmFwcGxpY2F0aW9uTG9va3VwXSB8fCB7fTtcbiAgLy8gfVxuXG4gIC8vIHB1YmxpYyBnZXQgRW52aXJvbm1lbnQoKTogRWFDRW52aXJvbm1lbnRBc0NvZGUge1xuICAvLyAgIHJldHVybiB0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50c1t0aGlzLmRhdGEuZW52aXJvbm1lbnRMb29rdXBdO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGdldCBTb3VyY2VDb250cm9scygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ1NvdXJjZUNvbnRyb2wgfSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMgfHwge307XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAvLyAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLkVudmlyb25tZW50Py5Tb3VyY2VzIHx8IHt9KTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBnZXQgU3RhdGUoKTogQXBwbGljYXRpb25zRmxvd1N0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5lYWNTdmMuU3RhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFByb2plY3RMb29rdXBzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5TdGF0ZT8uRWFDPy5Qcm9qZWN0cyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERGU01vZGlmZXJzRm9ybUdyb3VwKCk6IEZvcm1Hcm91cHtcbiAgICByZXR1cm4gdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scz8uTW9kaWZpZXJGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgcHVibGljIE1vZGlmaWVyRGlhbG9nRm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2UsIFxuICAgIHB1YmxpYyBmb3JtYmxkcjogRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERGU01vZGlmaWVyc0RpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBERlNNb2RpZmllcnNEaWFsb2dEYXRhLFxuICAgIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgIHRoaXMuTW9kaWZpZXJEaWFsb2dGb3JtID0gdGhpcy5mb3JtYmxkci5ncm91cCh7fSk7XG4gICAgIFxuICAgICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKFwiTURGIGxvb2t1cCBhdCBkaWFsb2c6IFwiLCB0aGlzLmRhdGEubW9kaWZpZXJMb29rdXApO1xuICAgIGNvbnNvbGUubG9nKFwiTU9EUzogXCIsIHRoaXMuZGF0YS5tb2RpZmllcnMpO1xuICAgIHRoaXMuZGV0ZXJtaW5lTGV2ZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBDbG9zZURpYWxvZygpe1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgSGFuZGxlU2F2ZUZvcm1FdmVudChldmVudDogU3RhdHVzKXtcbiAgICBjb25zb2xlLmxvZyhcImV2ZW50OiBcIiwgZXZlbnQpO1xuICAgIGlmIChldmVudC5Db2RlID09PSAwKXtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcIkRGUyBNb2RpZmllciBTYXZlZCBTdWNjZXNzZnVsbHlcIiwgXCJEaXNtaXNzXCIse1xuICAgICAgICBkdXJhdGlvbjogNTAwMFxuICAgICAgfSk7XG4gICAgICB0aGlzLkNsb3NlRGlhbG9nKCk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLkVycm9yTWVzc2FnZSA9IGV2ZW50Lk1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgXG5cbiAgcHVibGljIFNhdmVERlNNb2RpZmllcigpe1xuICAgIHN3aXRjaCh0aGlzLmRhdGEubGV2ZWwpe1xuICAgICAgY2FzZSBcImVudGVycHJpc2VcIjp7XG4gICAgICAgIGlmKHRoaXMuTW9kaWZpZXJEaWFsb2dGb3JtLmNvbnRyb2xzLmFwcGx5VG9BbGxQcm9qZWN0cy52YWx1ZSl7XG4gICAgICAgICAgLy9zYXZlIG1vZGlmaWVyIGFkZCBpdCB0byB0aGUgTW9kaWZpZXJMb29rdXBzIG9mIGFsbCBwcm9qZWN0c1xuICAgICAgICAgIHRoaXMuREZTTW9kaWZlcnNGb3JtQ29udHJvbHMuU2F2ZU1vZGlmaWVyRm9yQWxsUHJvamVjdHModGhpcy5Qcm9qZWN0TG9va3VwcylcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIC8vc2F2ZSBtb2RpZmllclxuICAgICAgICAgIHRoaXMuREZTTW9kaWZlcnNGb3JtQ29udHJvbHMuU2F2ZU1vZGlmaWVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwcm9qZWN0XCI6IHtcbiAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIodGhpcy5kYXRhLnByb2plY3RMb29rdXApO1xuXG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvblwiOiB7XG4gICAgICAgIC8vYXBwbHkgbW9kaWZpZXIgdG8gYXBwbGljYXRpb25cbiAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXJGb3JBcHBsaWNhdGlvbih0aGlzLmRhdGEuYXBwbGljYXRpb25Mb29rdXApXG5cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIoKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGRldGVybWluZUxldmVsKCl7XG4gICAgc3dpdGNoKHRoaXMuZGF0YS5sZXZlbCl7XG4gICAgICBjYXNlIFwiZW50ZXJwcmlzZVwiOntcbiAgICAgICAgdGhpcy5zZXR1cEVudEZvcm0oKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEVudEZvcm0oKXtcbiAgICB0aGlzLk1vZGlmaWVyRGlhbG9nRm9ybS5hZGRDb250cm9sKFxuICAgICAgJ2FwcGx5VG9BbGxQcm9qZWN0cycsXG4gICAgICB0aGlzLmZvcm1ibGRyLmNvbnRyb2woZmFsc2UpXG4gICAgKTtcbiAgfSBcblxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5ERlMgTW9kaWZpZXJzPC9oMj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJDbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuXG5cbiAgICAgICAgPGxjdS1kZnMtbW9kaWZpZXItZm9ybVxuICAgICAgICBbZWRpdGluZy1tb2RpZmllci1sb29rdXBdPVwiZGF0YS5tb2RpZmllckxvb2t1cFwiXG4gICAgICAgIFttb2RpZmllcnNdPVwiZGF0YS5tb2RpZmllcnNcIlxuICAgICAgICBbbGV2ZWxdPVwiZGF0YS5sZXZlbFwiXG4gICAgICAgID5cblxuICAgICAgICA8L2xjdS1kZnMtbW9kaWZpZXItZm9ybT5cblxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiTW9kaWZpZXJEaWFsb2dGb3JtXCJcbiAgICAgICAgPlxuXG4gICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJkYXRhLmxldmVsID09PSAnZW50ZXJwcmlzZSdcIiBmb3JtQ29udHJvbE5hbWU9XCJhcHBseVRvQWxsUHJvamVjdHNcIj5BcHBseSB0byBhbGwgUHJvamVjdHM8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9mb3JtPlxuXG48bWF0LWVycm9yICpuZ0lmPVwiRXJyb3JNZXNzYWdlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiA+XG4gICAge3sgRXJyb3JNZXNzYWdlIH19XG48L21hdC1lcnJvcj5cblxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgXG4gICAgICAgIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIiBcbiAgICAgICAgZGl2IGZ4TGF5b3V0PVwicm93XCIgXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCJcbj5cbiAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZnhGbGV4PVwiMjUlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuXG4gICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgPCEtLSAgLS0+XG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICAgKm5nSWY9XCIhU3RhdGU/LkxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIyNSVcIiBcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBcbiAgICAgICAgICAoY2xpY2spPVwiU2F2ZURGU01vZGlmaWVyKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXRoaXMuREZTTW9kaWZlcnNGb3JtR3JvdXA/LnZhbGlkIHx8ICF0aGlzLk1vZGlmaWVyRGlhbG9nRm9ybT8udmFsaWQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIFNhdmVcbiAgICAgICAgPC9idXR0b24+XG5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG5cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZzLW1vZGlmaWVycy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZGlhbG9ncy9kZnMtbW9kaWZpZXJzLWRpYWxvZy9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9kaWFsb2dzL2Rmcy1tb2RpZmllcnMtZGlhbG9nL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBbUIzRyxNQUFNLE9BQU8sMkJBQTJCO0lBNEJ0QyxZQUFzQixNQUFrQixFQUMvQixRQUFxQixFQUNyQixTQUFvRCxFQUMzQixJQUE0QixFQUNsRCxRQUFxQjtRQUpYLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEyQztRQUMzQixTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuRCxDQUFDO0lBN0JKLElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENB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QzdCLENBQUM7SUFDSixDQUFDOzt3SEFqSFUsMkJBQTJCLG1HQStCNUIsZUFBZTs0R0EvQmQsMkJBQTJCLHlIQUUzQix5QkFBeUIsZ0RDNUJ0QyxpcERBaUVBOzJGRHZDYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCOzswQkFvQ2pDLE1BQU07MkJBQUMsZUFBZTtzRUE1QmxCLHVCQUF1QjtzQkFEN0IsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHsgRWFDREZTTW9kaWZpZXIgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2Rmcy1tb2RpZmllcnMtZm9ybS9kZnMtbW9kaWZpZXJzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBERlNNb2RpZmllcnNEaWFsb2dEYXRhIHtcbiAgYXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmcsXG4gIG1vZGlmaWVyTG9va3VwPzogc3RyaW5nO1xuICAvLyBtb2RpZmllcnM6ICB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0RGU01vZGlmaWVyIH07XG4gIGxldmVsOiBzdHJpbmc7XG4gIHByb2plY3RMb29rdXA/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjdS1kZnMtbW9kaWZpZXJzLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZnMtbW9kaWZpZXJzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rmcy1tb2RpZmllcnMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBERlNNb2RpZmllcnNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoREZTTW9kaWZpZXJzRm9ybUNvbXBvbmVudClcbiAgcHVibGljIERGU01vZGlmZXJzRm9ybUNvbnRyb2xzOiBERlNNb2RpZmllcnNGb3JtQ29tcG9uZW50O1xuXG5cbiAgcHVibGljIGdldCBTdGF0ZSgpOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUge1xuICAgIHJldHVybiB0aGlzLmVhY1N2Yy5TdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJvamVjdExvb2t1cHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlN0YXRlPy5FYUM/LlByb2plY3RzIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgREZTTW9kaWZlcnNGb3JtR3JvdXAoKTogRm9ybUdyb3Vwe1xuICAgIHJldHVybiB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzPy5Nb2RpZmllckZvcm1Hcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scz8uTW9kaWZpZXJTZWxlY3RGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgcHVibGljIE1vZGlmaWVyRGlhbG9nRm9ybTogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBTYXZlRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSwgXG4gICAgcHVibGljIGZvcm1ibGRyOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8REZTTW9kaWZpZXJzRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERGU01vZGlmaWVyc0RpYWxvZ0RhdGEsXG4gICAgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0gPSB0aGlzLmZvcm1ibGRyLmdyb3VwKHt9KTtcbiAgICAgXG4gICAgIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlcm1pbmVMZXZlbCgpO1xuICB9XG5cbiAgcHVibGljIENsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBIYW5kbGVTYXZlRm9ybUV2ZW50KGV2ZW50OiBTdGF0dXMpe1xuICAgIGNvbnNvbGUubG9nKFwiZXZlbnQ6IFwiLCBldmVudCk7XG4gICAgaWYgKGV2ZW50LkNvZGUgPT09IDApe1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiREZTIE1vZGlmaWVyIFNhdmVkIFN1Y2Nlc3NmdWxseVwiLCBcIkRpc21pc3NcIix7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwXG4gICAgICB9KTtcbiAgICAgIHRoaXMuQ2xvc2VEaWFsb2coKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMuRXJyb3JNZXNzYWdlID0gZXZlbnQuTWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgSXNEaXNhYmxlZCgpe1xuICAgIHRoaXMuU2F2ZURpc2FibGVkPXRydWU7XG4gICAgaWYodGhpcy5ERlNNb2RpZmVyc0Zvcm1Hcm91cCl7XG5cbiAgICAgIHRoaXMuU2F2ZURpc2FibGVkID0gKCF0aGlzLkRGU01vZGlmZXJzRm9ybUdyb3VwPy52YWxpZCB8fCAhdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0/LnZhbGlkKVxuICAgIH1cbiAgICBcbiAgICBlbHNlIGlmKHRoaXMuU2VsZWN0ZWRNb2RpZmllcnNGb3JtR3JvdXApe1xuICAgICAgdGhpcy5TYXZlRGlzYWJsZWQgPSAgKCF0aGlzLlNlbGVjdGVkTW9kaWZpZXJzRm9ybUdyb3VwPy52YWxpZCB8fCAhdGhpcy5TZWxlY3RlZE1vZGlmaWVyc0Zvcm1Hcm91cD8uZGlydHkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5TYXZlRGlzYWJsZWQ7XG4gIH1cblxuICBcblxuICBwdWJsaWMgU2F2ZURGU01vZGlmaWVyKCl7XG5cbiAgICBzd2l0Y2godGhpcy5kYXRhLmxldmVsKXtcbiAgICAgIGNhc2UgXCJlbnRlcnByaXNlXCI6e1xuICAgICAgICBpZih0aGlzLk1vZGlmaWVyRGlhbG9nRm9ybS5jb250cm9scy5hcHBseVRvQWxsUHJvamVjdHMudmFsdWUpe1xuICAgICAgICAgIC8vc2F2ZSBtb2RpZmllciBhZGQgaXQgdG8gdGhlIE1vZGlmaWVyTG9va3VwcyBvZiBhbGwgcHJvamVjdHNcbiAgICAgICAgICB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzLlNhdmVNb2RpZmllckZvckFsbFByb2plY3RzKHRoaXMuUHJvamVjdExvb2t1cHMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAvL3NhdmUgbW9kaWZpZXJcbiAgICAgICAgICB0aGlzLkRGU01vZGlmZXJzRm9ybUNvbnRyb2xzLlNhdmVNb2RpZmllcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIFwicHJvamVjdFwiOiB7XG4gICAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXIodGhpcy5kYXRhLnByb2plY3RMb29rdXApO1xuXG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvblwiOiB7XG4gICAgICAgICAgdGhpcy5ERlNNb2RpZmVyc0Zvcm1Db250cm9scy5TYXZlTW9kaWZpZXJGb3JBcHBsaWNhdGlvbih0aGlzLmRhdGEuYXBwbGljYXRpb25Mb29rdXApO1xuXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHRoaXMuREZTTW9kaWZlcnNGb3JtQ29udHJvbHMuU2F2ZU1vZGlmaWVyKCk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBkZXRlcm1pbmVMZXZlbCgpe1xuICAgIHN3aXRjaCh0aGlzLmRhdGEubGV2ZWwpe1xuICAgICAgY2FzZSBcImVudGVycHJpc2VcIjp7XG4gICAgICAgIHRoaXMuc2V0dXBFbnRGb3JtKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBFbnRGb3JtKCl7XG4gICAgdGhpcy5Nb2RpZmllckRpYWxvZ0Zvcm0uYWRkQ29udHJvbChcbiAgICAgICdhcHBseVRvQWxsUHJvamVjdHMnLFxuICAgICAgdGhpcy5mb3JtYmxkci5jb250cm9sKGZhbHNlKVxuICAgICk7XG4gIH0gXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+REZTIE1vZGlmaWVyczwvaDI+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cblxuXG4gICAgICAgIDxsY3UtZGZzLW1vZGlmaWVyLWZvcm1cbiAgICAgICAgW2FwcGxpY2F0aW9uLWxvb2t1cF09XCJkYXRhLmFwcGxpY2F0aW9uTG9va3VwXCJcbiAgICAgICAgW3Byb2plY3QtbG9va3VwXT1cImRhdGEucHJvamVjdExvb2t1cFwiXG4gICAgICAgIFtlZGl0aW5nLW1vZGlmaWVyLWxvb2t1cF09XCJkYXRhLm1vZGlmaWVyTG9va3VwXCJcbiAgICAgICAgW2xldmVsXT1cImRhdGEubGV2ZWxcIlxuICAgICAgICA+XG5cbiAgICAgICAgPC9sY3UtZGZzLW1vZGlmaWVyLWZvcm0+XG5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cIk1vZGlmaWVyRGlhbG9nRm9ybVwiXG4gICAgICAgID5cblxuICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiZGF0YS5sZXZlbCA9PT0gJ2VudGVycHJpc2UnICYmIGRhdGEubW9kaWZpZXJMb29rdXBcIiBmb3JtQ29udHJvbE5hbWU9XCJhcHBseVRvQWxsUHJvamVjdHNcIj5BcHBseSB0byBhbGwgUHJvamVjdHM8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9mb3JtPlxuXG48bWF0LWVycm9yICpuZ0lmPVwiRXJyb3JNZXNzYWdlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiA+XG4gICAge3sgRXJyb3JNZXNzYWdlIH19XG48L21hdC1lcnJvcj5cblxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgXG4gICAgICAgIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIiBcbiAgICAgICAgZGl2IGZ4TGF5b3V0PVwicm93XCIgXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCJcbj5cbiAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZnhGbGV4PVwiMjUlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiQ2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuXG4gICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgPCEtLSAgLS0+XG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICAgKm5nSWY9XCIhU3RhdGU/LkxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIyNSVcIiBcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBcbiAgICAgICAgICAoY2xpY2spPVwiU2F2ZURGU01vZGlmaWVyKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJJc0Rpc2FibGVkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgU2F2ZVxuICAgICAgICA8L2J1dHRvbj5cblxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG5cblxuIl19