ng-configcat-publicapi-ui 2.13.1 → 3.0.0

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 (59) hide show
  1. package/esm2020/lib/_directives/index.mjs +2 -0
  2. package/esm2020/lib/_directives/input-display-normalizer.directive.mjs +38 -0
  3. package/esm2020/lib/_models/deleteSettingModel.mjs +2 -0
  4. package/esm2020/lib/_models/index.mjs +2 -1
  5. package/esm2020/lib/_services/form-helper.mjs +44 -1
  6. package/esm2020/lib/_services/platform-helper.mjs +7 -0
  7. package/esm2020/lib/_services/public-api.service.mjs +3 -3
  8. package/esm2020/lib/_services/setting-list-form-helper.mjs +26 -5
  9. package/esm2020/lib/authorization/authorization.component.mjs +5 -5
  10. package/esm2020/lib/base/base.component.mjs +4 -4
  11. package/esm2020/lib/configuration.mjs +3 -3
  12. package/esm2020/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +27 -0
  13. package/esm2020/lib/dialogs/expand-dialog/expand-dialog.component.mjs +6 -5
  14. package/esm2020/lib/dialogs/reason-dialog/reason-dialog.component.mjs +5 -5
  15. package/esm2020/lib/dialogs/save-snackbar/save-snackbar.component.mjs +3 -3
  16. package/esm2020/lib/ng-configcat-publicapi-ui.module.mjs +18 -13
  17. package/esm2020/lib/selects/config-select/config-select.component.mjs +6 -6
  18. package/esm2020/lib/selects/environment-select/environment-select.component.mjs +5 -5
  19. package/esm2020/lib/selects/product-select/product-select.component.mjs +4 -4
  20. package/esm2020/lib/selects/setting-select/setting-select.component.mjs +5 -5
  21. package/esm2020/lib/setting-item/setting-item.component.mjs +5 -18
  22. package/esm2020/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +9 -9
  23. package/esm2020/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +29 -28
  24. package/esm2020/lib/setting-list/setting/setting.component.mjs +7 -17
  25. package/esm2020/lib/setting-list/setting/value/value.component.mjs +10 -5
  26. package/esm2020/lib/setting-list/setting-list.component.mjs +26 -39
  27. package/esm2020/public-api.mjs +2 -1
  28. package/fesm2015/ng-configcat-publicapi-ui.mjs +270 -191
  29. package/fesm2015/ng-configcat-publicapi-ui.mjs.map +1 -1
  30. package/fesm2020/ng-configcat-publicapi-ui.mjs +267 -191
  31. package/fesm2020/ng-configcat-publicapi-ui.mjs.map +1 -1
  32. package/lib/_directives/index.d.ts +1 -0
  33. package/lib/_directives/input-display-normalizer.directive.d.ts +13 -0
  34. package/lib/_models/deleteSettingModel.d.ts +6 -0
  35. package/lib/_models/index.d.ts +1 -0
  36. package/lib/_services/form-helper.d.ts +12 -0
  37. package/lib/_services/platform-helper.d.ts +3 -0
  38. package/lib/_services/setting-list-form-helper.d.ts +3 -1
  39. package/lib/authorization/authorization.component.d.ts +1 -1
  40. package/lib/base/base.component.d.ts +1 -1
  41. package/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.d.ts +17 -0
  42. package/lib/dialogs/expand-dialog/expand-dialog.component.d.ts +1 -1
  43. package/lib/dialogs/reason-dialog/reason-dialog.component.d.ts +1 -1
  44. package/lib/dialogs/save-snackbar/save-snackbar.component.d.ts +1 -1
  45. package/lib/ng-configcat-publicapi-ui.module.d.ts +23 -22
  46. package/lib/selects/config-select/config-select.component.d.ts +1 -1
  47. package/lib/selects/environment-select/environment-select.component.d.ts +1 -1
  48. package/lib/selects/product-select/product-select.component.d.ts +1 -1
  49. package/lib/selects/setting-select/setting-select.component.d.ts +1 -1
  50. package/lib/setting-item/setting-item.component.d.ts +1 -4
  51. package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +1 -1
  52. package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +4 -2
  53. package/lib/setting-list/setting/setting.component.d.ts +5 -9
  54. package/lib/setting-list/setting/value/value.component.d.ts +2 -1
  55. package/lib/setting-list/setting-list.component.d.ts +6 -6
  56. package/package.json +4 -4
  57. package/public-api.d.ts +1 -0
  58. package/esm2020/lib/dialogs/concurrent-dialog/concurrent-dialog.component.mjs +0 -25
  59. package/lib/dialogs/concurrent-dialog/concurrent-dialog.component.d.ts +0 -12
