@the-liberators/ngx-scrumteamsurvey-tools 2.2.83 → 2.2.84

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.
@@ -13,10 +13,11 @@ import * as i3 from "../../../viewModel/userSettings.service";
13
13
  import * as i4 from "@angular/material/snack-bar";
14
14
  import * as i5 from "@angular/forms";
15
15
  import * as i6 from "@angular/common";
16
- import * as i7 from "@angular/material/core";
17
- import * as i8 from "@angular/material/form-field";
18
- import * as i9 from "@angular/material/select";
19
- import * as i10 from "../../../viewModel/viewModelState.service";
16
+ import * as i7 from "@angular/material/tooltip";
17
+ import * as i8 from "@angular/material/core";
18
+ import * as i9 from "@angular/material/form-field";
19
+ import * as i10 from "@angular/material/select";
20
+ import * as i11 from "../../../viewModel/viewModelState.service";
20
21
  export class DialogSettingsComponent extends ComponentWithViewStateBase {
21
22
  constructor(dialogRef, factorService, userSettingsService, snackBar, formBuilder, state) {
22
23
  super(state, snackBar);
@@ -128,12 +129,12 @@ export class DialogSettingsComponent extends ComponentWithViewStateBase {
128
129
  }
129
130
  ;
130
131
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.FactorService }, { token: i3.UserSettingService }, { token: i4.MatSnackBar }, { token: i5.FormBuilder }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only use most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
132
133
  }
133
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, decorators: [{
134
135
  type: Component,
135
- args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only use most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
136
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.FactorService }, { type: i3.UserSettingService }, { type: i4.MatSnackBar }, { type: i5.FormBuilder }, { type: i10.ViewModelStateBase, decorators: [{
136
+ args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
137
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.FactorService }, { type: i3.UserSettingService }, { type: i4.MatSnackBar }, { type: i5.FormBuilder }, { type: i11.ViewModelStateBase, decorators: [{
137
138
  type: Inject,
138
139
  args: [VIEWSTATE_PROVIDER]
139
140
  }] }] });
@@ -164,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
164
165
  type: HostListener,
165
166
  args: ['click']
