ng-configcat-publicapi-ui 4.0.3 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/esm2022/lib/_directives/input-display-normalizer.directive.mjs +3 -3
  2. package/esm2022/lib/_services/app-data-adapter.mjs +3 -3
  3. package/esm2022/lib/_services/comparison-value-list-helper.mjs +3 -3
  4. package/esm2022/lib/_services/form-generator.mjs +3 -3
  5. package/esm2022/lib/_services/messaging.service.mjs +3 -3
  6. package/esm2022/lib/_services/public-api.service.mjs +3 -3
  7. package/esm2022/lib/_services/setting-list-form-helper.mjs +3 -3
  8. package/esm2022/lib/_services/tracking.directive.mjs +3 -3
  9. package/esm2022/lib/ace-editor/ace-editor.component.mjs +3 -3
  10. package/esm2022/lib/authorization/authorization.component.mjs +3 -3
  11. package/esm2022/lib/base/base-select.component.mjs +3 -3
  12. package/esm2022/lib/base/base.component.mjs +3 -3
  13. package/esm2022/lib/configuration.mjs +3 -3
  14. package/esm2022/lib/dialogs/confirmation-dialog/confirmation-dialog.mjs +3 -3
  15. package/esm2022/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +3 -3
  16. package/esm2022/lib/dialogs/expand-dialog/expand-dialog.component.mjs +3 -3
  17. package/esm2022/lib/dialogs/info-dialog/info-dialog.mjs +3 -3
  18. package/esm2022/lib/dialogs/reason-dialog/reason-dialog.component.mjs +3 -3
  19. package/esm2022/lib/dialogs/reroute-dialog/reroute-dialog.mjs +3 -3
  20. package/esm2022/lib/dialogs/save-snackbar/save-snackbar.component.mjs +3 -3
  21. package/esm2022/lib/ng-configcat-publicapi-ui.module.mjs +4 -4
  22. package/esm2022/lib/selects/config-select/config-select.component.mjs +3 -3
  23. package/esm2022/lib/selects/environment-select/environment-select.component.mjs +3 -3
  24. package/esm2022/lib/selects/product-select/product-select.component.mjs +3 -3
  25. package/esm2022/lib/selects/setting-select/setting-select.component.mjs +3 -3
  26. package/esm2022/lib/setting-item/setting-item.component.mjs +3 -3
  27. package/esm2022/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +3 -3
  28. package/esm2022/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +3 -3
  29. package/esm2022/lib/setting-list/setting/setting.component.mjs +3 -3
  30. package/esm2022/lib/setting-list/setting/value/value.component.mjs +3 -3
  31. package/esm2022/lib/setting-list/setting-list.component.mjs +3 -3
  32. package/esm2022/lib/v2/feature-flag/date-time-picker/date-time-picker.component.mjs +3 -3
  33. package/esm2022/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.mjs +3 -3
  34. package/esm2022/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.mjs +3 -3
  35. package/esm2022/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.mjs +3 -3
  36. package/esm2022/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.mjs +3 -3
  37. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.mjs +3 -3
  38. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.mjs +3 -3
  39. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.mjs +3 -3
  40. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.mjs +3 -3
  41. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.mjs +3 -3
  42. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.mjs +3 -3
  43. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.mjs +3 -3
  44. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.mjs +3 -3
  45. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.mjs +3 -3
  46. package/esm2022/lib/v2/feature-flag/feature-flag.component.mjs +5 -5
  47. package/esm2022/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.mjs +3 -3
  48. package/esm2022/lib/v2/feature-flag-item.component.mjs +3 -3
  49. package/fesm2022/ng-configcat-publicapi-ui.mjs +146 -146
  50. package/fesm2022/ng-configcat-publicapi-ui.mjs.map +1 -1
  51. package/package.json +4 -4
@@ -22,10 +22,10 @@ export class InputDisplayNormalizerDirective {
22
22
  }
23
23
  }
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InputDisplayNormalizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]", host: { listeners: { "blur": "onChange($event)" } }, ngImport: i0 }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InputDisplayNormalizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]", host: { listeners: { "blur": "onChange($event)" } }, ngImport: i0 }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InputDisplayNormalizerDirective, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InputDisplayNormalizerDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -9,10 +9,10 @@ export class AppDateAdapter extends NativeDateAdapter {
9
9
  }
10
10
  return DateHelper.formatDate(date, 'yyyy. MM. dd');
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AppDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AppDateAdapter }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AppDateAdapter, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AppDateAdapter, decorators: [{
16
16
  type: Injectable
17
17
  }] });
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRhdGEtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9fc2VydmljZXMvYXBwLWRhdGEtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQWlCO0lBQ25ELE1BQU0sQ0FBQyxJQUFVO1FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQU5VLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuL2RhdGUtaGVscGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBEYXRlQWRhcHRlciBleHRlbmRzIE5hdGl2ZURhdGVBZGFwdGVyIHtcbiAgZm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gRGF0ZUhlbHBlci5mb3JtYXREYXRlKGRhdGUsICd5eXl5LiBNTS4gZGQnKTtcbiAgfVxufVxuIl19
@@ -63,10 +63,10 @@ export class ComparisonValueListHelper {
63
63
  }