@@ -8,11 +8,9 @@ import * as i2 from "../setting-list/setting-list.component";
8
8
  export class SettingItemComponent extends BaseComponent {
9
9
  constructor(publicApiService) {
10
10
  super(publicApiService);
11
- this.canEditSetting = true;
12
11
  this.canDeleteSetting = true;
13
12
  this.deleteSettingText = 'Delete setting';
14
13
  this.showEnvironmentName = true;
15
- this.editSettingRequested = new EventEmitter();
16
14
  this.deleteSettingRequested = new EventEmitter();
17
15
  this.loadSucceeded = new EventEmitter();
18
16
  this.loadFailed = new EventEmitter();
@@ -70,13 +68,6 @@ export class SettingItemComponent extends BaseComponent {
70
68
  }
71
69
  ngOnInit() {
72
70
  }
73
- onEditSettingRequested(setting) {
74
- this.editSettingRequested.emit({
75
- setting: setting.setting,
76
- environment: this.settingValue.environment,
77
- config: this.settingValue.config
78
- });
79
- }
80
71
  onDeleteSettingRequested(setting) {
81
72
  this.deleteSettingRequested.emit({
82
73
  setting: setting.setting,
@@ -88,11 +79,11 @@ export class SettingItemComponent extends BaseComponent {
88
79
  this.formValuesChanged.emit();
89
80
  }
90
81
  }
91
- SettingItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SettingItemComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component });
92
- SettingItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: SettingItemComponent, selector: "configcat-setting-item", inputs: { productId: "productId", environmentId: "environmentId", configId: "configId", settingId: "settingId", canEditSetting: "canEditSetting", canDeleteSetting: "canDeleteSetting", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName" }, outputs: { editSettingRequested: "editSettingRequested", deleteSettingRequested: "deleteSettingRequested", loadSucceeded: "loadSucceeded", loadFailed: "loadFailed", saveSucceeded: "saveSucceeded", saveFailed: "saveFailed", formValuesChanged: "formValuesChanged" }, usesInheritance: true, ngImport: i0, template: "<configcat-setting-list [canEditSetting]=\"canEditSetting\" [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (editSettingRequested)=\"onEditSettingRequested($event)\" (deleteSettingRequested)=\"onDeleteSettingRequested($event)\"\n [deleteSettingText]=\"deleteSettingText\" [showEnvironmentName]=\"showEnvironmentName\"\n (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\" [configId]=\"configId\" [environmentId]=\"environmentId\"\n [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>", styles: [".container{font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin:1em 0}.container .setting-full{position:relative;display:flex;flex-wrap:nowrap}.container .setting-full .setting-details{display:flex;flex-direction:column;width:400px;padding:1em 0 1em 1em}.container .setting-full .setting-details>*{margin:.5em}.container .setting-full .setting-details .setting-name{flex-direction:row}.container .setting-full .setting-details .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.container .setting-full .setting-details .setting-key{word-wrap:break-word}.container .setting-full .setting-details .description{font-size:.8em}.container .setting-full .setting-details code{background-color:#d3d3d3;padding:3px 6px}.container .setting-full .rules-list{width:100%;padding:1em}.container .setting-full .targeting-button{margin-left:1rem;margin-bottom:1em}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;border-radius:4px;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;min-width:100px}.end{margin-left:auto}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}@media (max-width: 1200px){.setting-full .setting-details{width:300px}}@media (max-width: 700px){.setting-full{flex-wrap:wrap}.setting-full .setting-details{padding:.2em 0 .2em .2em}.setting-full .all-other{margin:.5em .3em}}\n"], dependencies: [{ kind: "component", type: i2.SettingListComponent, selector: "configcat-setting-list", inputs: ["productId", "environmentId", "configId", "dashboardBasePath", "canEditSetting", "canDeleteSetting", "onSave", "loadSettingValues", "loadSegments", "deleteSettingText", "showEnvironmentName"], outputs: ["editSettingRequested", "deleteSettingRequested", "formValuesChanged"] }] });
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: SettingItemComponent, decorators: [{
82
+ SettingItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingItemComponent, deps: [{ token: i1.PublicApiService }], target: i0.ɵɵFactoryTarget.Component });
83
+ SettingItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SettingItemComponent, selector: "configcat-setting-item", inputs: { productId: "productId", environmentId: "environmentId", configId: "configId", settingId: "settingId", canDeleteSetting: "canDeleteSetting", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName" }, outputs: { deleteSettingRequested: "deleteSettingRequested", loadSucceeded: "loadSucceeded", loadFailed: "loadFailed", saveSucceeded: "saveSucceeded", saveFailed: "saveFailed", formValuesChanged: "formValuesChanged" }, usesInheritance: true, ngImport: i0, template: "<configcat-setting-list [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\"\n [configId]=\"configId\" [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>", styles: [".container{font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin:1em 0}.container .setting-full{position:relative;display:flex;flex-wrap:nowrap}.container .setting-full .setting-details{display:flex;flex-direction:column;width:400px;padding:1em 0 1em 1em}.container .setting-full .setting-details>*{margin:.5em}.container .setting-full .setting-details .setting-name{flex-direction:row}.container .setting-full .setting-details .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.container .setting-full .setting-details .setting-key{word-wrap:break-word}.container .setting-full .setting-details .description{font-size:.8em}.container .setting-full .setting-details code{background-color:#d3d3d3;padding:3px 6px}.container .setting-full .rules-list{width:100%;padding:1em}.container .setting-full .targeting-button{margin-left:1rem;margin-bottom:1em}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;border-radius:4px;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;min-width:100px}.end{margin-left:auto}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}@media (max-width: 1200px){.setting-full .setting-details{width:300px}}@media (max-width: 700px){.setting-full{flex-wrap:wrap}.setting-full .setting-details{padding:.2em 0 .2em .2em}.setting-full .all-other{margin:.5em .3em}}\n"], dependencies: [{ kind: "component", type: i2.SettingListComponent, selector: "configcat-setting-list", inputs: ["productId", "environmentId", "configId", "dashboardBasePath", "canDeleteSetting", "onSave", "loadSettingValues", "loadSegments", "deleteSettingText", "showEnvironmentName"], outputs: ["deleteSettingRequested", "formValuesChanged"] }] });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingItemComponent, decorators: [{
94
85
  type: Component,
95
- args: [{ selector: 'configcat-setting-item', template: "<configcat-setting-list [canEditSetting]=\"canEditSetting\" [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (editSettingRequested)=\"onEditSettingRequested($event)\" (deleteSettingRequested)=\"onDeleteSettingRequested($event)\"\n [deleteSettingText]=\"deleteSettingText\" [showEnvironmentName]=\"showEnvironmentName\"\n (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\" [configId]=\"configId\" [environmentId]=\"environmentId\"\n [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>", styles: [".container{font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin:1em 0}.container .setting-full{position:relative;display:flex;flex-wrap:nowrap}.container .setting-full .setting-details{display:flex;flex-direction:column;width:400px;padding:1em 0 1em 1em}.container .setting-full .setting-details>*{margin:.5em}.container .setting-full .setting-details .setting-name{flex-direction:row}.container .setting-full .setting-details .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.container .setting-full .setting-details .setting-key{word-wrap:break-word}.container .setting-full .setting-details .description{font-size:.8em}.container .setting-full .setting-details code{background-color:#d3d3d3;padding:3px 6px}.container .setting-full .rules-list{width:100%;padding:1em}.container .setting-full .targeting-button{margin-left:1rem;margin-bottom:1em}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;border-radius:4px;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;min-width:100px}.end{margin-left:auto}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}@media (max-width: 1200px){.setting-full .setting-details{width:300px}}@media (max-width: 700px){.setting-full{flex-wrap:wrap}.setting-full .setting-details{padding:.2em 0 .2em .2em}.setting-full .all-other{margin:.5em .3em}}\n"] }]
86
+ args: [{ selector: 'configcat-setting-item', template: "<configcat-setting-list [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\"\n [configId]=\"configId\" [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>", styles: [".container{font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin:1em 0}.container .setting-full{position:relative;display:flex;flex-wrap:nowrap}.container .setting-full .setting-details{display:flex;flex-direction:column;width:400px;padding:1em 0 1em 1em}.container .setting-full .setting-details>*{margin:.5em}.container .setting-full .setting-details .setting-name{flex-direction:row}.container .setting-full .setting-details .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.container .setting-full .setting-details .setting-key{word-wrap:break-word}.container .setting-full .setting-details .description{font-size:.8em}.container .setting-full .setting-details code{background-color:#d3d3d3;padding:3px 6px}.container .setting-full .rules-list{width:100%;padding:1em}.container .setting-full .targeting-button{margin-left:1rem;margin-bottom:1em}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;border-radius:4px;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;min-width:100px}.end{margin-left:auto}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}@media (max-width: 1200px){.setting-full .setting-details{width:300px}}@media (max-width: 700px){.setting-full{flex-wrap:wrap}.setting-full .setting-details{padding:.2em 0 .2em .2em}.setting-full .all-other{margin:.5em .3em}}\n"] }]
96
87
  }], ctorParameters: function () { return [{ type: i1.PublicApiService }]; }, propDecorators: { productId: [{
97
88
  type: Input
98
89
  }], environmentId: [{
@@ -101,16 +92,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
101
92
  type: Input
102
93
  }], settingId: [{
103
94
  type: Input
104
- }], canEditSetting: [{
105
- type: Input
106
95
  }], canDeleteSetting: [{
107
96
  type: Input
108
97
  }], deleteSettingText: [{
109
98
  type: Input
110
99
  }], showEnvironmentName: [{
111
100
  type: Input
112
- }], editSettingRequested: [{
113
- type: Output
114
101
  }], deleteSettingRequested: [{
115
102
  type: Output
116
103
  }], loadSucceeded: [{
@@ -124,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
124
111
  }], formValuesChanged: [{
125
112
  type: Output
126
113
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWl0ZW0vc2V0dGluZy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWl0ZW0vc2V0dGluZy1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBU2pELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUFhO0lBMEJyRCxZQUNFLGdCQUFrQztRQUNsQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQXJCakIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUxQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUs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VUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9wdGlvbmFsLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRMaXN0TW9kZWwsIFNldHRpbmdWYWx1ZU1vZGVsLCBVcGRhdGVTZXR0aW5nVmFsdWVNb2RlbCB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFB1YmxpY0FwaVNlcnZpY2UgfSBmcm9tICcuLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgU2V0dGluZ1ZhbHVlc01vZGVsLCBVcGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwgfSBmcm9tICcuLi9fbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXNldHRpbmctaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLWl0ZW0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nSXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNldHRpbmdJZCE6IG51bWJlcjtcblxuICBASW5wdXQoKSBjYW5FZGl0U2V0dGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBlZGl0U2V0dGluZ1JlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGxvYWRTdWNjZWVkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBsb2FkRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2F2ZVN1Y2NlZWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNhdmVGYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGZvcm1WYWx1ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHNldHRpbmdWYWx1ZSE6IFNldHRpbmdWYWx1ZU1vZGVsO1xuICBzZWdtZW50cyE6IFNlZ21lbnRMaXN0TW9kZWxbXTtcbiAgZGFzaGJvYXJkQmFzZVBhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWNBcGlTZXJ2aWNlOiBQdWJsaWNBcGlTZXJ2aWNlKSB7XG4gICAgc3VwZXIocHVibGljQXBpU2VydmljZSk7XG4gICAgdGhpcy5kYXNoYm9hcmRCYXNlUGF0aCA9IHB1YmxpY0FwaVNlcnZpY2UuZ2V0RGFzaGJvYXJkQmFzZVBhdGgoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbG9hZFNldHRpbmdWYWx1ZXMgPSAoKTogT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZXR0aW5nVmFsdWVzU2VydmljZSgpLmdldFNldHRpbmdWYWx1ZSh0aGlzLmVudmlyb25tZW50SWQsIHRoaXMuc2V0dGluZ0lkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzZXR0aW5nVmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlID0gc2V0dGluZ1ZhbHVlO1xuXG4gICAgICAgICAgY29uc3Qgc2V0dGluZ1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIHNldHRpbmdWYWx1ZXM6IFtzZXR0aW5nVmFsdWVdLFxuICAgICAgICAgICAgcmVhZE9ubHk6IHNldHRpbmdWYWx1ZS5yZWFkT25seSxcbiAgICAgICAgICAgIGNvbmZpZzogc2V0dGluZ1ZhbHVlLmNvbmZpZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBzZXR0aW5nVmFsdWUuZW52aXJvbm1lbnRcbiAgICAgICAgICB9IGFzIFNldHRpbmdWYWx1ZXNNb2RlbDtcblxuICAgICAgICAgIHRoaXMubG9hZFN1Y2NlZWRlZC5lbWl0KHNldHRpbmdWYWx1ZXMpO1xuICAgICAgICAgIHJldHVybiBzZXR0aW5nVmFsdWVzO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkRmFpbGVkLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2FkU2VnbWVudHMgPSAoKTogT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWdtZW50c1NlcnZpY2UoKS5nZXRTZWdtZW50cyh0aGlzLnByb2R1Y3RJZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoc2VnbWVudHMgPT4ge1xuICAgICAgICAgIHRoaXMuc2VnbWVudHMgPSBzZWdtZW50cztcbiAgICAgICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgaGFuZGxlU2F2ZSA9IChtb2RlbDogVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTogT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+ID0+IHtcbiAgICBpZiAobW9kZWwuc2V0dGluZ1ZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVNb2RlbCA9IG1vZGVsLnNldHRpbmdWYWx1ZXNbMF0gYXMgVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWw7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZXR0aW5nVmFsdWVzU2VydmljZSgpLnJlcGxhY2VTZXR0aW5nVmFsdWUoXG4gICAgICB0aGlzLmVudmlyb25tZW50SWQsIHRoaXMuc2V0dGluZ0lkLCB1cGRhdGVNb2RlbCwgbW9kZWwucmVhc29uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzZXR0aW5nVmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlID0gc2V0dGluZ1ZhbHVlO1xuXG4gICAgICAgICAgY29uc3Qgc2V0dGluZ1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIHNldHRpbmdWYWx1ZXM6IFtzZXR0aW5nVmFsdWVdLFxuICAgICAgICAgICAgcmVhZE9ubHk6IHNldHRpbmdWYWx1ZS5yZWFkT25seSxcbiAgICAgICAgICAgIGNvbmZpZzogc2V0dGluZ1ZhbHVlLmNvbmZpZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBzZXR0aW5nVmFsdWUuZW52aXJvbm1lbnRcbiAgICAgICAgICB9IGFzIFNldHRpbmdWYWx1ZXNNb2RlbDtcblxuICAgICAgICAgIHRoaXMuc2F2ZVN1Y2NlZWRlZC5lbWl0KHNldHRpbmdWYWx1ZXMpO1xuICAgICAgICAgIHJldHVybiBzZXR0aW5nVmFsdWVzO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlRmFpbGVkLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBvbkVkaXRTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmc6IGFueSkge1xuICAgIHRoaXMuZWRpdFNldHRpbmdSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBzZXR0aW5nOiBzZXR0aW5nLnNldHRpbmcsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXR0aW5nVmFsdWUuZW52aXJvbm1lbnQsXG4gICAgICBjb25maWc6IHRoaXMuc2V0dGluZ1ZhbHVlLmNvbmZpZ1xuICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGVTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmc6IGFueSkge1xuICAgIHRoaXMuZGVsZXRlU2V0dGluZ1JlcXVlc3RlZC5lbWl0KHtcbiAgICAgIHNldHRpbmc6IHNldHRpbmcuc2V0dGluZyxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLnNldHRpbmdWYWx1ZS5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmZpZzogdGhpcy5zZXR0aW5nVmFsdWUuY29uZmlnXG4gICAgfSk7XG4gIH1cblxuICBvbkZvcm1WYWx1ZXNDaGFuZ2VkKCkge1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQuZW1pdCgpO1xuICB9XG59XG4iLCI8Y29uZmlnY2F0LXNldHRpbmctbGlzdCBbY2FuRWRpdFNldHRpbmddPVwiY2FuRWRpdFNldHRpbmdcIiBbY2FuRGVsZXRlU2V0dGluZ109XCJjYW5EZWxldGVTZXR0aW5nXCIgW29uU2F2ZV09XCJoYW5kbGVTYXZlXCJcbiAgICBbbG9hZFNldHRpbmdWYWx1ZXNdPVwibG9hZFNldHRpbmdWYWx1ZXNcIiBbbG9hZFNlZ21lbnRzXT1cImxvYWRTZWdtZW50c1wiXG4gICAgKGVkaXRTZXR0aW5nUmVxdWVzdGVkKT1cIm9uRWRpdFNldHRpbmdSZXF1ZXN0ZWQoJGV2ZW50KVwiIChkZWxldGVTZXR0aW5nUmVxdWVzdGVkKT1cIm9uRGVsZXRlU2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICBbZGVsZXRlU2V0dGluZ1RleHRdPVwiZGVsZXRlU2V0dGluZ1RleHRcIiBbc2hvd0Vudmlyb25tZW50TmFtZV09XCJzaG93RW52aXJvbm1lbnROYW1lXCJcbiAgICAoZm9ybVZhbHVlc0NoYW5nZWQpPVwib25Gb3JtVmFsdWVzQ2hhbmdlZCgpXCIgW3Byb2R1Y3RJZF09XCJwcm9kdWN0SWRcIiBbY29uZmlnSWRdPVwiY29uZmlnSWRcIiBbZW52aXJvbm1lbnRJZF09XCJlbnZpcm9ubWVudElkXCJcbiAgICBbZGFzaGJvYXJkQmFzZVBhdGhdPVwiZGFzaGJvYXJkQmFzZVBhdGhcIj5cbjwvY29uZmlnY2F0LXNldHRpbmctbGlzdD4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWl0ZW0vc2V0dGluZy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWl0ZW0vc2V0dGluZy1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTakQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUF3QnJELFlBQ0UsZ0JBQWtDO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBbkJqQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTFCLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxzQkFBaUIsR0FBRyxJQUFJLFlB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LFFBQVE7SUFDUixDQUFDO0lBbUVELHdCQUF3QixDQUFDLE9BQVk7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUMvQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVztZQUMxQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7O2lIQTVHVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw0aEJDYmpDLHFoQkFLeUI7MkZEUVosb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3Qjt1R0FNekIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWdtZW50TGlzdE1vZGVsLCBTZXR0aW5nVmFsdWVNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWwgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQdWJsaWNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IFNldHRpbmdWYWx1ZXNNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsIH0gZnJvbSAnLi4vX21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvbmZpZ2NhdC1zZXR0aW5nLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZy1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZy1pdGVtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ0l0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBwcm9kdWN0SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVudmlyb25tZW50SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbmZpZ0lkITogc3RyaW5nO1xuICBASW5wdXQoKSBzZXR0aW5nSWQhOiBudW1iZXI7XG5cbiAgQElucHV0KCkgY2FuRGVsZXRlU2V0dGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIGRlbGV0ZVNldHRpbmdUZXh0ID0gJ0RlbGV0ZSBzZXR0aW5nJztcbiAgQElucHV0KCkgc2hvd0Vudmlyb25tZW50TmFtZSA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGxvYWRTdWNjZWVkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBsb2FkRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2F2ZVN1Y2NlZWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNhdmVGYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGZvcm1WYWx1ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHNldHRpbmdWYWx1ZSE6IFNldHRpbmdWYWx1ZU1vZGVsO1xuICBzZWdtZW50cyE6IFNlZ21lbnRMaXN0TW9kZWxbXTtcbiAgZGFzaGJvYXJkQmFzZVBhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWNBcGlTZXJ2aWNlOiBQdWJsaWNBcGlTZXJ2aWNlKSB7XG4gICAgc3VwZXIocHVibGljQXBpU2VydmljZSk7XG4gICAgdGhpcy5kYXNoYm9hcmRCYXNlUGF0aCA9IHB1YmxpY0FwaVNlcnZpY2UuZ2V0RGFzaGJvYXJkQmFzZVBhdGgoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbG9hZFNldHRpbmdWYWx1ZXMgPSAoKTogT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZXR0aW5nVmFsdWVzU2VydmljZSgpLmdldFNldHRpbmdWYWx1ZSh0aGlzLmVudmlyb25tZW50SWQsIHRoaXMuc2V0dGluZ0lkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzZXR0aW5nVmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlID0gc2V0dGluZ1ZhbHVlO1xuXG4gICAgICAgICAgY29uc3Qgc2V0dGluZ1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIHNldHRpbmdWYWx1ZXM6IFtzZXR0aW5nVmFsdWVdLFxuICAgICAgICAgICAgcmVhZE9ubHk6IHNldHRpbmdWYWx1ZS5yZWFkT25seSxcbiAgICAgICAgICAgIGNvbmZpZzogc2V0dGluZ1ZhbHVlLmNvbmZpZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBzZXR0aW5nVmFsdWUuZW52aXJvbm1lbnRcbiAgICAgICAgICB9IGFzIFNldHRpbmdWYWx1ZXNNb2RlbDtcblxuICAgICAgICAgIHRoaXMubG9hZFN1Y2NlZWRlZC5lbWl0KHNldHRpbmdWYWx1ZXMpO1xuICAgICAgICAgIHJldHVybiBzZXR0aW5nVmFsdWVzO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkRmFpbGVkLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2FkU2VnbWVudHMgPSAoKTogT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWdtZW50c1NlcnZpY2UoKS5nZXRTZWdtZW50cyh0aGlzLnByb2R1Y3RJZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoc2VnbWVudHMgPT4ge1xuICAgICAgICAgIHRoaXMuc2VnbWVudHMgPSBzZWdtZW50cztcbiAgICAgICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgaGFuZGxlU2F2ZSA9IChtb2RlbDogVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTogT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+ID0+IHtcbiAgICBpZiAobW9kZWwuc2V0dGluZ1ZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVNb2RlbCA9IG1vZGVsLnNldHRpbmdWYWx1ZXNbMF0gYXMgVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWw7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTZXR0aW5nVmFsdWVzU2VydmljZSgpLnJlcGxhY2VTZXR0aW5nVmFsdWUoXG4gICAgICB0aGlzLmVudmlyb25tZW50SWQsIHRoaXMuc2V0dGluZ0lkLCB1cGRhdGVNb2RlbCwgbW9kZWwucmVhc29uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzZXR0aW5nVmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlID0gc2V0dGluZ1ZhbHVlO1xuXG4gICAgICAgICAgY29uc3Qgc2V0dGluZ1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIHNldHRpbmdWYWx1ZXM6IFtzZXR0aW5nVmFsdWVdLFxuICAgICAgICAgICAgcmVhZE9ubHk6IHNldHRpbmdWYWx1ZS5yZWFkT25seSxcbiAgICAgICAgICAgIGNvbmZpZzogc2V0dGluZ1ZhbHVlLmNvbmZpZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBzZXR0aW5nVmFsdWUuZW52aXJvbm1lbnRcbiAgICAgICAgICB9IGFzIFNldHRpbmdWYWx1ZXNNb2RlbDtcblxuICAgICAgICAgIHRoaXMuc2F2ZVN1Y2NlZWRlZC5lbWl0KHNldHRpbmdWYWx1ZXMpO1xuICAgICAgICAgIHJldHVybiBzZXR0aW5nVmFsdWVzO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlRmFpbGVkLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBvbkRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQoc2V0dGluZzogYW55KSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgc2V0dGluZzogc2V0dGluZy5zZXR0aW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2V0dGluZ1ZhbHVlLmVudmlyb25tZW50LFxuICAgICAgY29uZmlnOiB0aGlzLnNldHRpbmdWYWx1ZS5jb25maWdcbiAgICB9KTtcbiAgfVxuXG4gIG9uRm9ybVZhbHVlc0NoYW5nZWQoKSB7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxjb25maWdjYXQtc2V0dGluZy1saXN0IFtjYW5EZWxldGVTZXR0aW5nXT1cImNhbkRlbGV0ZVNldHRpbmdcIiBbb25TYXZlXT1cImhhbmRsZVNhdmVcIlxuICAgIFtsb2FkU2V0dGluZ1ZhbHVlc109XCJsb2FkU2V0dGluZ1ZhbHVlc1wiIFtsb2FkU2VnbWVudHNdPVwibG9hZFNlZ21lbnRzXCJcbiAgICAoZGVsZXRlU2V0dGluZ1JlcXVlc3RlZCk9XCJvbkRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQoJGV2ZW50KVwiIFtkZWxldGVTZXR0aW5nVGV4dF09XCJkZWxldGVTZXR0aW5nVGV4dFwiXG4gICAgW3Nob3dFbnZpcm9ubWVudE5hbWVdPVwic2hvd0Vudmlyb25tZW50TmFtZVwiIChmb3JtVmFsdWVzQ2hhbmdlZCk9XCJvbkZvcm1WYWx1ZXNDaGFuZ2VkKClcIiBbcHJvZHVjdElkXT1cInByb2R1Y3RJZFwiXG4gICAgW2NvbmZpZ0lkXT1cImNvbmZpZ0lkXCIgW2Vudmlyb25tZW50SWRdPVwiZW52aXJvbm1lbnRJZFwiIFtkYXNoYm9hcmRCYXNlUGF0aF09XCJkYXNoYm9hcmRCYXNlUGF0aFwiPlxuPC9jb25maWdjYXQtc2V0dGluZy1saXN0PiJdfQ==
@@ -8,10 +8,6 @@ import * as i4 from "@angular/material/tooltip";
8
8
  import * as i5 from "@angular/material/chips";
9
9
  import * as i6 from "../value/value.component";
10
10
  export class RolloutPercentageItemsComponent {
11
- constructor() {
12
- this.readOnly = false;
13
- this.SettingType = SettingType;
14
- }
15
11
  setting() {
16
12
  return this.formGroup.get('setting')?.value;
17
13
  }
@@ -29,6 +25,10 @@ export class RolloutPercentageItemsComponent {
29
25
  rolloutPercentageItem.get('valueDisabled') :
30
26
  rolloutPercentageItem.get('value');
31
27
  }
28
+ constructor() {
29
+ this.readOnly = false;
30
+ this.SettingType = SettingType;
31
+ }
32
32
  percentageChanged(index) {
33
33
  if (this.rolloutPercentageItems().controls[index].value.percentage < 0) {
34
34
  this.rolloutPercentageItems().controls[index].controls.percentage.setValue(0);
@@ -68,14 +68,14 @@ export class RolloutPercentageItemsComponent {
68
68
  return rolloutPercentageItem.controls.percentage;
69
69
  }
70
70
  }
71
- RolloutPercentageItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: RolloutPercentageItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
72
- RolloutPercentageItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: RolloutPercentageItemsComponent, selector: "configcat-rollout-percentage-items", inputs: { formGroup: "formGroup", readOnly: "readOnly" }, ngImport: i0, template: "<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-list>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>", styles: [".percentage-wrapper{border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;position:relative;padding:.5em 0;display:flex;flex-wrap:wrap}.percentage-wrapper .delete{position:absolute;cursor:pointer;top:-9px;right:-10px;z-index:999;border-radius:50%;background-color:#fff;height:20px;width:20px;color:#ed5251}.percentage-wrapper .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.percentage-wrapper .delete:hover mat-icon{opacity:1}.percentage-wrapper .delete-option{color:#ed5251;cursor:pointer;margin-left:1rem;margin-top:4px}.percentage-wrapper .delete-option:hover mat-icon{opacity:1}.percentage-wrapper .delete-option mat-icon{opacity:.5;font-size:20px}.if{display:flex;align-items:center}.if>*{margin:0 .5em}.if .spacing{margin-right:44px}.if .chip{background-color:#67b1fc3d}.grow{flex-grow:1}.percentage-row{min-height:40px;margin-left:.5em}.flex{display:flex;flex-wrap:wrap;align-items:center}.value{margin-left:auto}.value .value-name{display:none}input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;width:40px;margin-top:3px;margin-right:5px;padding:0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300}.users{margin-left:20px}.mat-chip{font-size:12px}@media (max-width: 920px){.value{min-width:0!important}.value .served-value{margin:3px 7px 3px 0}}@media (max-width: 650px){.users{margin-left:5px}}@media (max-width: 540px){.users{font-size:12px}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "component", type: i6.ValueComponent, selector: "configcat-value", inputs: ["valueFormControl", "setting"] }] });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: RolloutPercentageItemsComponent, decorators: [{
71
+ RolloutPercentageItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RolloutPercentageItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
72
+ RolloutPercentageItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: RolloutPercentageItemsComponent, selector: "configcat-rollout-percentage-items", inputs: { formGroup: "formGroup", readOnly: "readOnly" }, ngImport: i0, template: "<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-set>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>", styles: [".percentage-wrapper{border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;position:relative;padding:.5em 0;display:flex;flex-wrap:wrap}.percentage-wrapper .delete{position:absolute;cursor:pointer;top:-9px;right:-10px;z-index:999;border-radius:50%;background-color:#fff;height:20px;width:20px;color:#ed5251}.percentage-wrapper .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.percentage-wrapper .delete:hover mat-icon{opacity:1}.percentage-wrapper .delete-option{color:#ed5251;cursor:pointer;margin-left:1rem;margin-top:4px}.percentage-wrapper .delete-option:hover mat-icon{opacity:1}.percentage-wrapper .delete-option mat-icon{opacity:.5;font-size:20px}.if{display:flex;align-items:center}.if>*{margin:0 .5em}.if .spacing{margin-right:44px}.if .chip{font-size:12px;background-color:#67b1fc3d}.grow{flex-grow:1}.percentage-row{min-height:40px;margin-left:.5em}.flex{display:flex;flex-wrap:wrap;align-items:center}.value{margin-left:auto}.value .value-name{display:none}input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;width:40px;margin-top:3px;margin-right:5px;padding:0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300}.users{margin-left:20px}@media (max-width: 920px){.value{min-width:0!important}.value .served-value{margin:3px 7px 3px 0}}@media (max-width: 650px){.users{margin-left:5px}}@media (max-width: 540px){.users{font-size:12px}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i6.ValueComponent, selector: "configcat-value", inputs: ["valueFormControl", "setting"] }] });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RolloutPercentageItemsComponent, decorators: [{
74
74
  type: Component,
75
- args: [{ selector: 'configcat-rollout-percentage-items', template: "<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-list>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>", styles: [".percentage-wrapper{border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;position:relative;padding:.5em 0;display:flex;flex-wrap:wrap}.percentage-wrapper .delete{position:absolute;cursor:pointer;top:-9px;right:-10px;z-index:999;border-radius:50%;background-color:#fff;height:20px;width:20px;color:#ed5251}.percentage-wrapper .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.percentage-wrapper .delete:hover mat-icon{opacity:1}.percentage-wrapper .delete-option{color:#ed5251;cursor:pointer;margin-left:1rem;margin-top:4px}.percentage-wrapper .delete-option:hover mat-icon{opacity:1}.percentage-wrapper .delete-option mat-icon{opacity:.5;font-size:20px}.if{display:flex;align-items:center}.if>*{margin:0 .5em}.if .spacing{margin-right:44px}.if .chip{background-color:#67b1fc3d}.grow{flex-grow:1}.percentage-row{min-height:40px;margin-left:.5em}.flex{display:flex;flex-wrap:wrap;align-items:center}.value{margin-left:auto}.value .value-name{display:none}input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;width:40px;margin-top:3px;margin-right:5px;padding:0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300}.users{margin-left:20px}.mat-chip{font-size:12px}@media (max-width: 920px){.value{min-width:0!important}.value .served-value{margin:3px 7px 3px 0}}@media (max-width: 650px){.users{margin-left:5px}}@media (max-width: 540px){.users{font-size:12px}}\n"] }]
75
+ args: [{ selector: 'configcat-rollout-percentage-items', template: "<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-set>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>", styles: [".percentage-wrapper{border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;position:relative;padding:.5em 0;display:flex;flex-wrap:wrap}.percentage-wrapper .delete{position:absolute;cursor:pointer;top:-9px;right:-10px;z-index:999;border-radius:50%;background-color:#fff;height:20px;width:20px;color:#ed5251}.percentage-wrapper .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.percentage-wrapper .delete:hover mat-icon{opacity:1}.percentage-wrapper .delete-option{color:#ed5251;cursor:pointer;margin-left:1rem;margin-top:4px}.percentage-wrapper .delete-option:hover mat-icon{opacity:1}.percentage-wrapper .delete-option mat-icon{opacity:.5;font-size:20px}.if{display:flex;align-items:center}.if>*{margin:0 .5em}.if .spacing{margin-right:44px}.if .chip{font-size:12px;background-color:#67b1fc3d}.grow{flex-grow:1}.percentage-row{min-height:40px;margin-left:.5em}.flex{display:flex;flex-wrap:wrap;align-items:center}.value{margin-left:auto}.value .value-name{display:none}input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;width:40px;margin-top:3px;margin-right:5px;padding:0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300}.users{margin-left:20px}@media (max-width: 920px){.value{min-width:0!important}.value .served-value{margin:3px 7px 3px 0}}@media (max-width: 650px){.users{margin-left:5px}}@media (max-width: 540px){.users{font-size:12px}}\n"] }]
76
76
  }], ctorParameters: function () { return []; }, propDecorators: { formGroup: [{
77
77
  type: Input
78
78
  }], readOnly: [{
79
79
  type: Input
80
80
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMvcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMvcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLCtCQUErQjtJQTZCMUM7UUExQlMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQXlCVixDQUFDO0lBdEJqQixPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBcUIsQ0FBQztJQUNoRSxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQXFCLENBQUM7SUFDMUUsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FB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QTBCO1FBQ2pELE9BQU8scUJBQXFCLENBQUMsUUFBUSxDQUFDLFVBQWdDLENBQUM7SUFDekUsQ0FBQzs7NEhBNUVVLCtCQUErQjtnSEFBL0IsK0JBQStCLG9JQ1Q1QywwaUVBMENNOzJGRGpDTywrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0Usb0NBQW9DOzBFQU1yQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZXR0aW5nVHlwZSB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb25maWdjYXQtcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGxvdXQtcGVyY2VudGFnZS1pdGVtcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JvbGxvdXQtcGVyY2VudGFnZS1pdGVtcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJvbGxvdXRQZXJjZW50YWdlSXRlbXNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7XG4gIFNldHRpbmdUeXBlID0gU2V0dGluZ1R5cGU7XG5cblxuICBzZXR0aW5nKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3NldHRpbmcnKT8udmFsdWU7XG4gIH1cblxuICByb2xsb3V0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFJ1bGVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIHJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFBlcmNlbnRhZ2VJdGVtcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UGVyY2VudGFnZUl0ZW1zU3VtKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRQZXJjZW50YWdlSXRlbXNTdW0nKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICB2YWx1ZShyb2xsb3V0UGVyY2VudGFnZUl0ZW06IFVudHlwZWRGb3JtR3JvdXApOiBVbnR5cGVkRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/XG4gICAgICByb2xsb3V0UGVyY2VudGFnZUl0ZW0uZ2V0KCd2YWx1ZURpc2FibGVkJykgYXMgVW50eXBlZEZvcm1Db250cm9sIDpcbiAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbS5nZXQoJ3ZhbHVlJykgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBwZXJjZW50YWdlQ2hhbmdlZChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNvbnRyb2xzW2luZGV4XS52YWx1ZS5wZXJjZW50YWdlIDwgMCkge1xuICAgICAgKHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNvbnRyb2xzW2luZGV4XSBhcyBVbnR5cGVkRm9ybUdyb3VwKS5jb250cm9scy5wZXJjZW50YWdlLnNldFZhbHVlKDApO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHNbaW5kZXhdLnZhbHVlLnBlcmNlbnRhZ2UgPiAxMDApIHtcbiAgICAgICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9sc1tpbmRleF0gYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMucGVyY2VudGFnZS5zZXRWYWx1ZSgxMDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggPT09IDIpIHtcbiAgICAgICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9sc1sxIC0gaW5kZXhdIGFzIFVudHlwZWRGb3JtR3JvdXApLmNvbnRyb2xzLnBlcmNlbnRhZ2VcbiAgICAgICAgLnNldFZhbHVlKDEwMCAtIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNvbnRyb2xzW2luZGV4XS52YWx1ZS5wZXJjZW50YWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVN1bSgpO1xuICB9XG5cbiAgdXBkYXRlU3VtKCkge1xuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bSgpLnNldFZhbHVlKDEwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bSgpLnNldFZhbHVlKFxuICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5tYXAodiA9PiB2LnZhbHVlLnBlcmNlbnRhZ2UpXG4gICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYSArIGIpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVJvbGxvdXRQZXJjZW50YWdlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy51cGRhdGVTdW0oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbCgpIHtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jbGVhcigpO1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy51cGRhdGVTdW0oKTtcbiAgfVxuXG4gIGdldFJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpPy5jb250cm9scz8ubWFwKGMgPT4gYyBhcyBVbnR5cGVkRm9ybUdyb3VwKTtcbiAgfVxuXG4gIGdldFBlcmNlbnRhZ2VGb3JtQ29udHJvbChyb2xsb3V0UGVyY2VudGFnZUl0ZW06IGFueSkge1xuICAgIHJldHVybiByb2xsb3V0UGVyY2VudGFnZUl0ZW0uY29udHJvbHMucGVyY2VudGFnZSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwZXJjZW50YWdlLXdyYXBwZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImlmXCIgKm5nSWY9XCJyb2xsb3V0UnVsZXMoKS5jb250cm9scy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxtYXQtY2hpcC1saXN0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPkVMU0UgSUY8L21hdC1jaGlwPlxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2Utcm93IGZsZXhcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvbGxvdXRQZXJjZW50YWdlSXRlbSBvZiBnZXRSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXBzKCk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwiZ2V0UGVyY2VudGFnZUZvcm1Db250cm9sKHJvbGxvdXRQZXJjZW50YWdlSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwicGVyY2VudGFnZUNoYW5nZWQoaSlcIj4lXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2Vyc1wiPm9mIDxhIGhyZWY9XCJodHRwczovL2NvbmZpZ2NhdC5jb20vZG9jcy9hZHZhbmNlZC91c2VyLW9iamVjdFwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+dXNlcnM8L2E+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtb3B0aW9uXCIgbWF0VG9vbHRpcD1cIlJlbW92ZSB0aGlzICUgb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZWFkT25seSAmJiByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoID4gMlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJvbGxvdXRQZXJjZW50YWdlSXRlbShpKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJUaGUgc3VtIG9mIHBlcmNlbnRhZ2VzIG11c3QgYmUgZXF1YWwgdG8gMTAwLlwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihpID09PSByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoIC0xKSAmJiAocm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bSgpLmludmFsaWQpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiPlxuICAgICAgICAgICAgICAgICAgICBlcnJvcl9vdXRsaW5lXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIGZsZXhcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLW5hbWVcIiAqbmdJZj1cInNldHRpbmcoKS5zZXR0aW5nVHlwZSAhPT0gU2V0dGluZ1R5cGUuQm9vbGVhblwiPlNlcnZlZCB2YWx1ZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGNvbmZpZ2NhdC12YWx1ZSBjbGFzcz1cInNlcnZlZC12YWx1ZVwiIFt2YWx1ZUZvcm1Db250cm9sXT1cInZhbHVlKHJvbGxvdXRQZXJjZW50YWdlSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbc2V0dGluZ109XCJzZXR0aW5nKClcIj5cbiAgICAgICAgICAgICAgICA8L2NvbmZpZ2NhdC12YWx1ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiIG1hdFRvb2x0aXA9XCJSZW1vdmUgJSBvcHRpb25zXCIgKGNsaWNrKT1cInJlbW92ZUFsbCgpXCIgKm5nSWY9XCIhcmVhZE9ubHlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMvcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMvcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLCtCQUErQjtJQU8xQyxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBcUIsQ0FBQztJQUNoRSxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQXFCLENBQUM7SUFDMUUsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUF1QixDQUFDO0lBQy9FLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXVDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQscUJBQXFCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBdUIsQ0FBQyxDQUFDO1lBQ2xFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQXVCLENBQUM7SUFDN0QsQ0FBQztJQUVEO1FBMUJTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxXQUFXLENBQUM7SUF5QlYsQ0FBQztJQUVqQixpQkFBaUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQXNCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckc7UUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTtZQUN2RSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBc0IsQ0FBQyxRQUFRLENBQUMsVUFBVTtpQkFDeEYsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FDdkMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2lCQUNoRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzNCLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGtDQUFrQztRQUNoQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFxQixDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHdCQUF3QixDQUFDLHFCQUEwQjtRQUNqRCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxVQUFnQyxDQUFDO0lBQ3pFLENBQUM7OzRIQTVFVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixvSUNUNUMsd2lFQTBDTTsyRkRqQ08sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLG9DQUFvQzswRUFNckMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2V0dGluZ1R5cGUgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXJvbGxvdXQtcGVyY2VudGFnZS1pdGVtcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSb2xsb3V0UGVyY2VudGFnZUl0ZW1zQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuICBTZXR0aW5nVHlwZSA9IFNldHRpbmdUeXBlO1xuXG5cbiAgc2V0dGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZXR0aW5nJyk/LnZhbHVlO1xuICB9XG5cbiAgcm9sbG91dFJ1bGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRSdWxlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRQZXJjZW50YWdlSXRlbXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyb2xsb3V0UGVyY2VudGFnZUl0ZW1zU3VtJykgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgdmFsdWUocm9sbG91dFBlcmNlbnRhZ2VJdGVtOiBVbnR5cGVkRm9ybUdyb3VwKTogVW50eXBlZEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gP1xuICAgICAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtLmdldCgndmFsdWVEaXNhYmxlZCcpIGFzIFVudHlwZWRGb3JtQ29udHJvbCA6XG4gICAgICByb2xsb3V0UGVyY2VudGFnZUl0ZW0uZ2V0KCd2YWx1ZScpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcGVyY2VudGFnZUNoYW5nZWQoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9sc1tpbmRleF0udmFsdWUucGVyY2VudGFnZSA8IDApIHtcbiAgICAgICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9sc1tpbmRleF0gYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMucGVyY2VudGFnZS5zZXRWYWx1ZSgwKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNvbnRyb2xzW2luZGV4XS52YWx1ZS5wZXJjZW50YWdlID4gMTAwKSB7XG4gICAgICAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHNbaW5kZXhdIGFzIFVudHlwZWRGb3JtR3JvdXApLmNvbnRyb2xzLnBlcmNlbnRhZ2Uuc2V0VmFsdWUoMTAwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHNbMSAtIGluZGV4XSBhcyBVbnR5cGVkRm9ybUdyb3VwKS5jb250cm9scy5wZXJjZW50YWdlXG4gICAgICAgIC5zZXRWYWx1ZSgxMDAgLSB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9sc1tpbmRleF0udmFsdWUucGVyY2VudGFnZSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdW0oKTtcbiAgfVxuXG4gIHVwZGF0ZVN1bSgpIHtcbiAgICBpZiAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXNTdW0oKS5zZXRWYWx1ZSgxMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXNTdW0oKS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubWFwKHYgPT4gdi52YWx1ZS5wZXJjZW50YWdlKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UGVyY2VudGFnZUl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMudXBkYXRlU3VtKCk7XG4gIH1cblxuICByZW1vdmVBbGwoKSB7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY2xlYXIoKTtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMudXBkYXRlU3VtKCk7XG4gIH1cblxuICBnZXRSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKT8uY29udHJvbHM/Lm1hcChjID0+IGMgYXMgVW50eXBlZEZvcm1Hcm91cCk7XG4gIH1cblxuICBnZXRQZXJjZW50YWdlRm9ybUNvbnRyb2wocm9sbG91dFBlcmNlbnRhZ2VJdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gcm9sbG91dFBlcmNlbnRhZ2VJdGVtLmNvbnRyb2xzLnBlcmNlbnRhZ2UgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGVyY2VudGFnZS13cmFwcGVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJpZlwiICpuZ0lmPVwicm9sbG91dFJ1bGVzKCkuY29udHJvbHMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8bWF0LWNoaXAtc2V0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPkVMU0UgSUY8L21hdC1jaGlwPlxuICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3Jvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyY2VudGFnZS1yb3cgZmxleFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9sbG91dFBlcmNlbnRhZ2VJdGVtIG9mIGdldFJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cHMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtmb3JtQ29udHJvbF09XCJnZXRQZXJjZW50YWdlRm9ybUNvbnRyb2wocm9sbG91dFBlcmNlbnRhZ2VJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJwZXJjZW50YWdlQ2hhbmdlZChpKVwiPiVcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJzXCI+b2YgPGEgaHJlZj1cImh0dHBzOi8vY29uZmlnY2F0LmNvbS9kb2NzL2FkdmFuY2VkL3VzZXItb2JqZWN0XCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj51c2VyczwvYT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1vcHRpb25cIiBtYXRUb29sdGlwPVwiUmVtb3ZlIHRoaXMgJSBvcHRpb25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5ICYmIHJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggPiAyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUm9sbG91dFBlcmNlbnRhZ2VJdGVtKGkpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHNwYW4gbWF0VG9vbHRpcD1cIlRoZSBzdW0gb2YgcGVyY2VudGFnZXMgbXVzdCBiZSBlcXVhbCB0byAxMDAuXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGkgPT09IHJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggLTEpICYmIChyb2xsb3V0UGVyY2VudGFnZUl0ZW1zU3VtKCkuaW52YWxpZClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCI+XG4gICAgICAgICAgICAgICAgICAgIGVycm9yX291dGxpbmVcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgZmxleFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUtbmFtZVwiICpuZ0lmPVwic2V0dGluZygpLnNldHRpbmdUeXBlICE9PSBTZXR0aW5nVHlwZS5Cb29sZWFuXCI+U2VydmVkIHZhbHVlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8Y29uZmlnY2F0LXZhbHVlIGNsYXNzPVwic2VydmVkLXZhbHVlXCIgW3ZhbHVlRm9ybUNvbnRyb2xdPVwidmFsdWUocm9sbG91dFBlcmNlbnRhZ2VJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nXT1cInNldHRpbmcoKVwiPlxuICAgICAgICAgICAgICAgIDwvY29uZmlnY2F0LXZhbHVlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCIgbWF0VG9vbHRpcD1cIlJlbW92ZSAlIG9wdGlvbnNcIiAoY2xpY2spPVwicmVtb3ZlQWxsKClcIiAqbmdJZj1cIiFyZWFkT25seVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19