166
167
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2RpYWxvZ3MvZGlhbG9nLXNldHRpbmdzL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9kaWFsb2dzL2RpYWxvZy1zZXR0aW5ncy9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFFdkcsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzlELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwwQkFBeUM7SUE4Qm5GLFlBQW1CLFNBQWdELEVBQVUsYUFBNEIsRUFBVSxtQkFBdUMsRUFBWSxRQUFxQixFQUFVLFdBQXdCLEVBQXNDLEtBQXdDO1FBQ3hTLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFB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QUM7SUFDM0QsQ0FBQzs4R0FmUywyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDUixRQUFRLEVBQUUsa0JBQWtCO2lCQUM5Qjs4RUFFVyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTU4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2VsZWN0TGlzdEl0ZW0nO1xuaW1wb3J0IHsgSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZSwgTW9kZWxGaWx0ZXIsIFVzZXJTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyU2V0dGluZ3NEdG8nO1xuaW1wb3J0IHsgVXNlclNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3VzZXJTZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdNb2RlbFN0YXRlQmFzZSwgVklFV1NUQVRFX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3ZpZXdNb2RlbFN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVJlc3VsdHNTdGF0ZSwgSVRlYW1SZXBvcnRSZXN1bHRzU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1bHRzU3RhdGUnO1xuaW1wb3J0IHsgUXVhbGlmaWVkQnlFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZhY3RvclNjb3JlRHRvJztcbmltcG9ydCB7IEZhY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JTZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1NldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2U8SVJlc3VsdHNTdGF0ZT4ge1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBzZW5kaW5nOiBib29sZWFuO1xuICAgcHJpdmF0ZSBzZXR0aW5nczogVXNlclNldHRpbmdzRHRvO1xuICAgcHVibGljIGZhY3RvcnM6IFNlbGVjdEl0ZW1bXTtcbiAgIHB1YmxpYyBpc1NpbmdsZVRlYW06IGJvb2xlYW47XG4gICBwdWJsaWMgaXNTdWJzY3JpYmVyOiBib29sZWFuO1xuICAgcHVibGljIG1vZGVsRmlsdGVyU2V0dGluZ3M6IE1vZGVsRmlsdGVyO1xuICAgcHVibGljIGJlbmNobWFya1R5cGVzOiBTZWxlY3RJdGVtW10gPSBbXVxuICAgcHVibGljIGRlbHRhUGVyaW9kczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJOb25lXCIsIFwiRG9uJ3QgY29tcGFyZSAoc2hvd3MgcmVzdWx0cyBmcm9tIHBhc3QgMTIgbW9udGhzKVwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNNb250aFwiLCBcIkNvbXBhcmUgY3VycmVudCBtb250aCB3aXRoIHByZXZpb3VzIG1vbnRoXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1F1YXJ0ZXJcIiwgXCJDb21wYXJlIHJlY2VudCAzIG1vbnRocyB3aXRoIHByZXZpb3VzIDMgbW9udGhzXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c0hhbGZZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgNiBtb250aHMgd2l0aCBwcmV2aW91cyA2IG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgMTIgbW9udGhzIHdpdGggcHJldmlvdXMgMTIgbW9udGhzXCIpXG4gICBdXG5cbiAgIHB1YmxpYyBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5BbGwudG9TdHJpbmcoKSwgXCJTaG93IGJvdGggb3BlbiB2cyBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seU9wZW4udG9TdHJpbmcoKSwgXCJTaG93IG9ubHkgb3BlbiBhY3Rpb25zXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Pbmx5Q29tcGxldGVkLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IGNvbXBsZXRlZCBhY3Rpb25zXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Ob25lLnRvU3RyaW5nKCksIFwiSGlkZSBhY3Rpb25zXCIpXG4gICBdXG5cbiAgIHB1YmxpYyBxdWFsaWZ5QnlUeXBlczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmJlbmNobWFyay50b1N0cmluZygpLCBcIkFnYWluc3QgYmVuY2htYXJrXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmRlbHRhLnRvU3RyaW5nKCksIFwiQWdhaW5zdCBwcmV2aW91cyBwZXJpb2Qgb3Igc25hcHNob3RcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShRdWFsaWZpZWRCeUVudW0ubm9uZS50b1N0cmluZygpLCBcIk5vIGNvbXBhcmlzb25cIiksXG4gICBdXG5cbiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dTZXR0aW5nc0NvbXBvbmVudD4sIHByaXZhdGUgZmFjdG9yU2VydmljZTogRmFjdG9yU2VydmljZSwgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJpdmF0ZSBzdGF0ZTogVmlld01vZGVsU3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+KSB7XG4gICAgICBzdXBlcihzdGF0ZSwgc25hY2tCYXIpXG4gICB9XG5cbiAgIG5nT25Jbml0KCkge1xuICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgfVxuXG4gICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIHRoaXMuc2VuZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5iZW5jaG1hcmsgPSB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmRlbHRhUGVyaW9kID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRlbHRhUGVyaW9kLnZhbHVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzID0gdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy52YWx1ZTtcbiAgICAgIHZhciBvdGhlck1vZGVsRmFjdG9ycyA9IHRoaXMuZm9ybS5jb250cm9scy5vdGhlck1vZGVsT3ZlcnZpZXdGYWN0b3JzLnZhbHVlO1xuXG4gICAgICBpZiAob3RoZXJNb2RlbEZhY3RvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzID0gdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmNvbmNhdChvdGhlck1vZGVsRmFjdG9ycy5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5pbmRleE9mKGl0ZW0pIDwgMCkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5xdWFsaWZ5QnkgPSB0aGlzLmZvcm0uY29udHJvbHMucXVhbGlmeUJ5LnZhbHVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwuc3RhY2tpbmcgPSB0aGlzLmZvcm0uY29udHJvbHMuc3RhY2tpbmcudmFsdWUgPT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLnNldHRpbmdzLnVzZXIubW9kZWxGaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyID0gdGhpcy5mb3JtLmNvbnRyb2xzLmludGVydmVudGlvbkZpbHRlclR5cGUudmFsdWU7XG4gICAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2Uuc2V0KHRoaXMuc2V0dGluZ3MpO1xuICAgICAgdGhpcy5zdGF0ZS5mb3JjZWRSZWxvYWQoKTtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICB0aGlzLnNob3dTdWNjZXNzKFwiV2UgdXBkYXRlZCB5b3VyIHNldHRpbmdzLiBXZSBhcmUgbm93IHJlbG9hZGluZyB0aGUgcmVzdWx0cy5cIik7XG4gICAgICB0aGlzLnNlbmRpbmcgPSBmYWxzZTtcbiAgIH1cblxuICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICBkZWx0YVBlcmlvZDogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBiZW5jaG1hcmtUeXBlOiBbeyB2YWx1ZTogXCJcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHF1YWxpZnlCeTogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBvdmVydmlld0ZhY3RvcnM6IFt7IHZhbHVlOiBudWxsIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgb3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9yczogW3sgdmFsdWU6IG51bGwgfV0sXG4gICAgICAgICBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlOiBbeyB2YWx1ZTogbnVsbCB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHN0YWNraW5nOiBbeyB2YWx1ZTogXCJmYWxzZVwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICB9KTtcbiAgIH07XG5cbiAgIHByb3RlY3RlZCBvbkRhdGFVcGRhdGUoZGF0YTogSVJlc3VsdHNTdGF0ZSk6IHZvaWQge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXQoKTtcbiAgICAgIHRoaXMuaXNTdWJzY3JpYmVyID0gZGF0YS5pc1N1YnNjcmliZXI7XG4gICAgICB0aGlzLmlzU2luZ2xlVGVhbSA9IGRhdGEudGVhbU1ldGFEYXRhICE9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLmlzU3Vic2NyaWJlcikge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmJlbmNobWFya1R5cGUuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLmRpc2FibGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iZW5jaG1hcmtUeXBlcyA9IGRhdGEuZmFjdG9yU2NvcmVzLmJlbmNobWFyay5hdmFpbGFibGUubWFwKHAgPT4gbmV3IFNlbGVjdEl0ZW0ocC5rZXksIHAubmFtZSkpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRlbHRhUGVyaW9kLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmRlbHRhUGVyaW9kKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmJlbmNobWFyayk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhY2tpbmcuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwuc3RhY2tpbmcgPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnVzZXIubW9kZWxGaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5xdWFsaWZ5Qnkuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwucXVhbGlmeUJ5ID8/IGRhdGEuZmFjdG9yU2NvcmVzLnByb2Nlc3NpbmdEYXRhLnF1YWxpZmllZEJ5KTtcbiAgICAgIHRoaXMuZmFjdG9ycyA9IHRoaXMuZmFjdG9yU2VydmljZS50b1NlbGVjdExpc3QoZGF0YS5mYWN0b3JTY29yZXMubW9kZWxTdHJ1Y3R1cmUpO1xuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3ZlcnZpZXdGYWN0b3JzLnNldFZhbHVlKGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlLmRlZmluaXRpb24uZmFjdG9ycy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSA9PSBudWxsKS5tYXAocCA9PiBwLnB1YmxpY0tleSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3ZlcnZpZXdGYWN0b3JzLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMuZmlsdGVyKHAgPT4gdGhpcy5mYWN0b3JzLmZpbmQoeCA9PiB4LnZhbHVlID09IHApID09IG51bGwpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZWx0YVBlcmlvZHMgPSBbXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIk5vbmVcIiwgXCJEb24ndCBjb21wYXJlIChzaG93cyByZXN1bHRzIGZyb20gcGFzdCAxMiBtb250aHMpXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c01vbnRoXCIsIFwiQ29tcGFyZSBjdXJyZW50IG1vbnRoIHdpdGggcHJldmlvdXMgbW9udGhcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzUXVhcnRlclwiLCBcIkNvbXBhcmUgcmVjZW50IDMgbW9udGhzIHdpdGggcHJldmlvdXMgMyBtb250aHNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzSGFsZlllYXJcIiwgXCJDb21wYXJlIHJlY2VudCA2IG1vbnRocyB3aXRoIHByZXZpb3VzIDYgbW9udGhzXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1llYXJcIiwgXCJDb21wYXJlIHJlY2VudCAxMiBtb250aHMgd2l0aCBwcmV2aW91cyAxMiBtb250aHNcIilcbiAgICAgIF1cblxuICAgICAgdGhpcy5pbnRlcnZlbnRpb25GaWx0ZXJUeXBlcyA9IFtcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuQWxsLnRvU3RyaW5nKCksIFwiU2hvdyBib3RoIG9wZW4gdnMgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlPcGVuLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IG9wZW4gYWN0aW9uc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seUNvbXBsZXRlZC50b1N0cmluZygpLCBcIlNob3cgb25seSBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuTm9uZS50b1N0cmluZygpLCBcIkhpZGUgYWN0aW9uc1wiKVxuICAgICAgXVxuXG4gICAgICB0aGlzLnF1YWxpZnlCeVR5cGVzID0gW1xuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmJlbmNobWFyay50b1N0cmluZygpLCBcIkFnYWluc3QgYmVuY2htYXJrXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmRlbHRhLnRvU3RyaW5nKCksIHRoaXMuaXNTaW5nbGVUZWFtID8gXCJBZ2FpbnN0IHByZXZpb3VzIHNuYXBzaG90XCIgOiBcIkFnYWluc3QgcHJldmlvdXMgcGVyaW9kXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLm5vbmUudG9TdHJpbmcoKSwgXCJObyBjb21wYXJpc29uXCIpLFxuICAgICAgXVxuICAgfTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICBzZWxlY3RvcjogJ1tzZXR0aW5nc0RpYWxvZ10nLFxufSlcbmV4cG9ydCBjbGFzcyBPcGVuU2V0dGluZ3NEaWFsb2dEaXJlY3RpdmUge1xuICAgQElucHV0KCkgc2hvd1NldHRpbmdTdGFja2luZzogYm9vbGVhbjtcblxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSBbJ2RpYWxvZycsICdzZXR0aW5ncyddO1xuICAgICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IGZhbHNlO1xuICAgICAgZGlhbG9nQ29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgZGlhbG9nQ29uZmlnLmV4aXRBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgICBkaWFsb2dDb25maWcuZGF0YSA9IHt9O1xuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dTZXR0aW5nc0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICA8aDEgbWF0LWRpYWxvZy10aXRsZT5TdGF0aXN0aWNhbCBTZXR0aW5nczwvaDE+XG4gICA8ZGl2IGNsYXNzPVwiY2xvc2VcIiBtYXQtZGlhbG9nLWNsb3NlPjxpIGNsYXNzPVwicmVzcG9uc2l2ZSBpY29uIHBoLXgtYm9sZFwiID48L2k+PC9kaXY+XG48L2Rpdj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImludGVydmVudGlvbkZpbHRlclR5cGVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGFjdGlvbiB0b3RhbHMgZG8geW91IHdhbnQgdG8gc2VlIHVuZGVyICdJbnNpZ2h0cyc/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImludGVydmVudGlvbmZpbHRlci1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImludGVydmVudGlvbkZpbHRlclR5cGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGludGVydmVudGlvbkZpbHRlclR5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInF1YWxpZnlCeVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hhdCBzaG91bGQgd2UgY29tcGFyZSB3aXRoIChkZXRlcm1pbmVzIGNvbG9ycyk/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cInF1YWxpZnlCeS1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cInF1YWxpZnlCeVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVhbGlmeUJ5VHlwZXNcIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwic3RhY2tpbmdcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgKm5nSWY9XCJpc1NpbmdsZVRlYW1cIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+Q29tYmluZSBzbmFwc2hvdHMgKHRvIG1lcmdlIGZvY3VzIHNuYXBzaG90cyk/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cInN0YWNraW5nLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhY2tpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFt2YWx1ZV09XCInZmFsc2UnXCI+Tm8sIG9ubHkgdXNlIG1vc3QgcmVjZW50IHNuYXBzaG90PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgW3ZhbHVlXT1cIid0cnVlJ1wiPlllcywgY29tYmluZSBhbmQgdXNlIG1vc3QgcmVjZW50IG1lYXN1cmU8L21hdC1vcHRpb24+XG4gICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJiZW5jaG1hcmtcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGJlbmNobWFyayBzaG91bGQgd2UgdXNlPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJiZW5jaG1hcmstZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJiZW5jaG1hcmtUeXBlXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBiZW5jaG1hcmtUeXBlc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzU3Vic2NyaWJlclwiIGNsYXNzPVwibWVzc2FnZSBtZXNzYWdlLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICA8c3BhbiBjbGFzcz1cInBoLWluZm8tZmlsbCBpY29uXCI+PC9zcGFuPlxuICAgICAgICAgRWFnZXIgdG8gc2VlIGhvdyB5b3VyIHRlYW0gY29tcGFyZXMgdG8gb3RoZXIgYmVuY2htYXJrcz8gU3Vic2NyaWJlIHRvIHVubG9jayBkb3plbnMgb2YgYmVuY2htYXJrcywgaW5jbHVkaW5nIHRoZSAnVG9wIDEwMCBtb3N0IGVmZmVjdGl2ZSB0ZWFtcycsIGJlbmNobWFya3MgZm9yIHdvcmxkIHJlZ2lvbnMsIHNlY3RvcnMsIHNjYWxpbmcgZnJhbWV3b3JrcyBhbmQgeW91ciBvcmdhbml6YXRpb24uXG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1NpbmdsZVRlYW1cIj5cbiAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRlbHRhUGVyaW9kXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5XaGljaCBwZXJpb2RzIHNob3VsZCB3ZSBjb21wYXJlPzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJkZWx0YVBlcmlvZC1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImRlbHRhUGVyaW9kXCI+XG4gICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWx0YVBlcmlvZHNcIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwib3ZlcnZpZXdGYWN0b3JzXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5XaGljaCBmYWN0b3JzIHNob3VsZCB3ZSBzaG93IGluIHRoZSBvdmVydmlldz88L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwib3ZlcnZpZXdGYWN0b3JzLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwib3ZlcnZpZXdGYWN0b3JzXCIgbXVsdGlwbGU+XG4gICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbbmdDbGFzc109XCJ7J2xvd2VyJyA6IGZhY3Rvci5sb3dlcn1cIiAqbmdGb3I9XCJsZXQgZmFjdG9yIG9mIGZhY3RvcnNcIiBbdmFsdWVdPVwiZmFjdG9yLnZhbHVlXCI+e3tmYWN0b3IubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIj5cbiAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBzZW5kaW5nIH1cIj5zdWJtaXQ8L2J1dHRvbj5cbiAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiBtYXQtZGlhbG9nLWNsb3NlPmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICA8L2Zvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2RpYWxvZ3MvZGlhbG9nLXNldHRpbmdzL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9kaWFsb2dzL2RpYWxvZy1zZXR0aW5ncy9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFFdkcsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU85RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMEJBQXlDO0lBOEJuRixZQUFtQixTQUFnRCxFQUFVLGFBQTRCLEVBQVUsbUJBQXVDLEVBQVksUUFBcUIsRUFBVSxXQUF3QixFQUFzQyxLQUF3QztRQUN4UyxLQUFLLENBQUMsS0FBSyxFQUFFLFFB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QUFDO0lBQzNELENBQUM7OEdBZlMsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSHZDLFNBQVM7bUJBQUM7b0JBQ1IsUUFBUSxFQUFFLGtCQUFrQjtpQkFDOUI7OEVBRVcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSc7XG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NlbGVjdExpc3RJdGVtJztcbmltcG9ydCB7IEludGVydmVudGlvbkZpbHRlclR5cGUsIE1vZGVsRmlsdGVyLCBVc2VyU2V0dGluZ3NEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlclNldHRpbmdzRHRvJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC91c2VyU2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElSZXN1bHRzU3RhdGUsIElUZWFtUmVwb3J0UmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IFF1YWxpZmllZEJ5RW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9mYWN0b3JTY29yZUR0byc7XG5pbXBvcnQgeyBGYWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yU2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+IHtcbiAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gICBwdWJsaWMgc2VuZGluZzogYm9vbGVhbjtcbiAgIHByaXZhdGUgc2V0dGluZ3M6IFVzZXJTZXR0aW5nc0R0bztcbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG4gICBwdWJsaWMgaXNTaW5nbGVUZWFtOiBib29sZWFuO1xuICAgcHVibGljIGlzU3Vic2NyaWJlcjogYm9vbGVhbjtcbiAgIHB1YmxpYyBtb2RlbEZpbHRlclNldHRpbmdzOiBNb2RlbEZpbHRlcjtcbiAgIHB1YmxpYyBiZW5jaG1hcmtUeXBlczogU2VsZWN0SXRlbVtdID0gW11cbiAgIHB1YmxpYyBkZWx0YVBlcmlvZHM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiTm9uZVwiLCBcIkRvbid0IGNvbXBhcmUgKHNob3dzIHJlc3VsdHMgZnJvbSBwYXN0IDEyIG1vbnRocylcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzTW9udGhcIiwgXCJDb21wYXJlIGN1cnJlbnQgbW9udGggd2l0aCBwcmV2aW91cyBtb250aFwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNRdWFydGVyXCIsIFwiQ29tcGFyZSByZWNlbnQgMyBtb250aHMgd2l0aCBwcmV2aW91cyAzIG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNIYWxmWWVhclwiLCBcIkNvbXBhcmUgcmVjZW50IDYgbW9udGhzIHdpdGggcHJldmlvdXMgNiBtb250aHNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzWWVhclwiLCBcIkNvbXBhcmUgcmVjZW50IDEyIG1vbnRocyB3aXRoIHByZXZpb3VzIDEyIG1vbnRoc1wiKVxuICAgXVxuXG4gICBwdWJsaWMgaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZXM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuQWxsLnRvU3RyaW5nKCksIFwiU2hvdyBib3RoIG9wZW4gdnMgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlPcGVuLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IG9wZW4gYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seUNvbXBsZXRlZC50b1N0cmluZygpLCBcIlNob3cgb25seSBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuTm9uZS50b1N0cmluZygpLCBcIkhpZGUgYWN0aW9uc1wiKVxuICAgXVxuXG4gICBwdWJsaWMgcXVhbGlmeUJ5VHlwZXM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5iZW5jaG1hcmsudG9TdHJpbmcoKSwgXCJBZ2FpbnN0IGJlbmNobWFya1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5kZWx0YS50b1N0cmluZygpLCBcIkFnYWluc3QgcHJldmlvdXMgcGVyaW9kIG9yIHNuYXBzaG90XCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLm5vbmUudG9TdHJpbmcoKSwgXCJObyBjb21wYXJpc29uXCIpLFxuICAgXVxuXG4gICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nU2V0dGluZ3NDb21wb25lbnQ+LCBwcml2YXRlIGZhY3RvclNlcnZpY2U6IEZhY3RvclNlcnZpY2UsIHByaXZhdGUgdXNlclNldHRpbmdzU2VydmljZTogVXNlclNldHRpbmdTZXJ2aWNlLCBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgQEluamVjdChWSUVXU1RBVEVfUFJPVklERVIpIHByaXZhdGUgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKVxuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgIH1cblxuICAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7IHJldHVybjsgfVxuXG4gICAgICB0aGlzLnNlbmRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwuYmVuY2htYXJrID0gdGhpcy5mb3JtLmNvbnRyb2xzLmJlbmNobWFya1R5cGUudmFsdWU7XG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5kZWx0YVBlcmlvZCA9IHRoaXMuZm9ybS5jb250cm9scy5kZWx0YVBlcmlvZC52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyA9IHRoaXMuZm9ybS5jb250cm9scy5vdmVydmlld0ZhY3RvcnMudmFsdWU7XG4gICAgICB2YXIgb3RoZXJNb2RlbEZhY3RvcnMgPSB0aGlzLmZvcm0uY29udHJvbHMub3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9ycy52YWx1ZTtcblxuICAgICAgaWYgKG90aGVyTW9kZWxGYWN0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyA9IHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5jb25jYXQob3RoZXJNb2RlbEZhY3RvcnMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMuaW5kZXhPZihpdGVtKSA8IDApKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwucXVhbGlmeUJ5ID0gdGhpcy5mb3JtLmNvbnRyb2xzLnF1YWxpZnlCeS52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnN0YWNraW5nID0gdGhpcy5mb3JtLmNvbnRyb2xzLnN0YWNraW5nLnZhbHVlID09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdGhpcy5zZXR0aW5ncy51c2VyLm1vZGVsRmlsdGVyLmludGVydmVudGlvbkZpbHRlciA9IHRoaXMuZm9ybS5jb250cm9scy5pbnRlcnZlbnRpb25GaWx0ZXJUeXBlLnZhbHVlO1xuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnNldCh0aGlzLnNldHRpbmdzKTtcbiAgICAgIHRoaXMuc3RhdGUuZm9yY2VkUmVsb2FkKCk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5zaG93U3VjY2VzcyhcIldlIHVwZGF0ZWQgeW91ciBzZXR0aW5ncy4gV2UgYXJlIG5vdyByZWxvYWRpbmcgdGhlIHJlc3VsdHMuXCIpO1xuICAgICAgdGhpcy5zZW5kaW5nID0gZmFsc2U7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgZGVsdGFQZXJpb2Q6IFt7IHZhbHVlOiBcIlwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgYmVuY2htYXJrVHlwZTogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBxdWFsaWZ5Qnk6IFt7IHZhbHVlOiBcIlwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgb3ZlcnZpZXdGYWN0b3JzOiBbeyB2YWx1ZTogbnVsbCB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIG90aGVyTW9kZWxPdmVydmlld0ZhY3RvcnM6IFt7IHZhbHVlOiBudWxsIH1dLFxuICAgICAgICAgaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZTogW3sgdmFsdWU6IG51bGwgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBzdGFja2luZzogW3sgdmFsdWU6IFwiZmFsc2VcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgfSk7XG4gICB9O1xuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElSZXN1bHRzU3RhdGUpOiB2b2lkIHtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UuZ2V0KCk7XG4gICAgICB0aGlzLmlzU3Vic2NyaWJlciA9IGRhdGEuaXNTdWJzY3JpYmVyO1xuICAgICAgdGhpcy5pc1NpbmdsZVRlYW0gPSBkYXRhLnRlYW1NZXRhRGF0YSAhPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy5pc1N1YnNjcmliZXIpIHtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLmVuYWJsZSgpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS5kaXNhYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmVuY2htYXJrVHlwZXMgPSBkYXRhLmZhY3RvclNjb3Jlcy5iZW5jaG1hcmsuYXZhaWxhYmxlLm1hcChwID0+IG5ldyBTZWxlY3RJdGVtKHAua2V5LCBwLm5hbWUpKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5kZWx0YVBlcmlvZC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5kZWx0YVBlcmlvZCk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5iZW5jaG1hcmspO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YWNraW5nLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnN0YWNraW5nID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmludGVydmVudGlvbkZpbHRlclR5cGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy51c2VyLm1vZGVsRmlsdGVyLmludGVydmVudGlvbkZpbHRlcik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbGlmeUJ5LnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnF1YWxpZnlCeSA/PyBkYXRhLmZhY3RvclNjb3Jlcy5wcm9jZXNzaW5nRGF0YS5xdWFsaWZpZWRCeSk7XG4gICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmZhY3RvclNlcnZpY2UudG9TZWxlY3RMaXN0KGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlKTtcblxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZShkYXRhLmZhY3RvclNjb3Jlcy5tb2RlbFN0cnVjdHVyZS5kZWZpbml0aW9uLmZhY3RvcnMuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gbnVsbCkubWFwKHAgPT4gcC5wdWJsaWNLZXkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm90aGVyTW9kZWxPdmVydmlld0ZhY3RvcnMuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmZpbHRlcihwID0+IHRoaXMuZmFjdG9ycy5maW5kKHggPT4geC52YWx1ZSA9PSBwKSA9PSBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVsdGFQZXJpb2RzID0gW1xuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJOb25lXCIsIFwiRG9uJ3QgY29tcGFyZSAoc2hvd3MgcmVzdWx0cyBmcm9tIHBhc3QgMTIgbW9udGhzKVwiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNNb250aFwiLCBcIkNvbXBhcmUgY3VycmVudCBtb250aCB3aXRoIHByZXZpb3VzIG1vbnRoXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1F1YXJ0ZXJcIiwgXCJDb21wYXJlIHJlY2VudCAzIG1vbnRocyB3aXRoIHByZXZpb3VzIDMgbW9udGhzXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c0hhbGZZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgNiBtb250aHMgd2l0aCBwcmV2aW91cyA2IG1vbnRoc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgMTIgbW9udGhzIHdpdGggcHJldmlvdXMgMTIgbW9udGhzXCIpXG4gICAgICBdXG5cbiAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZXMgPSBbXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLkFsbC50b1N0cmluZygpLCBcIlNob3cgYm90aCBvcGVuIHZzIGNvbXBsZXRlZCBhY3Rpb25zXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Pbmx5T3Blbi50b1N0cmluZygpLCBcIlNob3cgb25seSBvcGVuIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlDb21wbGV0ZWQudG9TdHJpbmcoKSwgXCJTaG93IG9ubHkgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk5vbmUudG9TdHJpbmcoKSwgXCJIaWRlIGFjdGlvbnNcIilcbiAgICAgIF1cblxuICAgICAgdGhpcy5xdWFsaWZ5QnlUeXBlcyA9IFtcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5iZW5jaG1hcmsudG9TdHJpbmcoKSwgXCJBZ2FpbnN0IGJlbmNobWFya1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5kZWx0YS50b1N0cmluZygpLCB0aGlzLmlzU2luZ2xlVGVhbSA/IFwiQWdhaW5zdCBwcmV2aW91cyBzbmFwc2hvdFwiIDogXCJBZ2FpbnN0IHByZXZpb3VzIHBlcmlvZFwiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5ub25lLnRvU3RyaW5nKCksIFwiTm8gY29tcGFyaXNvblwiKSxcbiAgICAgIF1cbiAgIH07XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgc2VsZWN0b3I6ICdbc2V0dGluZ3NEaWFsb2ddJyxcbn0pXG5leHBvcnQgY2xhc3MgT3BlblNldHRpbmdzRGlhbG9nRGlyZWN0aXZlIHtcbiAgIEBJbnB1dCgpIHNob3dTZXR0aW5nU3RhY2tpbmc6IGJvb2xlYW47XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHtcbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5wYW5lbENsYXNzID0gWydkaWFsb2cnLCAnc2V0dGluZ3MnXTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSBmYWxzZTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICAgIGRpYWxvZ0NvbmZpZy5leGl0QW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7fTtcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nU2V0dGluZ3NDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG4gICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+U3RhdGlzdGljYWwgU2V0dGluZ3M8L2gxPlxuICAgPGRpdiBjbGFzcz1cImNsb3NlXCIgbWF0LWRpYWxvZy1jbG9zZT48aSBjbGFzcz1cInJlc3BvbnNpdmUgaWNvbiBwaC14LWJvbGRcIiA+PC9pPjwvZGl2PlxuPC9kaXY+XG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnRlcnZlbnRpb25GaWx0ZXJUeXBlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgPG1hdC1sYWJlbD5XaGljaCBhY3Rpb24gdG90YWxzIGRvIHlvdSB3YW50IHRvIHNlZSB1bmRlciAnSW5zaWdodHMnPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnRlcnZlbnRpb25maWx0ZXItZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJpbnRlcnZlbnRpb25GaWx0ZXJUeXBlXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJxdWFsaWZ5QnlcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPldoYXQgc2hvdWxkIHdlIGNvbXBhcmUgd2l0aCAoZGV0ZXJtaW5lcyBjb2xvcnMpPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJxdWFsaWZ5QnktZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJxdWFsaWZ5QnlcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1YWxpZnlCeVR5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInN0YWNraW5nXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiICpuZ0lmPVwiaXNTaW5nbGVUZWFtXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPkNvbWJpbmUgc25hcHNob3RzICh0byBtZXJnZSBmb2N1cyBzbmFwc2hvdHMpPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJzdGFja2luZy1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cInN0YWNraW5nXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbdmFsdWVdPVwiJ2ZhbHNlJ1wiPk5vLCBvbmx5IHNob3cgbW9zdCByZWNlbnQgc25hcHNob3Q8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbdmFsdWVdPVwiJ3RydWUnXCI+WWVzLCBjb21iaW5lIGFuZCB1c2UgbW9zdCByZWNlbnQgbWVhc3VyZSA8c3BhbiBjbGFzcz1cInBoLWluZm8tZmlsbCBpY29uXCIgW21hdFRvb2x0aXBdPVwiJ1RoaXMgbW9kZSB1c2VzIHRoZSBtb3N0IHJlY2VudCBtZWFzdXJlZCBzY29yZSBmb3IgZWFjaCBmYWN0b3IgdG8gYXZvaWQgbWl4aW5nIG91dGRhdGVkIHdpdGggZnJlc2ggZGF0YS4gQnV0IGl0IGNhbiBsZWFkIHRvIHVucmVsaWFibGUgc2NvcmVzIGZvciBjb3JlIGZhY3RvcnMgd2hlbiBhIG1vcmUgcmVjZW50IHNuYXBzaG90IG9ubHkgbWVhc3VyZXMgYSBmZXcgaXRzIHN1Yi1mYWN0b3JzLiBXZSB3aWxsIGJlIGludHJvZHVjaW5nIGEgbW9yZSBhZHZhbmNlZCB0aW1lLWRlY2F5IGF2ZXJhZ2luZyBhbGdvcml0aG0gc29vbi4nXCI+PC9zcGFuPjwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJlbmNobWFya1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hpY2ggYmVuY2htYXJrIHNob3VsZCB3ZSB1c2U/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImJlbmNobWFyay1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImJlbmNobWFya1R5cGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJlbmNobWFya1R5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNTdWJzY3JpYmVyXCIgY2xhc3M9XCJtZXNzYWdlIG1lc3NhZ2UtaW5mb3JtYXRpb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwicGgtaW5mby1maWxsIGljb25cIj48L3NwYW4+XG4gICAgICAgICBFYWdlciB0byBzZWUgaG93IHlvdXIgdGVhbSBjb21wYXJlcyB0byBvdGhlciBiZW5jaG1hcmtzPyBTdWJzY3JpYmUgdG8gdW5sb2NrIGRvemVucyBvZiBiZW5jaG1hcmtzLCBpbmNsdWRpbmcgdGhlICdUb3AgMTAwIG1vc3QgZWZmZWN0aXZlIHRlYW1zJywgYmVuY2htYXJrcyBmb3Igd29ybGQgcmVnaW9ucywgc2VjdG9ycywgc2NhbGluZyBmcmFtZXdvcmtzIGFuZCB5b3VyIG9yZ2FuaXphdGlvbi5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2luZ2xlVGVhbVwiPlxuICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGVsdGFQZXJpb2RcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIHBlcmlvZHMgc2hvdWxkIHdlIGNvbXBhcmU/PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImRlbHRhUGVyaW9kLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVsdGFQZXJpb2RcIj5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlbHRhUGVyaW9kc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnNcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGZhY3RvcnMgc2hvdWxkIHdlIHNob3cgaW4gdGhlIG92ZXJ2aWV3PzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnMtZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJvdmVydmlld0ZhY3RvcnNcIiBtdWx0aXBsZT5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFtuZ0NsYXNzXT1cInsnbG93ZXInIDogZmFjdG9yLmxvd2VyfVwiICpuZ0Zvcj1cImxldCBmYWN0b3Igb2YgZmFjdG9yc1wiIFt2YWx1ZV09XCJmYWN0b3IudmFsdWVcIj57e2ZhY3Rvci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZyc6IHNlbmRpbmcgfVwiPnN1Ym1pdDwvYnV0dG9uPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIG1hdC1kaWFsb2ctY2xvc2U+Y2FuY2VsPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuIl19
@@ -5325,11 +5325,11 @@ class DialogSettingsComponent extends ComponentWithViewStateBase {
5325
5325
  }
5326
5326
  ;
5327
5327
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, deps: [{ token: i1$3.MatDialogRef }, { token: FactorService }, { token: UserSettingService }, { token: i1.MatSnackBar }, { token: i4$1.FormBuilder }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
5328
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only use most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
5328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
5329
5329
  }
5330
5330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, decorators: [{
5331
5331
  type: Component,
5332
- args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only use most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
5332
+ args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
5333
5333
  }], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: FactorService }, { type: UserSettingService }, { type: i1.MatSnackBar }, { type: i4$1.FormBuilder }, { type: ViewModelStateBase, decorators: [{
5334
5334
  type: Inject,
5335
5335
  args: [VIEWSTATE_PROVIDER]