64
64
  return { comparisonValueList: parseResult.data.flat().map(p => ({ value: p })).filter(v => !!v.value) };
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ComparisonValueListHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ComparisonValueListHelper }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ComparisonValueListHelper, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ComparisonValueListHelper, decorators: [{
70
70
  type: Injectable
71
71
  }] });
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyaXNvbi12YWx1ZS1saXN0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9fc2VydmljZXMvY29tcGFyaXNvbi12YWx1ZS1saXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQzs7QUFRN0IsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyx5QkFBeUIsQ0FBQyxtQkFBZ0Q7UUFDdEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsbUJBQWdEO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQzNELE9BQU87Z0JBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ2hFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxtQkFBZ0Q7UUFDOUQsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsT0FBTyxJ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LEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3JJLENBQUM7OEdBOURRLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsIH0gZnJvbSBcIi4uL2Jvb3RzdHJhcFwiO1xuaW1wb3J0IFBhcGEgZnJvbSAncGFwYXBhcnNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uVmFsdWVMaXN0UGFyc2VSZXN1bHQge1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBhcmlzb25WYWx1ZUxpc3RIZWxwZXIge1xuICAgIGZvcm1hdFZhbHVlc0FuZEhpbnRBc0pzb24oY29tcGFyaXNvblZhbHVlTGlzdDogSUNvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbFtdKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbXBhcmlzb25WYWx1ZUxpc3QsIG51bGwsIDIpO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlc0FuZEhpbnRBc0Nzdihjb21wYXJpc29uVmFsdWVMaXN0OiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsW10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRhID0gY29tcGFyaXNvblZhbHVlTGlzdC5tYXAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdENzdlN0cmluZ1ZhbHVlKGNvbXBhcmlzb25WYWx1ZUxpc3RJdGVtLnZhbHVlID8/ICcnKSxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdENzdlN0cmluZ1ZhbHVlKGNvbXBhcmlzb25WYWx1ZUxpc3RJdGVtLmhpbnQgPz8gJycpXG4gICAgICAgICAgICBdLmpvaW4oJywnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkYXRhLmpvaW4oJ1xcclxcbicpO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlc0FzQ3N2KGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjb21wYXJpc29uVmFsdWVMaXN0Lm1hcChjb21wYXJpc29uVmFsdWVMaXN0ID0+IHRoaXMuZm9ybWF0Q3N2U3RyaW5nVmFsdWUoY29tcGFyaXNvblZhbHVlTGlzdC52YWx1ZSA/PyAnJykpO1xuICAgICAgICByZXR1cm4gZGF0YS5qb2luKCcsJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0Q3N2U3RyaW5nVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVzY2FwZWQgPSB2YWx1ZS5yZXBsYWNlQWxsKFwiXFxcIlwiLCBcIlxcXCJcXFwiXCIsKTtcbiAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgZXNjYXBlZCArIFwiXFxcIlwiO1xuICAgIH1cblxuICAgIHBhcnNlVmFsdWVzQW5kSGludHNGcm9tSnNvbih2YWx1ZTogc3RyaW5nKTogQ29tcGFyaXNvblZhbHVlTGlzdFBhcnNlUmVzdWx0IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10gfTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkOiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsW10gPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IHBhcnNlZC5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10sIGVycm9yOiBcIlBhcnNlIGVycm9yLlwiIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlc0FuZEhpbnRzRnJvbUNzdih2YWx1ZTogc3RyaW5nKTogQ29tcGFyaXNvblZhbHVlTGlzdFBhcnNlUmVzdWx0IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IFBhcGEucGFyc2U8c3RyaW5nW10+KHZhbHVlLCB7IGRlbGltaXRlcjogJywnLCBza2lwRW1wdHlMaW5lczogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHBhcnNlUmVzdWx0LmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSwgZXJyb3I6IFwiUGFyc2UgZXJyb3IuXCIgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VSZXN1bHQ/LmRhdGE/Lmxlbmd0aCA9PT0gMCkgeyByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSB9OyB9XG4gICAgICAgIHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IHBhcnNlUmVzdWx0LmRhdGEubWFwKHAgPT4gPElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWw+eyB2YWx1ZTogcFswXSwgaGludDogcFsxXSB9KS5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgfVxuXG4gICAgcGFyc2VWYWx1ZXNGcm9tQ3N2KHZhbHVlOiBzdHJpbmcpOiBDb21wYXJpc29uVmFsdWVMaXN0UGFyc2VSZXN1bHQge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4geyBjb21wYXJpc29uVmFsdWVMaXN0OiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gUGFwYS5wYXJzZTxzdHJpbmdbXT4odmFsdWUgKyBcIixcIiwgeyBkZWxpbWl0ZXI6ICcsJywgc2tpcEVtcHR5TGluZXM6IHRydWUgfSk7XG4gICAgICAgIGlmIChwYXJzZVJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogW10sIGVycm9yOiBcIlBhcnNlIGVycm9yLlwiIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJzZVJlc3VsdD8uZGF0YT8ubGVuZ3RoKSB7IHJldHVybiB7IGNvbXBhcmlzb25WYWx1ZUxpc3Q6IFtdIH07IH1cbiAgICAgICAgcmV0dXJuIHsgY29tcGFyaXNvblZhbHVlTGlzdDogcGFyc2VSZXN1bHQuZGF0YS5mbGF0KCkubWFwKHAgPT4gPElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWw+eyB2YWx1ZTogcCB9KS5maWx0ZXIodiA9PiAhIXYudmFsdWUpIH07XG4gICAgfVxufVxuIl19
@@ -350,10 +350,10 @@ export class FormGenerator {
350
350
  listValueFormArray.markAsTouched();
351
351
  listValueFormArray.markAsDirty();
352
352
  }
353
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
354
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator }); }
353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
354
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormGenerator }); }
355
355
  }
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormGenerator, decorators: [{
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormGenerator, decorators: [{
357
357
  type: Injectable
358
358
  }] });
359
359
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL2Zvcm0tZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFDSCxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQVcvQyxzQkFBc0IsRUFFekIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzdFLE1BQU0sT0FBTyxhQUFhO0lBQ2YsOEJBQThCLENBQUMsS0FBeUIsRUFBRSxRQUFpQixFQUFFLFFBQWdDLEVBQUUsc0JBQStDO1FBQ2pLLE9BQU8sSUFBSSxTQUFTLENBQXlCO1lBQ3pDLFlBQVksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLENBQUM7WUFDMUgsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUM7WUFDbkksY0FBYyxFQUFFLElBQUksU0FBUyxDQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFB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QyxDQUFDO1FBRXZELG1CQUFtQixDQUFDLE9BQU8sQ0FDdkIsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0NBQW9DLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDMUgsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUVQLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDNUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs4R0ExWlEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICAgIFVzZXJDb21wYXJhdG9yLCBVc2VyQ29tcGFyYXRvclR5cGUsIFNldHRpbmdUeXBlLFxuICAgIElDb21wYXJpc29uVmFsdWVNb2RlbCwgSUNvbXBhcmlzb25WYWx1ZUxpc3RNb2RlbCxcbiAgICBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyxcbiAgICBDb21wYXJpc29uVmFsdWVGb3JtLCBDb21wYXJpc29uVmFsdWVMaXN0Rm9ybSxcbiAgICBDb25kaXRpb25Gb3JtLFxuICAgIFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtLFxuICAgIElQcmVyZXF1aXNpdGVTZXR0aW5nLFxuICAgIFBlcmNlbnRhZ2VPcHRpb25Gb3JtLFxuICAgIFNlZ21lbnRDb25kaXRpb25Gb3JtLFxuICAgIFRhcmdldGluZ1J1bGVGb3JtLFxuICAgIFVwZGF0ZVNldHRpbmdWYWx1ZUZvcm0sIFVzZXJDb25kaXRpb25Gb3JtLCBWYWx1ZUZvcm0sXG4gICAgUHJlcmVxdWlzaXRlQ29tcGFyYXRvciwgSUNvbmRpdGlvbk1vZGVsLCBJUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbk1vZGVsLCBJU2VnbWVudENvbmRpdGlvbk1vZGVsLCBJVXNlckNvbmRpdGlvbk1vZGVsLFxuICAgIElWYWx1ZU1vZGVsLCBJVGFyZ2V0aW5nUnVsZU1vZGVsLCBJUGVyY2VudGFnZU9wdGlvbk1vZGVsLCBJU2V0dGluZ1ZhbHVlTW9kZWxcbn0gZnJvbSBcIi4uL2Jvb3RzdHJhcFwiO1xuaW1wb3J0IHsgdmFsaWQgfSBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgcGVyY2VudGFnZVJlZ2V4LCB3aG9sZU51bWJlclJlZ2V4IH0gZnJvbSBcIi4uL19zZXJ2aWNlcy9mb3JtLWhlbHBlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRvciB7XG4gICAgcHVibGljIGdlbmVyYXRlU2V0dGluZ1ZhbHVlc0Zvcm1Hcm91cChtb2RlbDogSVNldHRpbmdWYWx1ZU1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgc2V0dGluZ3M6IElQcmVyZXF1aXNpdGVTZXR0aW5nW10sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFVwZGF0ZVNldHRpbmdWYWx1ZUZvcm0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VXBkYXRlU2V0dGluZ1ZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmdlbmVyYXRlVmFsdWVGb3JtR3JvdXAobW9kZWwuZGVmYXVsdFZhbHVlLCBtb2RlbC5zZXR0aW5nLnNldHRpbmdUeXBlLCByZWFkT25seSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucyksXG4gICAgICAgICAgICBwZXJjZW50YWdlRXZhbHVhdGlvbkF0dHJpYnV0ZTogdGhpcy5nZW5lcmF0ZVBlcmNlbnRhZ2VFdmFsdWF0aW9uQXR0cmlidXRlRm9ybUNvbnRyb2wobW9kZWwucGVyY2VudGFnZUV2YWx1YXRpb25BdHRyaWJ1dGUsIHJlYWRPbmx5KSxcbiAgICAgICAgICAgIHRhcmdldGluZ1J1bGVzOiBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4+KFxuICAgICAgICAgICAgICAgIG1vZGVsLnRhcmdldGluZ1J1bGVzLm1hcChmdCA9PiB0aGlzLmdlbmVyYXRlVGFyZ2V0aW5nUnVsZUZvcm1Hcm91cChmdCwgbW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlUGVyY2VudGFnZUV2YWx1YXRpb25BdHRyaWJ1dGVGb3JtQ29udHJvbChwZXJjZW50YWdlRXZhbHVhdGlvbkF0dHJpYnV0ZTogc3RyaW5nLCByZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHBlcmNlbnRhZ2VFdmFsdWF0aW9uQXR0cmlidXRlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyB2YWxpZGF0b3JzOiBbdGhpcy52YWxpZGF0ZUVtcHR5U3RyaW5nLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKV0gfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVUYXJnZXRpbmdSdWxlRm9ybUdyb3VwKG1vZGVsOiBJVGFyZ2V0aW5nUnVsZU1vZGVsLCBzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUsIHJlYWRPbmx5OiBib29sZWFuLCBzZXR0aW5nczogSVByZXJlcXVpc2l0ZVNldHRpbmdbXSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpOiBGb3JtR3JvdXA8VGFyZ2V0aW5nUnVsZUZvcm0+IHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPENvbmRpdGlvbkZvcm0+PihcbiAgICAgICAgICAgIG1vZGVsLmNvbmRpdGlvbnMubWFwKHRyID0+IHRoaXMuZ2VuZXJhdGVDb25kaXRpb25Gb3JtR3JvdXAodHIsIHJlYWRPbmx5LCBzZXR0aW5ncywgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykpXG4gICAgICAgIClcblxuICAgICAgICBpZiAobW9kZWwucGVyY2VudGFnZU9wdGlvbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFRhcmdldGluZ1J1bGVGb3JtPih7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlT3B0aW9uczogbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA8UGVyY2VudGFnZU9wdGlvbkZvcm0+PihcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwucGVyY2VudGFnZU9wdGlvbnMubWFwKHByID0+IHRoaXMuZ2VuZXJhdGVQZXJjZW50YWdlT3B0aW9uRm9ybUdyb3VwKHByLCBzZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpKSxcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudmFsaWRhdGVQZXJjZW50YWdlU3VtXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4oe1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cChtb2RlbC52YWx1ZSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBFcnJvcihcIkludmFsaWQgbW9kZWxcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlVGFyZ2V0aW5nUnVsZVdpdGhFbXB0eVBlcmNlbnRhZ2VPcHRpb25zKHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVRhcmdldGluZ1J1bGVGb3JtR3JvdXAoe1xuICAgICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgICBwZXJjZW50YWdlT3B0aW9uczogdGhpcy5nZXRFbXB0eVBlcmNlbnRhZ2VPcHRpb25zKHNldHRpbmdUeXBlKVxuICAgICAgICB9LCBzZXR0aW5nVHlwZSwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlQZXJjZW50YWdlT3B0aW9ucyhzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUpOiBJUGVyY2VudGFnZU9wdGlvbk1vZGVsW10ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgeyBwZXJjZW50YWdlOiA1MCwgdmFsdWU6IHsgYm9vbFZhbHVlOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgeyBwZXJjZW50YWdlOiA1MCwgdmFsdWU6IHsgYm9vbFZhbHVlOiBmYWxzZSB9IH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5TdHJpbmc6XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHsgcGVyY2VudGFnZTogNTAsIHZhbHVlOiB7fSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHBlcmNlbnRhZ2U6IDUwLCB2YWx1ZToge30gfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZVBlcmNlbnRhZ2VPcHRpb25Gb3JtR3JvdXAobW9kZWw6IElQZXJjZW50YWdlT3B0aW9uTW9kZWwsIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFBlcmNlbnRhZ2VPcHRpb25Gb3JtPiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFBlcmNlbnRhZ2VPcHRpb25Gb3JtPih7XG4gICAgICAgICAgICBwZXJjZW50YWdlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbW9kZWwucGVyY2VudGFnZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFt0aGlzLnZhbGlkYXRlTnVtYmVyTmFuLCBWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMTAwKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHBlcmNlbnRhZ2VSZWdleCldIH0pLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cChtb2RlbC52YWx1ZSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5IHx8IHNldHRpbmdUeXBlID09PSBTZXR0aW5nVHlwZS5Cb29sZWFuLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVDb25kaXRpb25Gb3JtR3JvdXAobW9kZWw6IElDb25kaXRpb25Nb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPiB7XG4gICAgICAgIGlmIChtb2RlbC51c2VyQ29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgdXNlckNvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVVzZXJDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwudXNlckNvbmRpdGlvbiwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5zZWdtZW50Q29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgc2VnbWVudENvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVNlZ21lbnRDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwuc2VnbWVudENvbmRpdGlvbiwgcmVhZE9ubHkpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5wcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbjogdGhpcy5nZW5lcmF0ZVByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtR3JvdXAobW9kZWwucHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbiwgcmVhZE9ubHksIHNldHRpbmdzLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJycpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVVc2VyQ29uZGl0aW9uRm9ybUdyb3VwKHZhbHVlOiBJVXNlckNvbmRpdGlvbk1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpOiBGb3JtR3JvdXA8VXNlckNvbmRpdGlvbkZvcm0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VXNlckNvbmRpdGlvbkZvcm0+KHtcbiAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJpc29uQXR0cmlidXRlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXSB9KSxcbiAgICAgICAgICAgIGNvbXBhcmF0b3I6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlOiB0aGlzLmdlbmVyYXRlQ29tcGFyaXNvblZhbHVlRm9ybUdyb3VwKHZhbHVlLmNvbXBhcmlzb25WYWx1ZSwgdmFsdWUuY29tcGFyYXRvciwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZVNlZ21lbnRDb25kaXRpb25Gb3JtR3JvdXAodmFsdWU6IElTZWdtZW50Q29uZGl0aW9uTW9kZWwsIHJlYWRPbmx5OiBib29sZWFuKTogRm9ybUdyb3VwPFNlZ21lbnRDb25kaXRpb25Gb3JtPiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFNlZ21lbnRDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICBzZWdtZW50SWQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5zZWdtZW50SWQsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICBjb21wYXJhdG9yOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuY29tcGFyYXRvciwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdlbmVyYXRlUHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm1Hcm91cCh2YWx1ZTogSVByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Nb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdzOiBJUHJlcmVxdWlzaXRlU2V0dGluZ1tdLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nID0gc2V0dGluZ3MuZmlsdGVyKHMgPT4gcy5zZXR0aW5nSWQgPT0gdmFsdWUucHJlcmVxdWlzaXRlU2V0dGluZ0lkKVswXTtcbiAgICAgICAgaWYgKCFzZXR0aW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHByZXJlcXVpc2l0ZSBzZXR0aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldHRpbmcuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4pIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgYSBib29sZWFuIHByZXJlcXVpc2l0ZSBzZXR0aW5nLCB3ZSBhcmUgZW5mb3JjaW5nIGEgJ1RydWUnIHByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZSBcbiAgICAgICAgICAgIC8vIHNvIHdlIGNhbiBzaW1wbGlmeSB0aGUgVUkgd2l0aCBhIHNpbXBsZSAnSXMgdHJ1ZScgb3IgJ0lzIGZhbHNlJyBzZWxlY3QuXG4gICAgICAgICAgICAvLyAnSXMgdHJ1ZScgPSBQcmVyZXF1aXNpdGVDb21wYXJhdG9yLkVxdWFscyBUUlVFXG4gICAgICAgICAgICAvLyAnSXMgZmFsc2UnID0gUHJlcmVxdWlzaXRlQ29tcGFyYXRvci5Eb2VzTm90RXF1YWwgVFJVRVxuICAgICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSB2YWx1ZS5jb21wYXJhdG9yO1xuICAgICAgICAgICAgaWYgKCF2YWx1ZS5wcmVyZXF1aXNpdGVDb21wYXJpc29uVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJlcmVxdWlzaXRlQ29tcGFyaXNvblZhbHVlIGlzIGZhbHNlIHNvbWVob3cgKGUuZy4gUHVibGljIE1hbmFnZW1lbnQgQVBJKSwgd2Ugc2hvdWxkIG5lZ2F0ZSB0aGUgY29tcGFyYXRvci5cbiAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciA9PT0gUHJlcmVxdWlzaXRlQ29tcGFyYXRvci5FcXVhbHMgPyBQcmVyZXF1aXNpdGVDb21wYXJhdG9yLkRvZXNOb3RFcXVhbCA6IFByZXJlcXVpc2l0ZUNvbXBhcmF0b3IuRXF1YWxzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8UHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm0+KHtcbiAgICAgICAgICAgICAgICBwcmVyZXF1aXNpdGVTZXR0aW5nSWQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5wcmVyZXF1aXNpdGVTZXR0aW5nSWQsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICAgICAgY29tcGFyYXRvcjogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGNvbXBhcmF0b3IsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlQ29tcGFyaXNvblZhbHVlOiB0aGlzLmdlbmVyYXRlVmFsdWVGb3JtR3JvdXAoeyBib29sVmFsdWU6IHRydWUgfSwgc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFByZXJlcXVpc2l0ZUZsYWdDb25kaXRpb25Gb3JtPih7XG4gICAgICAgICAgICAgICAgcHJlcmVxdWlzaXRlU2V0dGluZ0lkOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUucHJlcmVxdWlzaXRlU2V0dGluZ0lkLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5jb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgICAgIHByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZTogdGhpcy5nZW5lcmF0ZVZhbHVlRm9ybUdyb3VwKHZhbHVlLnByZXJlcXVpc2l0ZUNvbXBhcmlzb25WYWx1ZSwgc2V0dGluZy5zZXR0aW5nVHlwZSwgcmVhZE9ubHksIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUVtcHR5UHJlcmVxdWlzaXRlRmxhZ0NvbmRpdGlvbkZvcm1Hcm91cChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxQcmVyZXF1aXNpdGVGbGFnQ29uZGl0aW9uRm9ybT4oe1xuICAgICAgICAgICAgcHJlcmVxdWlzaXRlU2V0dGluZ0lkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pLFxuICAgICAgICAgICAgY29tcGFyYXRvcjogbmV3IEZvcm1Db250cm9sKFByZXJlcXVpc2l0ZUNvbXBhcmF0b3IuRXF1YWxzLCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSksXG4gICAgICAgICAgICBwcmVyZXF1aXNpdGVDb21wYXJpc29uVmFsdWU6IHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh7IGJvb2xWYWx1ZTogdHJ1ZSB9LCBTZXR0aW5nVHlwZS5Cb29sZWFuLCBmYWxzZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5leHRJbmRleChmb3JtQXJyYXk6IEZvcm1BcnJheTxGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlTGlzdEZvcm0+Pikge1xuICAgICAgICBpZiAoZm9ybUFycmF5LmNvbnRyb2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLmZvcm1BcnJheS5jb250cm9scy5tYXAoYyA9PiBjLmNvbnRyb2xzLmluZGV4LnZhbHVlKSkgKyAxO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUxpc3RGb3JtR3JvdXAobGlzdFZhbHVlOiBJQ29tcGFyaXNvblZhbHVlTGlzdE1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVMaXN0Rm9ybT4oe1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBsaXN0VmFsdWUudmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzIH0pLFxuICAgICAgICAgICAgaGludDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGxpc3RWYWx1ZS5oaW50LCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MDApXSksXG4gICAgICAgICAgICAvLyBUaGUgaW5kZXggY29sdW1uIGlzIGdlbmVyYXRlZCBvbiB0aGUgZmlyc3QgZ2VuZXJhdGlvbiBieSBkZWZhdWx0IG9yIGJ5IHRoZSBnZXROZXh0SW5kZXgoKSBpZiBhIHZhbHVlIGlzIGFkZGVkIHRvIHRoZSBsaXN0dmFsdWUuIEl0IGlzIHJlcXVpcmVkIHNvIHdlIGNhbiBkZWxldGUgdGhlIHJvd3Mgb24gdGhlIHBvcHV0IGVkaXRvci5cbiAgICAgICAgICAgIGluZGV4OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogaW5kZXgsIGRpc2FibGVkOiB0cnVlIH0pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUZvcm1Hcm91cCh2YWx1ZTogSUNvbXBhcmlzb25WYWx1ZU1vZGVsLCBjb21wYXJhdG9yOiBVc2VyQ29tcGFyYXRvciwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUZvcm0+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmdldENvbXBhcmlzb25WYWx1ZVR5cGUoY29tcGFyYXRvcikpIHtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVN0cmluZ1ZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZ0xpc3Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBsaXN0VmFsdWU6IHRoaXMuZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheSh2YWx1ZS5saXN0VmFsdWUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVN0cmluZ0xpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvclR5cGUuTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUZvcm0+KHtcbiAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5kb3VibGVWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWxvc3Mtb2YtcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBbdGhpcy52YWxpZGF0ZU51bWJlck5hbiwgVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oLTEuNzk3NjkzMTM0ODYyMzJFKzMwOCksIFZhbGlkYXRvcnMubWF4KDEuNzk3NjkzMTM0ODYyMzJFKzMwOCldIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxDb21wYXJpc29uVmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVNlbXZlclZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlckxpc3Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBsaXN0VmFsdWU6IHRoaXMuZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheSh2YWx1ZS5saXN0VmFsdWUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVNlbXZlckxpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvclR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBkb3VibGVWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmRvdWJsZVZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21wYXJhdG9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVDb21wYXJpc29uVmFsdWVMaXN0VmFsdWVBcnJheShsaXN0VmFsdWU6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zLCBpdGVtVmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSkge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA8Q29tcGFyaXNvblZhbHVlTGlzdEZvcm0+PihcbiAgICAgICAgICAgIChsaXN0VmFsdWUgPz8gW10pLm1hcCgobHYsIGluZGV4KSA9PiB7IHJldHVybiB0aGlzLmdlbmVyYXRlQ29tcGFyaXNvblZhbHVlTGlzdEZvcm1Hcm91cChsdiwgcmVhZE9ubHksIGl0ZW1WYWxpZGF0b3JzLCBpbmRleCk7IH0pLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxpc3RMZW5ndGgpXVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVN0cmluZ1ZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxlbmd0aCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wYXJpc29uVmFsdWVTdHJpbmdMaXN0SXRlbVZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxpc3RJdGVtTGVuZ3RoKV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVNlbXZlclZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aChmZWF0dXJlRmxhZ0xpbWl0YXRpb25zLm1heENvbXBhcmlzb25WYWx1ZUxlbmd0aCksIHRoaXMudmFsaWRhdGVTZW1WZXJdXG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBhcmlzb25WYWx1ZVNlbXZlckxpc3RJdGVtVmFsaWRhdG9ycyhmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucykge1xuICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKGZlYXR1cmVGbGFnTGltaXRhdGlvbnMubWF4Q29tcGFyaXNvblZhbHVlTGlzdEl0ZW1MZW5ndGgpLCB0aGlzLnZhbGlkYXRlU2VtVmVyXVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZURlZmF1bHRWYWx1ZShzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUpOiBJVmFsdWVNb2RlbCB7XG4gICAgICAgIHN3aXRjaCAoc2V0dGluZ1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBib29sVmFsdWU6IGZhbHNlIH07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuSW50OlxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Eb3VibGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZW5lcmF0ZURlZmF1bHRWYWx1ZUZvcm1Hcm91cChzZXR0aW5nVHlwZTogU2V0dGluZ1R5cGUsIHJlYWRPbmx5OiBib29sZWFuLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IEZvcm1Hcm91cDxWYWx1ZUZvcm0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh0aGlzLmdlbmVyYXRlRGVmYXVsdFZhbHVlKHNldHRpbmdUeXBlKSwgc2V0dGluZ1R5cGUsIHJlYWRPbmx5LCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVWYWx1ZUZvcm1Hcm91cCh2YWx1ZTogSVZhbHVlTW9kZWwsIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSwgcmVhZE9ubHk6IGJvb2xlYW4sIGZlYXR1cmVGbGFnTGltaXRhdGlvbnM6IElGZWF0dXJlRmxhZ0xpbWl0YXRpb25zKTogRm9ybUdyb3VwPFZhbHVlRm9ybT4ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIGJvb2xWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmJvb2xWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVHlwZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5TdHJpbmc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXA8VmFsdWVGb3JtPih7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdmFsdWUuc3RyaW5nVmFsdWUsIGRpc2FibGVkOiByZWFkT25seSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSwgdmFsaWRhdG9yczogdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUsIGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIH0pXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuSW50OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwPFZhbHVlRm9ybT4oe1xuICAgICAgICAgICAgICAgICAgICBpbnRWYWx1ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHZhbHVlLmludFZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zKSB9KVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cDxWYWx1ZUZvcm0+KHtcbiAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB2YWx1ZS5kb3VibGVWYWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVHlwZSwgZmVhdHVyZUZsYWdMaW1pdGF0aW9ucykgfSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2V0dGluZ1R5cGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wYXJpc29uVmFsdWVUeXBlKGNvbXBhcmF0b3I6IFVzZXJDb21wYXJhdG9yKTogVXNlckNvbXBhcmF0b3JUeXBlIHtcbiAgICAgICAgc3dpdGNoIChjb21wYXJhdG9yKSB7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dEVxdWFsczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dERvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dEVxdWFsczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dERvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVXNlckNvbXBhcmF0b3JUeXBlLlN0cmluZztcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVJc09uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVJc05vdE9uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVUZXh0U3RhcnRzV2l0aEFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW5zaXRpdmVUZXh0RW5kc1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dE5vdFN0YXJ0c1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlVGV4dE5vdEVuZHNXaXRoQW55T2Y6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLlNlbnNpdGl2ZUFycmF5Q29udGFpbnNBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2Vuc2l0aXZlQXJyYXlEb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Jc09uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Jc05vdE9uZU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5UZXh0U3RhcnRzV2l0aEFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5UZXh0RW5kc1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dE5vdFN0YXJ0c1dpdGhBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuVGV4dE5vdEVuZHNXaXRoQW55T2Y6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLkFycmF5Q29udGFpbnNBbnlPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuQXJyYXlEb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Db250YWluc0FueU9mOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5Eb2VzTm90Q29udGFpbkFueU9mOlxuICAgICAgICAgICAgICAgIHJldHVybiBVc2VyQ29tcGFyYXRvclR5cGUuU3RyaW5nTGlzdDtcblxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJFcXVhbHM6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLk51bWJlckRvZXNOb3RFcXVhbDpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuTnVtYmVyTGVzczpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuTnVtYmVyTGVzc09yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJHcmVhdGVyOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5OdW1iZXJHcmVhdGVyT3JFcXVhbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5OdW1iZXI7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVySXNPbmVPZjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVySXNOb3RPbmVPZjpcbiAgICAgICAgICAgICAgICByZXR1cm4gVXNlckNvbXBhcmF0b3JUeXBlLlNlbXZlckxpc3Q7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVyR3JlYXRlcjpcbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuU2VtVmVyR3JlYXRlck9yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW1WZXJMZXNzOlxuICAgICAgICAgICAgY2FzZSBVc2VyQ29tcGFyYXRvci5TZW1WZXJMZXNzT3JFcXVhbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5TZW12ZXI7XG5cbiAgICAgICAgICAgIGNhc2UgVXNlckNvbXBhcmF0b3IuRGF0ZVRpbWVCZWZvcmU6XG4gICAgICAgICAgICBjYXNlIFVzZXJDb21wYXJhdG9yLkRhdGVUaW1lQWZ0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXJDb21wYXJhdG9yVHlwZS5EYXRlVGltZTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGU6IFNldHRpbmdUeXBlLCBmZWF0dXJlRmxhZ0xpbWl0YXRpb25zOiBJRmVhdHVyZUZsYWdMaW1pdGF0aW9ucyk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsaWRhdGVOdW1iZXJOYW4sIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oLTIxNDc0ODM2NDgpLCBWYWxpZGF0b3JzLm1heCgyMTQ3NDgzNjQ3KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHdob2xlTnVtYmVyUmVnZXgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbG9zcy1vZi1wcmVjaXNpb25cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsaWRhdGVOdW1iZXJOYW4sIFZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKC0xLjc5NzY5MzEzNDg2MjMyRSszMDgpLCBWYWxpZGF0b3JzLm1heCgxLjc5NzY5MzEzNDg2MjMyRSszMDgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICAgICAgICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucy5tYXhTdHJpbmdGbGFnVmFsdWVMZW5ndGggPz8gMTAwMDAwKV07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVOdW1iZXJOYW4oYzogRm9ybUNvbnRyb2w8bnVtYmVyPikge1xuICAgICAgICBpZiAoYy52YWx1ZSA9PT0gbnVsbCB8fCBpc05hTihjLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU51bWJlck5hbjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhbGlkYXRlU2VtVmVyKGM6IEZvcm1Db250cm9sPHN0cmluZz4pIHtcbiAgICAgICAgaWYgKHZhbGlkKGMudmFsdWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlU2VtVmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVFbXB0eVN0cmluZyhjOiBGb3JtQ29udHJvbDxzdHJpbmc+KSB7XG4gICAgICAgIGlmIChjLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVBlcmNlbnRhZ2VTdW0oYzogRm9ybUFycmF5PEZvcm1Hcm91cDxQZXJjZW50YWdlT3B0aW9uRm9ybT4+KSB7XG4gICAgICAgIGlmIChjPy5jb250cm9scy5tYXAoaSA9PiBpLmNvbnRyb2xzLnBlcmNlbnRhZ2UudmFsdWUpLnJlZHVjZSgoYSwgYikgPT4geyByZXR1cm4gYSArIGIgfSwgMCkgIT09IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVBlcmNlbnRhZ2VTdW06IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1BlcmNlbnRhZ2VPbmx5VGFyZ2V0aW5nUnVsZShmb3JtR3JvdXA6IEZvcm1Hcm91cDxUYXJnZXRpbmdSdWxlRm9ybT4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFmb3JtR3JvdXAuY29udHJvbHMudmFsdWVcbiAgICAgICAgICAgICYmICFmb3JtR3JvdXAuY29udHJvbHMuY29uZGl0aW9ucy5sZW5ndGhcbiAgICAgICAgICAgICYmICEhZm9ybUdyb3VwLmNvbnRyb2xzLnBlcmNlbnRhZ2VPcHRpb25zPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgYWRkQ29tcGFyaXNvblZhbHVlTGlzdFZhbHVlSXRlbXMoXG4gICAgICAgIHVzZXJDb21wYXJhdG9yOiBVc2VyQ29tcGFyYXRvcixcbiAgICAgICAgbGlzdFZhbHVlRm9ybUFycmF5OiBGb3JtQXJyYXk8Rm9ybUdyb3VwPENvbXBhcmlzb25WYWx1ZUxpc3RGb3JtPj4sXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUxpc3Q6IElDb21wYXJpc29uVmFsdWVMaXN0TW9kZWxbXSxcbiAgICAgICAgZmVhdHVyZUZsYWdMaW1pdGF0aW9uczogSUZlYXR1cmVGbGFnTGltaXRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9XG4gICAgICAgICAgICB0aGlzLmdldENvbXBhcmlzb25WYWx1ZVR5cGUodXNlckNvbXBhcmF0b3IpID09PSBVc2VyQ29tcGFyYXRvclR5cGUuU2VtdmVyTGlzdFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRDb21wYXJpc29uVmFsdWVTZW12ZXJMaXN0SXRlbVZhbGlkYXRvcnMoZmVhdHVyZUZsYWdMaW1pdGF0aW9ucylcbiAgICAgICAgICAgICAgICA6IHRoaXMuZ2V0Q29tcGFyaXNvblZhbHVlU3RyaW5nTGlzdEl0ZW1WYWxpZGF0b3JzKGZlYXR1cmVGbGFnTGltaXRhdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXROZXh0SW5kZXgobGlzdFZhbHVlRm9ybUFycmF5KTtcblxuICAgICAgICBjb21wYXJpc29uVmFsdWVMaXN0LmZvckVhY2goXG4gICAgICAgICAgICAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZW5lcmF0ZUNvbXBhcmlzb25WYWx1ZUxpc3RGb3JtR3JvdXAoY29tcGFyaXNvblZhbHVlTGlzdEl0ZW0sIGZhbHNlLCB2YWxpZGF0b3JzLCBtYXhJbmRleCArIGluZGV4KTtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgbGlzdFZhbHVlRm9ybUFycmF5LnB1c2goZm9ybUdyb3VwLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBsaXN0VmFsdWVGb3JtQXJyYXkubWFya0FzRGlydHkoKTtcbiAgICB9XG59XG4iXX0=
@@ -17,10 +17,10 @@ export class MessagingService {
17
17
  dismissCurrentSnack() {
18
18
  this.snackBar.dismiss();
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MessagingService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MessagingService }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagingService, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MessagingService, decorators: [{
24
24
  type: Injectable
25
25
  }], ctorParameters: () => [{ type: i1.MatSnackBar }] });
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvX3NlcnZpY2VzL21lc3NhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBSSxDQUFDO0lBRTlDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxVQUFVLE9BQU8sa0NBQWtDLEVBQ25ELE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSTtRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsQ0FDMUUsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQTFCUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxuXG4gICAgc2hvd0Vycm9yU25hY2sobWVzc2FnZSA9ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA2MDAwMCkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgICAgICBgT29vcHMuICR7bWVzc2FnZX0gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHVzLmAsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAncmVkLXNuYWNrYmFyJyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2hvd1N1Y2Nlc3NTbmFjayhtZXNzYWdlID0gJ1N1Y2Nlc3MuJywgYWN0aW9uID0gbnVsbCwgZHVyYXRpb25NcyA9IDI1MDApIHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgbWVzc2FnZSwgYWN0aW9uLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zLCBwYW5lbENsYXNzOiAnZ3JlZW4tc25hY2tiYXInIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG93V2FybmluZ1NuYWNrKG1lc3NhZ2UgPSAnU3VjY2Vzcy4nLCBhY3Rpb24gPSAnRGlzbWlzcycsIGR1cmF0aW9uTXMgPSA1MDAwKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgIG1lc3NhZ2UsIGFjdGlvbiwgeyBkdXJhdGlvbjogZHVyYXRpb25NcywgcGFuZWxDbGFzczogJ3llbGxvdy1zbmFja2JhcicgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc21pc3NDdXJyZW50U25hY2soKSB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuZGlzbWlzcygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -65,10 +65,10 @@ export class PublicApiService {
65
65
  getDashboardBasePath() {
66
66
  return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PublicApiService, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PublicApiService, decorators: [{
72
72
  type: Injectable,
73
73
  args: [{ providedIn: 'root' }]
74
74
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Configuration, decorators: [{
@@ -161,10 +161,10 @@ export class SettingListFormHelper {
161
161
  ? FormHelper.normalizeNumberStoredAsString(comparisonValue)
162
162
  : comparisonValue;
163
163
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
165
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
165
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
166
166
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SettingListFormHelper, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SettingListFormHelper, decorators: [{
168
168
  type: Injectable,
169
169
  args: [{ providedIn: 'root' }]
170
170
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
@@ -1,10 +1,10 @@
1
1
  import { Directive, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class TrackingDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: TrackingDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TrackingDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -104,8 +104,8 @@ export class AceEditorComponent {
104
104
  registerOnTouched() {
105
105
  /* unused */
106
106
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: AceEditorComponent, selector: "app-ace-editor", inputs: { value: "value", readOnly: "readOnly" }, outputs: { valueChange: "valueChange", onChange: "onChange" }, providers: [
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: AceEditorComponent, selector: "app-ace-editor", inputs: { value: "value", readOnly: "readOnly" }, outputs: { valueChange: "valueChange", onChange: "onChange" }, providers: [
109
109
  {
110
110
  provide: NG_VALUE_ACCESSOR,
111
111
  useExisting: forwardRef(() => AceEditorComponent),
@@ -113,7 +113,7 @@ export class AceEditorComponent {
113
113
  }
114
114
  ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["aceEditor"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ace-editor-container\" #aceEditor></div>", styles: [".ace-editor-container{width:100%;height:100%;border:thin solid #83b2ff;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
115
  }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AceEditorComponent, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AceEditorComponent, decorators: [{
117
117
  type: Component,
118
118
  args: [{ selector: 'app-ace-editor', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
119
119
  {
@@ -44,10 +44,10 @@ export class AuthorizationComponent {
44
44
  getPublicApiUrl() {
45
45
  return this.publicApiService.getDashboardBasePath() + '/my-account/public-api-credentials';
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AuthorizationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: AuthorizationComponent, selector: "configcat-authorization", inputs: { basePath: "basePath", integrationName: "integrationName" }, outputs: { authorized: "authorized", error: "error" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AuthorizationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: AuthorizationComponent, selector: "configcat-authorization", inputs: { basePath: "basePath", integrationName: "integrationName" }, outputs: { authorized: "authorized", error: "error" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AuthorizationComponent, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AuthorizationComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'configcat-authorization', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"] }]
53
53
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.PublicApiService }], propDecorators: { basePath: [{
@@ -10,10 +10,10 @@ export class BaseSelectComponent extends BaseComponent {
10
10
  openChanged(event) {
11
11
  this.dropdownOpened.emit(event);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseSelectComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BaseSelectComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{
19
19
  selector: 'base-select',
@@ -29,10 +29,10 @@ export class BaseComponent {
29
29
  createSegmentsService() {
30
30
  return this.publicApiService.createSegmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: BaseComponent, selector: "base", inputs: { basePath: "basePath", basicAuthUsername: "basicAuthUsername", basicAuthPassword: "basicAuthPassword" }, ngImport: i0, template: '<div></div>', isInline: true }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BaseComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BaseComponent, selector: "base", inputs: { basePath: "basePath", basicAuthUsername: "basicAuthUsername", basicAuthPassword: "basicAuthPassword" }, ngImport: i0, template: '<div></div>', isInline: true }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BaseComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BaseComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{
38
38
  selector: 'base',
@@ -5,10 +5,10 @@ export class Configuration {
5
5
  this.basePath = 'https://api.configcat.com';
6
6
  this.dashboardBasePath = 'https://app.configcat.com';
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: Configuration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: Configuration }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Configuration, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: Configuration, decorators: [{
12
12
  type: Injectable
13
13
  }] });
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBSUksYUFBUSxHQUFHLDJCQUEyQixDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO0tBQ25EOzhHQUxZLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgIGJhc2ljQXV0aFVzZXJuYW1lPzogc3RyaW5nO1xuICAgIGJhc2ljQXV0aFBhc3N3b3JkPzogc3RyaW5nO1xuICAgIGJhc2VQYXRoID0gJ2h0dHBzOi8vYXBpLmNvbmZpZ2NhdC5jb20nO1xuICAgIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xufVxuIl19
@@ -15,10 +15,10 @@ export class ConfirmationDialogComponent {
15
15
  cancel() {
16
16
  this.dialogRef.close('cancel');
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: ConfirmationDialogComponent, selector: "app-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ConfirmationDialogComponent, selector: "app-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'app-confirmation-dialog', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>" }]
24
24
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -14,10 +14,10 @@ export class DeleteSettingDialogComponent {
14
14
  cancel() {
15
15
  this.dialogRef.close({ button: 'cancel' });
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DeleteSettingDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: DeleteSettingDialogComponent, selector: "app-delete-setting-dialog", ngImport: i0, template: "<h1 mat-dialog-title>Remove Feature Flag or Setting from {{data.system}}</h1>\n<div mat-dialog-actions class=\"container\">\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"remove()\">Remove from {{data.ticketType}}</button>\n <button type=\"button\" mat-raised-button (click)=\"cancel()\">Cancel</button>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DeleteSettingDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DeleteSettingDialogComponent, selector: "app-delete-setting-dialog", ngImport: i0, template: "<h1 mat-dialog-title>Remove Feature Flag or Setting from {{data.system}}</h1>\n<div mat-dialog-actions class=\"container\">\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"remove()\">Remove from {{data.ticketType}}</button>\n <button type=\"button\" mat-raised-button (click)=\"cancel()\">Cancel</button>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DeleteSettingDialogComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DeleteSettingDialogComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'app-delete-setting-dialog', template: "<h1 mat-dialog-title>Remove Feature Flag or Setting from {{data.system}}</h1>\n<div mat-dialog-actions class=\"container\">\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"remove()\">Remove from {{data.ticketType}}</button>\n <button type=\"button\" mat-raised-button (click)=\"cancel()\">Cancel</button>\n</div>" }]
23
23
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -67,10 +67,10 @@ export class ExpandDialogComponent {
67
67
  close() {
68
68
  this.dialogRef.close();
69
69
  }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ExpandDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UntypedFormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: ExpandDialogComponent, selector: "configcat-expand-dialog", ngImport: i0, template: "<div mat-dialog-content class=\"container\">\n <mat-form-field appearance=\"outline\" *ngIf=\"!data.multiline\" subscriptSizing=\"dynamic\">\n <mat-label></mat-label>\n <textarea matInput [formControl]=\"data.control\" rows=\"10\"></textarea>\n </mat-form-field>\n <div [formGroup]=\"formGroup\" *ngIf=\"data.multiline\">\n <div *ngFor=\"let valueControl of getValueControls(); let i = index;\" class=\"value-field\">\n <mat-form-field appearance=\"outline\">\n <input matInput [formControl]=\"valueControl\" />\n </mat-form-field>\n <button (click)=\"remove(i)\" mat-icon-button type=\"button\" class=\"no-density-mat-icon-button\"\n matTooltip=\"Remove item\" *ngIf=\"!readOnly\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <button (click)=\"add()\" mat-stroked-button type=\"button\" *ngIf=\"!readOnly\">\n <mat-icon>add</mat-icon>Add item\n </button>\n </div>\n</div>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"close()\">Done</button>\n</div>", styles: [".container>*{width:100%}.container>* .value-field{display:flex;font-size:12px;flex-wrap:nowrap}.container>* .value-field mat-form-field{flex-grow:1}.container>* .no-density-mat-icon-button{width:48px;height:48px;padding:12px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ExpandDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UntypedFormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ExpandDialogComponent, selector: "configcat-expand-dialog", ngImport: i0, template: "<div mat-dialog-content class=\"container\">\n <mat-form-field appearance=\"outline\" *ngIf=\"!data.multiline\" subscriptSizing=\"dynamic\">\n <mat-label></mat-label>\n <textarea matInput [formControl]=\"data.control\" rows=\"10\"></textarea>\n </mat-form-field>\n <div [formGroup]=\"formGroup\" *ngIf=\"data.multiline\">\n <div *ngFor=\"let valueControl of getValueControls(); let i = index;\" class=\"value-field\">\n <mat-form-field appearance=\"outline\">\n <input matInput [formControl]=\"valueControl\" />\n </mat-form-field>\n <button (click)=\"remove(i)\" mat-icon-button type=\"button\" class=\"no-density-mat-icon-button\"\n matTooltip=\"Remove item\" *ngIf=\"!readOnly\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <button (click)=\"add()\" mat-stroked-button type=\"button\" *ngIf=\"!readOnly\">\n <mat-icon>add</mat-icon>Add item\n </button>\n </div>\n</div>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"close()\">Done</button>\n</div>", styles: [".container>*{width:100%}.container>* .value-field{display:flex;font-size:12px;flex-wrap:nowrap}.container>* .value-field mat-form-field{flex-grow:1}.container>* .no-density-mat-icon-button{width:48px;height:48px;padding:12px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
72
72
  }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ExpandDialogComponent, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ExpandDialogComponent, decorators: [{
74
74
  type: Component,
75
75
  args: [{ selector: 'configcat-expand-dialog', template: "<div mat-dialog-content class=\"container\">\n <mat-form-field appearance=\"outline\" *ngIf=\"!data.multiline\" subscriptSizing=\"dynamic\">\n <mat-label></mat-label>\n <textarea matInput [formControl]=\"data.control\" rows=\"10\"></textarea>\n </mat-form-field>\n <div [formGroup]=\"formGroup\" *ngIf=\"data.multiline\">\n <div *ngFor=\"let valueControl of getValueControls(); let i = index;\" class=\"value-field\">\n <mat-form-field appearance=\"outline\">\n <input matInput [formControl]=\"valueControl\" />\n </mat-form-field>\n <button (click)=\"remove(i)\" mat-icon-button type=\"button\" class=\"no-density-mat-icon-button\"\n matTooltip=\"Remove item\" *ngIf=\"!readOnly\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <button (click)=\"add()\" mat-stroked-button type=\"button\" *ngIf=\"!readOnly\">\n <mat-icon>add</mat-icon>Add item\n </button>\n </div>\n</div>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"close()\">Done</button>\n</div>", styles: [".container>*{width:100%}.container>* .value-field{display:flex;font-size:12px;flex-wrap:nowrap}.container>* .value-field mat-form-field{flex-grow:1}.container>* .no-density-mat-icon-button{width:48px;height:48px;padding:12px}\n"] }]
76
76
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.UntypedFormBuilder }, { type: undefined, decorators: [{
@@ -16,10 +16,10 @@ export class InfoDialogComponent {
16
16
  this.data.secondaryButtonAction();
17
17
  this.dialogRef.close();
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InfoDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: InfoDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"ok()\">Ok</button>\n <button type=\"button\" mat-stroked-button *ngIf=\"data.secondaryButtonLabel\" (click)=\"secondaryButtonAction()\">{{data.secondaryButtonLabel}}</button>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InfoDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: InfoDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"ok()\">Ok</button>\n <button type=\"button\" mat-stroked-button *ngIf=\"data.secondaryButtonLabel\" (click)=\"secondaryButtonAction()\">{{data.secondaryButtonLabel}}</button>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: InfoDialogComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InfoDialogComponent, decorators: [{
23
23
  type: Component,
24
24
  args: [{ selector: 'app-info-dialog', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"ok()\">Ok</button>\n <button type=\"button\" mat-stroked-button *ngIf=\"data.secondaryButtonLabel\" (click)=\"secondaryButtonAction()\">{{data.secondaryButtonLabel}}</button>\n</div>" }]
25
25
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -26,10 +26,10 @@ export class ReasonDialogComponent {
26
26
  cancel() {
27
27
  this.dialogRef.close({ button: 'cancel' });
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ReasonDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: ReasonDialogComponent, selector: "configcat-reason-dialog", ngImport: i0, template: "<h1 mat-dialog-title>Add notes</h1>\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"handleSaveButton()\">\n <div mat-dialog-content class=\"container\">\n <p>This will appear in the Audit Log (in the Notes section when you expand the corresponding entry).</p>\n <mat-form-field appearance=\"outline\">\n <mat-label>Note</mat-label>\n <textarea matInput formControlName=\"reason\" name=\"reason\" placeholder=\"I'm changing settings because...\"\n rows=\"3\"></textarea>\n <mat-error *ngIf=\"formGroup.controls.reason.invalid\">The field is required.</mat-error>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button type=\"submit\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\">Add notes & Save</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\">Cancel</button>\n </div>\n</form>", styles: [".container>*{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ReasonDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ReasonDialogComponent, selector: "configcat-reason-dialog", ngImport: i0, template: "<h1 mat-dialog-title>Add notes</h1>\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"handleSaveButton()\">\n <div mat-dialog-content class=\"container\">\n <p>This will appear in the Audit Log (in the Notes section when you expand the corresponding entry).</p>\n <mat-form-field appearance=\"outline\">\n <mat-label>Note</mat-label>\n <textarea matInput formControlName=\"reason\" name=\"reason\" placeholder=\"I'm changing settings because...\"\n rows=\"3\"></textarea>\n <mat-error *ngIf=\"formGroup.controls.reason.invalid\">The field is required.</mat-error>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button type=\"submit\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\">Add notes & Save</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\">Cancel</button>\n </div>\n</form>", styles: [".container>*{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ReasonDialogComponent, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ReasonDialogComponent, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'configcat-reason-dialog', template: "<h1 mat-dialog-title>Add notes</h1>\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"handleSaveButton()\">\n <div mat-dialog-content class=\"container\">\n <p>This will appear in the Audit Log (in the Notes section when you expand the corresponding entry).</p>\n <mat-form-field appearance=\"outline\">\n <mat-label>Note</mat-label>\n <textarea matInput formControlName=\"reason\" name=\"reason\" placeholder=\"I'm changing settings because...\"\n rows=\"3\"></textarea>\n <mat-error *ngIf=\"formGroup.controls.reason.invalid\">The field is required.</mat-error>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button type=\"submit\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\">Add notes & Save</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\">Cancel</button>\n </div>\n</form>", styles: [".container>*{width:100%}\n"] }]
35
35
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.UntypedFormBuilder }] });
@@ -15,10 +15,10 @@ export class RerouteDialogComponent {
15
15
  cancel() {
16
16
  this.dialogRef.close('cancel');
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: RerouteDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: RerouteDialogComponent, selector: "app-reroute-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <a href=\"{{data.yesButtonLink}}\" class=\"hidden-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n </a>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>", styles: [".hidden-link:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RerouteDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: RerouteDialogComponent, selector: "app-reroute-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <a href=\"{{data.yesButtonLink}}\" class=\"hidden-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n </a>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>", styles: [".hidden-link:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: RerouteDialogComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RerouteDialogComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'app-reroute-dialog', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div [innerHTML]=\"data.body\"></div>\n</div>\n<br>\n<div mat-dialog-actions>\n <a href=\"{{data.yesButtonLink}}\" class=\"hidden-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button\n [color]=\"data.buttonColor ? data.buttonColor : 'primary'\" (click)=\"yes()\"\n data-robot=\"dialogYes\">{{data.yesButtonLabel ? data.yesButtonLabel : 'Yes'}}</button>\n </a>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\" data-robot=\"dialogNo\"\n *ngIf=\"!data.hideNoButton\">{{data.noButtonLabel ?\n data.noButtonLabel : 'Cancel'}}</button>\n</div>", styles: [".hidden-link:focus{outline:none}\n"] }]
24
24
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{