@microsoft/windows-admin-center-sdk 2.297.0 → 2.298.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 (147) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/it-IT/strings.json +1 -1
  7. package/angular/assets/strings/ja-JP/strings.json +1 -1
  8. package/angular/assets/strings/ko-KR/strings.json +1 -1
  9. package/angular/assets/strings/nl-NL/strings.json +1 -1
  10. package/angular/assets/strings/pl-PL/strings.json +1 -1
  11. package/angular/assets/strings/pt-BR/strings.json +1 -1
  12. package/angular/assets/strings/pt-PT/strings.json +1 -1
  13. package/angular/assets/strings/ru-RU/strings.json +1 -1
  14. package/angular/assets/strings/strings.json +1 -1
  15. package/angular/assets/strings/sv-SE/strings.json +1 -1
  16. package/angular/assets/strings/tr-TR/strings.json +1 -1
  17. package/angular/assets/strings/zh-CN/strings.json +1 -1
  18. package/angular/assets/strings/zh-TW/strings.json +1 -1
  19. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +558 -240
  20. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
  21. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
  22. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
  23. package/angular/esm2015/src/controls/actions/containers/action-bar/action-bar.component.js +7 -2
  24. package/angular/esm2015/src/controls/alert-bar/alert-bar.component.js +5 -5
  25. package/angular/esm2015/src/controls/common/base.component.js +8 -1
  26. package/angular/esm2015/src/controls/data-table/data-table.component.js +39 -9
  27. package/angular/esm2015/src/controls/form/form-field/checklist/checklist-form-field.component.js +11 -8
  28. package/angular/esm2015/src/controls/form/form-field/combobox/combobox-form-field.component.js +8 -9
  29. package/angular/esm2015/src/controls/form/form-field/file/file-form-field.component.js +14 -2
  30. package/angular/esm2015/src/controls/form/form-field/form-field.component.js +9 -2
  31. package/angular/esm2015/src/controls/layout/layout-definition.component.js +9 -2
  32. package/angular/esm2015/src/controls/layout/layout.component.js +11 -2
  33. package/angular/esm2015/src/controls/master-view/master-view.component.js +32 -5
  34. package/angular/esm2015/src/controls/page-alert-bar/models/index.js +1 -1
  35. package/angular/esm2015/src/controls/pivot/pivot.component.js +11 -5
  36. package/angular/esm2015/src/controls/property-grid/property-grid-item.component.js +50 -2
  37. package/angular/esm2015/src/controls/property-grid/property-grid.component.js +73 -60
  38. package/angular/esm2015/src/controls/property-grid/property-grid.module.js +5 -1
  39. package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +151 -70
  40. package/angular/esm2015/src/controls/settings/settings.component.js +48 -8
  41. package/angular/esm2015/src/controls/settings/settings.module.js +21 -9
  42. package/angular/esm2015/src/controls/wizard/wizard.component.js +55 -65
  43. package/angular/esm2015/src/generated/strings.js +1 -1
  44. package/angular/esm2015/src/service/app-context.service.js +3 -1
  45. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +535 -240
  46. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
  47. package/angular/package.json +2 -0
  48. package/angular/src/controls/common/base.component.d.ts +5 -0
  49. package/angular/src/controls/data-table/data-table.component.d.ts +15 -0
  50. package/angular/src/controls/form/form-field/checklist/checklist-form-field.component.d.ts +1 -0
  51. package/angular/src/controls/form/form-field/file/file-form-field.component.d.ts +4 -0
  52. package/angular/src/controls/layout/layout-definition.component.d.ts +6 -1
  53. package/angular/src/controls/master-view/master-view.component.d.ts +118 -2
  54. package/angular/src/controls/page-alert-bar/models/index.d.ts +1 -1
  55. package/angular/src/controls/pivot/pivot.component.d.ts +4 -1
  56. package/angular/src/controls/property-grid/property-grid-item.component.d.ts +53 -3
  57. package/angular/src/controls/property-grid/property-grid.component.d.ts +1 -2
  58. package/angular/src/controls/property-grid/property-grid.module.d.ts +4 -3
  59. package/angular/src/controls/settings/common-settings/common-settings.component.d.ts +32 -1
  60. package/angular/src/controls/settings/settings.component.d.ts +18 -1
  61. package/angular/src/controls/settings/settings.module.d.ts +3 -1
  62. package/angular/src/generated/strings.d.ts +3 -0
  63. package/core/base/environment.d.ts +10 -0
  64. package/core/base/environment.js.map +1 -1
  65. package/core/data/gateway-connection.d.ts +34 -0
  66. package/core/data/gateway-connection.js +59 -2
  67. package/core/data/gateway-connection.js.map +1 -1
  68. package/core/data/gateway-status.d.ts +24 -0
  69. package/core/data/gateway-status.js +3 -0
  70. package/core/data/gateway-status.js.map +1 -0
  71. package/core/data/node-connection.d.ts +4 -0
  72. package/core/data/node-connection.js.map +1 -1
  73. package/core/data/powershell.d.ts +4 -0
  74. package/core/data/powershell.js +1 -0
  75. package/core/data/powershell.js.map +1 -1
  76. package/core/data/wdac-operations.d.ts +123 -0
  77. package/core/data/wdac-operations.js +144 -0
  78. package/core/data/wdac-operations.js.map +1 -0
  79. package/core/diagnostics/sme-web-telemetry-models.d.ts +20 -3
  80. package/core/diagnostics/sme-web-telemetry-models.js +6 -2
  81. package/core/diagnostics/sme-web-telemetry-models.js.map +1 -1
  82. package/core/diagnostics/sme-web-telemetry.d.ts +13 -1
  83. package/core/diagnostics/sme-web-telemetry.js +51 -11
  84. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  85. package/core/generated/powershell-scripts.d.ts +8 -4
  86. package/core/generated/powershell-scripts.js +8 -4
  87. package/core/generated/powershell-scripts.js.map +1 -1
  88. package/core/index.d.ts +2 -0
  89. package/core/index.js +1 -0
  90. package/core/index.js.map +1 -1
  91. package/core/manifest/environment-modules.js +10 -0
  92. package/core/manifest/environment-modules.js.map +1 -1
  93. package/core/notification/powershell-notification.js +1 -1
  94. package/core/notification/powershell-notification.js.map +1 -1
  95. package/core/performance/performance-tracker.d.ts +67 -0
  96. package/core/performance/performance-tracker.js +211 -4
  97. package/core/performance/performance-tracker.js.map +1 -1
  98. package/core/rpc/credssp/rpc-credssp-model.d.ts +27 -2
  99. package/core/rpc/credssp/rpc-credssp-model.js +10 -0
  100. package/core/rpc/credssp/rpc-credssp-model.js.map +1 -1
  101. package/core/security/credssp-manager.d.ts +15 -1
  102. package/core/security/credssp-manager.js +28 -0
  103. package/core/security/credssp-manager.js.map +1 -1
  104. package/core/shared/gateway-inventory/gateway-inventory.d.ts +10 -0
  105. package/core/shared/gateway-inventory/gateway-inventory.js +11 -0
  106. package/core/shared/gateway-inventory/gateway-inventory.js.map +1 -1
  107. package/e2e/assets/strings/cs-CZ/strings.json +1 -1
  108. package/e2e/assets/strings/de-DE/strings.json +1 -1
  109. package/e2e/assets/strings/es-ES/strings.json +1 -1
  110. package/e2e/assets/strings/fr-FR/strings.json +1 -1
  111. package/e2e/assets/strings/hu-HU/strings.json +1 -1
  112. package/e2e/assets/strings/it-IT/strings.json +1 -1
  113. package/e2e/assets/strings/ja-JP/strings.json +1 -1
  114. package/e2e/assets/strings/ko-KR/strings.json +1 -1
  115. package/e2e/assets/strings/nl-NL/strings.json +1 -1
  116. package/e2e/assets/strings/pl-PL/strings.json +1 -1
  117. package/e2e/assets/strings/pt-BR/strings.json +1 -1
  118. package/e2e/assets/strings/pt-PT/strings.json +1 -1
  119. package/e2e/assets/strings/ru-RU/strings.json +1 -1
  120. package/e2e/assets/strings/strings.json +1 -1
  121. package/e2e/assets/strings/sv-SE/strings.json +1 -1
  122. package/e2e/assets/strings/tr-TR/strings.json +1 -1
  123. package/e2e/assets/strings/zh-CN/strings.json +1 -1
  124. package/e2e/assets/strings/zh-TW/strings.json +1 -1
  125. package/package.json +5 -3
  126. package/styles/css/main.css +1 -1
  127. package/tools/module-template/gulpfile.ts/index.ts +1 -1
  128. package/tools/package-lock.json +18081 -4110
  129. package/tools/wac-cli/src/create/main.d.ts +6 -3
  130. package/tools/wac-cli/src/create/main.js +87 -35
  131. package/tools/wac-cli/src/create/main.js.map +1 -1
  132. package/tools/wac-cli/src/index.js +2 -2
  133. package/tools/wac-cli/src/index.js.map +1 -1
  134. package/tools/wac-cli/templates/internal/npmrc.txt +6 -0
  135. package/tools/wac-cli/templates/internal/package.json +101 -0
  136. package/tools/wac-cli/templates/{manifest/solution-manifest.json → solution/manifest.json} +19 -0
  137. package/tools/wac-cli/templates/solution/strings.resjson +16 -0
  138. package/tools/wac-cli/templates/wac-template/angular.json +2 -2
  139. package/tools/wac-cli/templates/wac-template/gulpfile.ts/config-data.ts +1 -1
  140. package/tools/wac-cli/templates/wac-template/package.json +0 -8
  141. package/tools/wac-cli/templates/wac-template/src/app/app-routing.module.ts +1 -1
  142. package/tools/wac-cli/templates/wac-template/src/main.ts +2 -0
  143. package/tools/wac-cli/templates/{manifest/tool-manifest.json → wac-template/src/manifest.json} +0 -0
  144. package/tools/wac-cli/templates/wac-template/src/polyfills.ts +1 -1
  145. package/tools/wac-cli/templates/wac-template/src/test.ts +2 -2
  146. package/tools/wac-cli/templates/wac-template/src/version.ts +3 -0
  147. package/tools/wac-cli/templates/wac-template/version.json +5 -0
@@ -12,19 +12,43 @@ import * as i2 from "../layout/layout.component";
12
12
  import * as i3 from "../layout/layout-definition.component";
13
13
  import * as i4 from "../layout/layout-item.component";
14
14
  import * as i5 from "../tooltip/tooltip.directive";
15
+ function SettingsComponent_div_1_span_3_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelementStart(0, "span", 12);
17
+ i0.ɵɵtext(1);
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const ctx_r2 = i0.ɵɵnextContext(2);
21
+ i0.ɵɵadvance(1);
22
+ i0.ɵɵtextInterpolate(ctx_r2.headerSeparator);
23
+ } }
24
+ function SettingsComponent_div_1_span_4_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "span", 13);
26
+ i0.ɵɵtext(1);
27
+ i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ const ctx_r3 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵadvance(1);
31
+ i0.ɵɵtextInterpolate(ctx_r3.selectedSettingsTitle);
32
+ } }
15
33
  function SettingsComponent_div_1_Template(rf, ctx) { if (rf & 1) {
16
34
  i0.ɵɵelementStart(0, "div", 8);
17
35
  i0.ɵɵelementStart(1, "h2", 9);
18
36
  i0.ɵɵtext(2);
37
+ i0.ɵɵtemplate(3, SettingsComponent_div_1_span_3_Template, 2, 1, "span", 10);
38
+ i0.ɵɵtemplate(4, SettingsComponent_div_1_span_4_Template, 2, 1, "span", 11);
19
39
  i0.ɵɵelementEnd();
20
40
  i0.ɵɵelementEnd();
21
41
  } if (rf & 2) {
22
42
  const ctx_r0 = i0.ɵɵnextContext();
23
43
  i0.ɵɵadvance(1);
24
- i0.ɵɵproperty("title", ctx_r0.settingsTitle);
25
- i0.ɵɵattribute("aria-label", ctx_r0.settingsTitle);
44
+ i0.ɵɵproperty("title", ctx_r0.fullSettingsTitle);
45
+ i0.ɵɵattribute("aria-label", ctx_r0.fullSettingsTitle);
46
+ i0.ɵɵadvance(1);
47
+ i0.ɵɵtextInterpolate1("", ctx_r0.settingsTitle, " ");
26
48
  i0.ɵɵadvance(1);
27
- i0.ɵɵtextInterpolate(ctx_r0.settingsTitle);
49
+ i0.ɵɵproperty("ngIf", ctx_r0.selectedSettingsTitle);
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵproperty("ngIf", ctx_r0.selectedSettingsTitle);
28
52
  } }
29
53
  const _c0 = [[["sme-settings-navigation"]], [["sme-settings-header"]], [["sme-settings-content"]], [["sme-settings-footer"]]];
30
54
  const _c1 = ["sme-settings-navigation", "sme-settings-header", "sme-settings-content", "sme-settings-footer"];
@@ -60,6 +84,10 @@ export class SettingsComponent extends CoreBaseComponent {
60
84
  super(injector);
61
85
  this.allForms = [];
62
86
  this.autoFocus = true;
87
+ /**
88
+ * Separator used in sticky header on top of Settings page
89
+ */
90
+ this.headerSeparator = '|';
63
91
  }
64
92
  /**
65
93
  * The source name to use for logging
@@ -78,6 +106,7 @@ export class SettingsComponent extends CoreBaseComponent {
78
106
  // If we have a new form, it means the user navigated so we reset the autofocus
79
107
  this.autoFocus = true;
80
108
  }), this.settingsForms.formRemoved().subscribe((form) => { MsftSme.remove(this.allForms, form); }));
109
+ this.fullSettingsTitle = this.settingsTitle;
81
110
  }
82
111
  ngOnDestroy() {
83
112
  super.ngOnDestroy();
@@ -131,6 +160,14 @@ export class SettingsComponent extends CoreBaseComponent {
131
160
  return this.addPadding = this.layoutComponent.currentLayoutDefinition.name === 'narrow';
132
161
  }
133
162
  }
163
+ /**
164
+ * Update this.settingsTitle (header of the setting page) to newly selected setting item
165
+ */
166
+ updateSelectedSettingTitle(newSelectedSettingTitle) {
167
+ this.selectedSettingsTitle = newSelectedSettingTitle;
168
+ const fullSettingsTitlePostFix = this.selectedSettingsTitle ? this.headerSeparator + ' ' + this.selectedSettingsTitle : '';
169
+ this.fullSettingsTitle = this.settingsTitle + ' ' + fullSettingsTitlePostFix;
170
+ }
134
171
  }
135
172
  /** @nocollapse */ SettingsComponent.ɵfac = function SettingsComponent_Factory(t) { return new (t || SettingsComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
136
173
  /** @nocollapse */ SettingsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SettingsComponent, selectors: [["sme-settings"]], viewQuery: function SettingsComponent_Query(rf, ctx) { if (rf & 1) {
@@ -138,10 +175,10 @@ export class SettingsComponent extends CoreBaseComponent {
138
175
  } if (rf & 2) {
139
176
  let _t;
140
177
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.layoutComponent = _t.first);
141
- } }, inputs: { backRoute: "backRoute", settingsTitle: "settingsTitle" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 12, vars: 8, consts: [[1, "sme-arrange-stack-v", "sme-layout-relative", "sme-arrange-overflow-auto-y", "sme-position-stretch"], ["class", " sme-layout-tool-header sme-position-flex-none sme-arrange-ellipsis", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-arrange-overflow-auto", 3, "padLastItem", "layoutChanged"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan"], [3, "columnSpan", "ngClass"], [1, "sme-layout-tool-header", "sme-position-flex-none", "sme-arrange-ellipsis"], [1, "sme-font-h3", 3, "title"]], template: function SettingsComponent_Template(rf, ctx) { if (rf & 1) {
178
+ } }, inputs: { backRoute: "backRoute", settingsTitle: "settingsTitle", selectedSettingsTitle: "selectedSettingsTitle" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 12, vars: 10, consts: [[1, "sme-arrange-stack-v", "sme-layout-relative", "sme-arrange-overflow-auto-y", "sme-position-stretch"], ["class", "sme-layout-tool-header sme-position-flex-none sme-arrange-ellipsis sme-padding-bottom-none sme-padding-left-md", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-arrange-overflow-auto", 3, "padLastItem", "layoutChanged"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "wide", 3, "columns", "addBottomPadding"], [3, "columnSpan", "ngClass"], [1, "sme-padding-top-xs", 3, "columnSpan", "ngClass"], [1, "sme-layout-tool-header", "sme-position-flex-none", "sme-arrange-ellipsis", "sme-padding-bottom-none", "sme-padding-left-md"], [1, "sme-font-h3", 3, "title"], ["class", "sme-padding-horizontal-sm sme-font-family-normal", 4, "ngIf"], ["class", "sme-font-family-normal", 4, "ngIf"], [1, "sme-padding-horizontal-sm", "sme-font-family-normal"], [1, "sme-font-family-normal"]], template: function SettingsComponent_Template(rf, ctx) { if (rf & 1) {
142
179
  i0.ɵɵprojectionDef(_c0);
143
180
  i0.ɵɵelementStart(0, "div", 0);
144
- i0.ɵɵtemplate(1, SettingsComponent_div_1_Template, 3, 3, "div", 1);
181
+ i0.ɵɵtemplate(1, SettingsComponent_div_1_Template, 5, 5, "div", 1);
145
182
  i0.ɵɵelementStart(2, "sme-layout", 2, 3);
146
183
  i0.ɵɵlistener("layoutChanged", function SettingsComponent_Template_sme_layout_layoutChanged_2_listener() { return ctx.isPaddingRequired(); });
147
184
  i0.ɵɵelement(4, "sme-layout-definition", 4);
@@ -157,6 +194,7 @@ export class SettingsComponent extends CoreBaseComponent {
157
194
  i0.ɵɵelementEnd();
158
195
  i0.ɵɵelementEnd();
159
196
  } if (rf & 2) {
197
+ const _r1 = i0.ɵɵreference(3);
160
198
  i0.ɵɵadvance(1);
161
199
  i0.ɵɵproperty("ngIf", ctx.settingsTitle);
162
200
  i0.ɵɵadvance(1);
@@ -164,9 +202,9 @@ export class SettingsComponent extends CoreBaseComponent {
164
202
  i0.ɵɵadvance(2);
165
203
  i0.ɵɵproperty("until", 800)("columns", 1);
166
204
  i0.ɵɵadvance(1);
167
- i0.ɵɵproperty("columns", 5);
205
+ i0.ɵɵproperty("columns", 5)("addBottomPadding", false);
168
206
  i0.ɵɵadvance(1);
169
- i0.ɵɵproperty("columnSpan", 1);
207
+ i0.ɵɵproperty("columnSpan", 1)("ngClass", _r1.currentLayoutDefinitionName === "narrow" ? "" : "sme-position-stretch-v");
170
208
  i0.ɵɵadvance(2);
171
209
  i0.ɵɵproperty("columnSpan", 4)("ngClass", ctx.addPadding ? "sme-position-stretch sme-padding-left-xl" : "sme-position-stretch");
172
210
  } }, directives: [i1.NgIf, i2.LayoutComponent, i3.LayoutDefinitionComponent, i4.LayoutItemComponent, i1.NgClass, i5.TooltipDirective], encapsulation: 2 });
@@ -188,8 +226,10 @@ __decorate([
188
226
  type: Input
189
227
  }], settingsTitle: [{
190
228
  type: Input
229
+ }], selectedSettingsTitle: [{
230
+ type: Input
191
231
  }], layoutComponent: [{
192
232
  type: ViewChild,
193
233
  args: [LayoutComponent]
194
234
  }], settingsForms: [], dialogService: [] }); })();
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0lDVDFELDhCQUF1RztJQUNuRyw2QkFBa0Y7SUFBQSxZQUFpQjtJQUFBLGlCQUFLO0lBQzVHLGlCQUFNOzs7SUFERSxlQUF1QjtJQUF2Qiw0Q0FBdUI7SUFBQyxrREFBaUM7SUFBcUIsZUFBaUI7SUFBakIsMENBQWlCOzs7O0FEVzNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVGOztHQUVHO0FBS0osTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUFpQjtJQWlDcEQsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUF6QmIsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFJMUIsY0FBUyxHQUFHLElBQUksQ0FB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U0FBUzttQkFBQyxlQUFlO1lBSW5CLGFBQWEsTUFHYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21lSW5qZWN0IH0gZnJvbSAnLi4vY29tbW9uL2RlY29yYXRvcnMvaW5qZWN0aW9uLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi9zZXR0aW5ncy1jYW4tZGVhY3RpdmF0ZS1ndWFyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0dGluZ3NGb3JtU2VydmljZSB9IGZyb20gJy4vc2V0dGluZ3MtZm9ybS5zZXJ2aWNlJztcclxuXHJcblxyXG4vKipcclxuICpcclxuICogQHNtZURvYyB7QGxhYmVsIFNldHRpbmdzIEBpZCBzbWUtc2V0dGluZ3N9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvc2V0dGluZ3Mtb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgTXVsdGktRm9ybSBVc2FnZSBAaWQgYmFzaWMtbXVsdGl9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL2NvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvY29tcG9uZW50LnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMS50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcGFuZWwxLnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMS5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDEuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbDIudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3BhbmVsMi50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbDIuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcGFuZWwyLmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LXJvdXRpbmcubW9kdWxlIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9yb3V0aW5nLm1vZHVsZS50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBTaW5nbGUtRm9ybSBVc2FnZSBAaWQgYmFzaWMtc2luZ2xlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvY29tcG9uZW50LnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsLnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvcGFuZWwudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9zaW5nbGUtZm9ybS1leGFtcGxlL3BhbmVsLmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LXJvdXRpbmcubW9kdWxlIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvcm91dGluZy5tb2R1bGUudHN9XHJcbiAqXHJcbiAqL1xyXG5cclxuIC8qKlxyXG4gICogRGVmaW5lcyBiYXNlIHNldHRpbmdzIGNvbXBvbmVudCwgaW1wbGVtZW50cyBjb3JlIGZ1bmN0aW9uYWxpdHkgKyBzZXR0aW5ncyBmb3JtLlxyXG4gICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc2V0dGluZ3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnU2V0dGluZ3NDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhbGxGb3JtczogRm9ybUdyb3VwW10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgYWRkUGFkZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBwcml2YXRlIGF1dG9Gb2N1cyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBBZGQgeW91ciBvd24gY3VzdG9tIGJhY2sgYnV0dG9uIGluIHRoZSBmb3JtXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmFja1JvdXRlOiB7IGNvbW1hbmRzOiBhbnlbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyB9O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NUaXRsZTogc3RyaW5nO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTGF5b3V0Q29tcG9uZW50KVxyXG4gICAgcHJpdmF0ZSBsYXlvdXRDb21wb25lbnQ6IExheW91dENvbXBvbmVudDtcclxuXHJcbiAgICBAU21lSW5qZWN0KFNldHRpbmdzRm9ybVNlcnZpY2UpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NGb3JtczogU2V0dGluZ3NGb3JtU2VydmljZTtcclxuXHJcbiAgICBAU21lSW5qZWN0KERpYWxvZ1NlcnZpY2UpXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnN0b3BQcm9jZXNzaW5nRXZlbnRzKCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLmFsbEZvcm1zLmZvckVhY2goKGZvcm0pID0+IHRoaXMuYWxsRm9ybXMucHVzaChmb3JtKSk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtQWRkZWQoKS5zdWJzY3JpYmUoKGZvcm1BZGRlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGR1cGxpY2F0ZXMgd2UgZmlyc3QgcmVtb3ZlIHRoZSBmb3JtIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgICAgICAgICAgTXNmdFNtZS5yZW1vdmUodGhpcy5hbGxGb3JtcywgZm9ybUFkZGVkRGF0YS5mb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGb3Jtcy5wdXNoKGZvcm1BZGRlZERhdGEuZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbmV3IGZvcm0sIGl0IG1lYW5zIHRoZSB1c2VyIG5hdmlnYXRlZCBzbyB3ZSByZXNldCB0aGUgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9Gb2N1cyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLmZvcm1SZW1vdmVkKCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKGZvcm0pID0+IHsgTXNmdFNtZS5yZW1vdmUodGhpcy5hbGxGb3JtcywgZm9ybSk7IH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnN0YXJ0UHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIGNvbXBvbmVudDogQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgICAgICBsZXQgY29udGludWVOYXZpZ2F0aW9uOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxsRm9ybXMuZmlyc3QoKGZvcm0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbiA9IHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybWF0aW9uKGNvbXBvbmVudC5jb25maXJtQ29udGludWVFZGl0aW5nRGlhbG9nT3B0aW9ucyhmb3JtLCB0aGlzLmFsbEZvcm1zKSlcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGlzIHRvIGNvbnRpbnVlIGVkaXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NhcmRDaGFuZ2VzID0gIXJlc3VsdC5jb25maXJtZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzY2FyZENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuYWxsRm9ybXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzY2FyZENoYW5nZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB3aXRoIG9uZSBkaXJ0eSBmb3JtIGlzIGVub3VnaCB0byBzaG93IHRoZSBkaWFsb2csIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgb3RoZXIgZGlhbG9nc1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlTmF2aWdhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgTGlmZSBDeWNsZSBob29rIGZvciBBZnRlciBWaWV3IENoZWNrZWQuXHJcbiAgICAgKiBXaGVuIHRoZSB2aXNpYmlsaXR5IGNoYW5nZXMsIHdlIGFyZSBnb2luZyB0byBmb2N1cyBvbiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGhhcyB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3Q2hlY2tlZCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRvZm9jdXNFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1thdXRvZm9jdXNdJyk7XHJcbiAgICAgICAgICAgIGlmIChhdXRvZm9jdXNFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9Gb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYXV0b2ZvY3VzRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1zZXR0aW5ncydcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNQYWRkaW5nUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0Q29tcG9uZW50ICYmIHRoaXMubGF5b3V0Q29tcG9uZW50LmN1cnJlbnRMYXlvdXREZWZpbml0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFBhZGRpbmcgPSAgdGhpcy5sYXlvdXRDb21wb25lbnQuY3VycmVudExheW91dERlZmluaXRpb24ubmFtZSA9PT0gJ25hcnJvdyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15IHNtZS1wb3NpdGlvbi1zdHJldGNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiIHNtZS1sYXlvdXQtdG9vbC1oZWFkZXIgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYXJyYW5nZS1lbGxpcHNpc1wiICpuZ0lmPVwic2V0dGluZ3NUaXRsZVwiPlxyXG4gICAgICAgIDxoMiBbdGl0bGVdPVwic2V0dGluZ3NUaXRsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic2V0dGluZ3NUaXRsZVwiIGNsYXNzPVwic21lLWZvbnQtaDNcIj57e3NldHRpbmdzVGl0bGV9fTwvaDI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzbWUtbGF5b3V0ICNsYXlvdXQgKGxheW91dENoYW5nZWQpPVwiaXNQYWRkaW5nUmVxdWlyZWQoKVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXCIgW3BhZExhc3RJdGVtXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwibmFycm93XCIgW3VudGlsXT1cIjgwMFwiIFtjb2x1bW5zXT1cIjFcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICAgICAgICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiNVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gICAgICAgIDxzbWUtbGF5b3V0LWl0ZW0gW2NvbHVtblNwYW5dPVwiMVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtc2V0dGluZ3MtbmF2aWdhdGlvblwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICAgICAgICA8c21lLWxheW91dC1pdGVtIFtjb2x1bW5TcGFuXT1cIjRcIiBbbmdDbGFzc109XCJhZGRQYWRkaW5nID8gJ3NtZS1wb3NpdGlvbi1zdHJldGNoIHNtZS1wYWRkaW5nLWxlZnQteGwnIDogJ3NtZS1wb3NpdGlvbi1zdHJldGNoJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtc2V0dGluZ3MtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtc2V0dGluZ3MtY29udGVudFwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWZvb3RlclwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICAgIDwvc21lLWxheW91dD5cclxuPC9kaXY+XHJcbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0lDUHRELGdDQUE2RjtJQUFBLFlBQXFCO0lBQUEsaUJBQU87OztJQUE1QixlQUFxQjtJQUFyQiw0Q0FBcUI7OztJQUNsSCxnQ0FBbUU7SUFBQSxZQUEyQjtJQUFBLGlCQUFPOzs7SUFBbEMsZUFBMkI7SUFBM0Isa0RBQTJCOzs7SUFIbEcsOEJBQWtKO0lBQ2hKLDZCQUEwRjtJQUFBLFlBQ3hGO0lBQUEsMkVBQXlIO0lBQ3pILDJFQUFxRztJQUN2RyxpQkFBSztJQUNQLGlCQUFNOzs7SUFKQSxlQUEyQjtJQUEzQixnREFBMkI7SUFBQyxzREFBcUM7SUFBcUIsZUFDeEY7SUFEd0Ysb0RBQ3hGO0lBQU8sZUFBMkI7SUFBM0IsbURBQTJCO0lBQzNCLGVBQTJCO0lBQTNCLG1EQUEyQjs7OztBRFMxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFRjs7R0FFRztBQUtKLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFrRHBELFlBQVksUUFBa0I7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBMUNiLGFBQVEsR0FBZ0IsRUFBRSxDQUFDO1FBSTFCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFekI7O1dBRUc7UUFDYSxvQkFBZSxHQUFHLEdBQUcsQ0FBQztJQWtDdEMsQ0FBQztJQWxERDs7T0FFRztJQUNILElBQWMsYUFBYTtRQUN2QixPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUErQ00sUUFBUTtRQUNYLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3ZELDREQUE0RDtZQUM1RCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU1QywrRUFBK0U7WUFDL0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFMUIsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQ3RDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JELENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2hELENBQUM7SUFFTSxXQUFXO1FBQ2QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sYUFBYSxDQUNoQixTQUFpQyxFQUNqQyxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixJQUFJLGtCQUFrQixHQUFxRCxJQUFJLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWE7cUJBQ2xDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNwRixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ1gscUNBQXFDO29CQUNyQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ3pDLElBQUksY0FBYyxFQUFFO3dCQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7cUJBQ3BDO29CQUVELE9BQU8sY0FBYyxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVaLGtHQUFrRztnQkFDbEcsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCO1FBQ3JCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRixJQUFJLGdCQUFnQixFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDNUI7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLHFCQUFxQjtRQUMzQixPQUFPLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxjQUFjO1NBQ2pCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxpQkFBaUI7UUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUU7WUFDdEUsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztTQUM1RjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUEwQixDQUFDLHVCQUErQjtRQUM3RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7UUFDckQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyx3QkFBd0IsQ0FBQztJQUNqRixDQUFDOztxR0FwSlEsaUJBQWlCO3lFQUFqQixpQkFBaUI7dUJBeUNmLGVBQWU7Ozs7OztRQ3RGOUIsOEJBQXNHO1FBQ2xHLGtFQUtNO1FBQ04sd0NBQXlJO1FBQXJILGtIQUFpQix1QkFBbUIsSUFBQztRQUNyRCwyQ0FBeUY7UUFDekYsMkNBQW9HO1FBQ3BHLDBDQUE0SDtRQUN4SCxrQkFBMEQ7UUFDOUQsaUJBQWtCO1FBQ2xCLDBDQUEwSjtRQUN0SixxQkFBc0Q7UUFDdEQsc0JBQXVEO1FBQ3ZELHNCQUFzRDtRQUMxRCxpQkFBa0I7UUFDdEIsaUJBQWE7UUFDakIsaUJBQU07OztRQWxCMkgsZUFBbUI7UUFBbkIsd0NBQW1CO1FBTTdCLGVBQXFCO1FBQXJCLG1DQUFxQjtRQUMvRixlQUFhO1FBQWIsMkJBQWEsY0FBQTtRQUNmLGVBQWE7UUFBYiwyQkFBYSwyQkFBQTtRQUMvQixlQUFnQjtRQUFoQiw4QkFBZ0IseUZBQUE7UUFHaEIsZUFBZ0I7UUFBaEIsOEJBQWdCLGlHQUFBOztBRDZFckM7SUFEQyxTQUFTLENBQUMsbUJBQW1CLENBQUM7OEJBQ1QsbUJBQW1CO3dEQUFDO0FBRzFDO0lBREMsU0FBUyxDQUFDLGFBQWEsQ0FBQzs4QkFDSCxhQUFhO3dEQUFDO3VGQWhEM0IsaUJBQWlCO2NBSjdCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjthQUMzQzsyREF5QlUsU0FBUztrQkFEZixLQUFLO1lBSUMsYUFBYTtrQkFEbkIsS0FBSztZQU9DLHFCQUFxQjtrQkFEM0IsS0FBSztZQVVFLGVBQWU7a0JBRHRCLFNBQVM7bUJBQUMsZUFBZTtZQUluQixhQUFhLE1BR2IsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtZUluamVjdCB9IGZyb20gJy4uL2NvbW1vbi9kZWNvcmF0b3JzL2luamVjdGlvbi5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSB9IGZyb20gJy4vc2V0dGluZ3MtY2FuLWRlYWN0aXZhdGUtZ3VhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybVNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWZvcm0uc2VydmljZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBTZXR0aW5ncyBAaWQgc21lLXNldHRpbmdzfVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL3NldHRpbmdzLW92ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIE11bHRpLUZvcm0gVXNhZ2UgQGlkIGJhc2ljLW11bHRpfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL2NvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbDEudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3BhbmVsMS50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbDEuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcGFuZWwxLmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwyLnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDIudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwyLmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3BhbmVsMi5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC1yb3V0aW5nLm1vZHVsZSBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcm91dGluZy5tb2R1bGUudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgU2luZ2xlLUZvcm0gVXNhZ2UgQGlkIGJhc2ljLXNpbmdsZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9zaW5nbGUtZm9ybS1leGFtcGxlL2NvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9zaW5nbGUtZm9ybS1leGFtcGxlL2NvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9zaW5nbGUtZm9ybS1leGFtcGxlL3BhbmVsLnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsLmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9wYW5lbC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC1yb3V0aW5nLm1vZHVsZSBAZmlsZXBhdGggLi9leGFtcGxlcy9zaW5nbGUtZm9ybS1leGFtcGxlL3JvdXRpbmcubW9kdWxlLnRzfVxyXG4gKlxyXG4gKi9cclxuXHJcbiAvKipcclxuICAqIERlZmluZXMgYmFzZSBzZXR0aW5ncyBjb21wb25lbnQsIGltcGxlbWVudHMgY29yZSBmdW5jdGlvbmFsaXR5ICsgc2V0dGluZ3MgZm9ybS5cclxuICAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLXNldHRpbmdzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1NldHRpbmdzQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWxsRm9ybXM6IEZvcm1Hcm91cFtdID0gW107XHJcblxyXG4gICAgcHVibGljIGFkZFBhZGRpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgcHJpdmF0ZSBhdXRvRm9jdXMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VwYXJhdG9yIHVzZWQgaW4gc3RpY2t5IGhlYWRlciBvbiB0b3Agb2YgU2V0dGluZ3MgcGFnZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyU2VwYXJhdG9yID0gJ3wnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgQWRkIHlvdXIgb3duIGN1c3RvbSBiYWNrIGJ1dHRvbiBpbiB0aGUgZm9ybVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJhY2tSb3V0ZTogeyBjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgfTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MgdGl0bGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHNldHRpbmdzVGl0bGUsIGhlYWRlclNlcGFyYXRvciAmIHNlbGVjdGVkU2V0dGluZ3NUaXRsZVxyXG4gICAgICogVXNlZCBmb3IgdG9vbCB0aXAgd2hlbiBob3ZlciBvdmVyIGhlYWRlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZnVsbFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICBAVmlld0NoaWxkKExheW91dENvbXBvbmVudClcclxuICAgIHByaXZhdGUgbGF5b3V0Q29tcG9uZW50OiBMYXlvdXRDb21wb25lbnQ7XHJcblxyXG4gICAgQFNtZUluamVjdChTZXR0aW5nc0Zvcm1TZXJ2aWNlKVxyXG4gICAgcHVibGljIHNldHRpbmdzRm9ybXM6IFNldHRpbmdzRm9ybVNlcnZpY2U7XHJcblxyXG4gICAgQFNtZUluamVjdChEaWFsb2dTZXJ2aWNlKVxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5zdG9wUHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5hbGxGb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB0aGlzLmFsbEZvcm1zLnB1c2goZm9ybSkpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuZm9ybUFkZGVkKCkuc3Vic2NyaWJlKChmb3JtQWRkZWREYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBkdXBsaWNhdGVzIHdlIGZpcnN0IHJlbW92ZSB0aGUgZm9ybSBpZiBpdCBleGlzdHNcclxuICAgICAgICAgICAgICAgIE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm1BZGRlZERhdGEuZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9ybXMucHVzaChmb3JtQWRkZWREYXRhLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG5ldyBmb3JtLCBpdCBtZWFucyB0aGUgdXNlciBuYXZpZ2F0ZWQgc28gd2UgcmVzZXQgdGhlIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtUmVtb3ZlZCgpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7IE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm0pOyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZnVsbFNldHRpbmdzVGl0bGUgPSB0aGlzLnNldHRpbmdzVGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnN0YXJ0UHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIGNvbXBvbmVudDogQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgICAgICBsZXQgY29udGludWVOYXZpZ2F0aW9uOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxsRm9ybXMuZmlyc3QoKGZvcm0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbiA9IHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybWF0aW9uKGNvbXBvbmVudC5jb25maXJtQ29udGludWVFZGl0aW5nRGlhbG9nT3B0aW9ucyhmb3JtLCB0aGlzLmFsbEZvcm1zKSlcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGlzIHRvIGNvbnRpbnVlIGVkaXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NhcmRDaGFuZ2VzID0gIXJlc3VsdC5jb25maXJtZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzY2FyZENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuYWxsRm9ybXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzY2FyZENoYW5nZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB3aXRoIG9uZSBkaXJ0eSBmb3JtIGlzIGVub3VnaCB0byBzaG93IHRoZSBkaWFsb2csIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgb3RoZXIgZGlhbG9nc1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlTmF2aWdhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgTGlmZSBDeWNsZSBob29rIGZvciBBZnRlciBWaWV3IENoZWNrZWQuXHJcbiAgICAgKiBXaGVuIHRoZSB2aXNpYmlsaXR5IGNoYW5nZXMsIHdlIGFyZSBnb2luZyB0byBmb2N1cyBvbiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGhhcyB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3Q2hlY2tlZCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRvZm9jdXNFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1thdXRvZm9jdXNdJyk7XHJcbiAgICAgICAgICAgIGlmIChhdXRvZm9jdXNFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9Gb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYXV0b2ZvY3VzRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1zZXR0aW5ncydcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNQYWRkaW5nUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0Q29tcG9uZW50ICYmIHRoaXMubGF5b3V0Q29tcG9uZW50LmN1cnJlbnRMYXlvdXREZWZpbml0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFBhZGRpbmcgPSAgdGhpcy5sYXlvdXRDb21wb25lbnQuY3VycmVudExheW91dERlZmluaXRpb24ubmFtZSA9PT0gJ25hcnJvdyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoaXMuc2V0dGluZ3NUaXRsZSAoaGVhZGVyIG9mIHRoZSBzZXR0aW5nIHBhZ2UpIHRvIG5ld2x5IHNlbGVjdGVkIHNldHRpbmcgaXRlbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlU2VsZWN0ZWRTZXR0aW5nVGl0bGUobmV3U2VsZWN0ZWRTZXR0aW5nVGl0bGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXR0aW5nc1RpdGxlID0gbmV3U2VsZWN0ZWRTZXR0aW5nVGl0bGU7XHJcbiAgICAgICAgY29uc3QgZnVsbFNldHRpbmdzVGl0bGVQb3N0Rml4ID0gdGhpcy5zZWxlY3RlZFNldHRpbmdzVGl0bGUgPyB0aGlzLmhlYWRlclNlcGFyYXRvciArICcgJyArIHRoaXMuc2VsZWN0ZWRTZXR0aW5nc1RpdGxlIDogJyc7XHJcbiAgICAgICAgdGhpcy5mdWxsU2V0dGluZ3NUaXRsZSA9IHRoaXMuc2V0dGluZ3NUaXRsZSArICcgJyArIGZ1bGxTZXR0aW5nc1RpdGxlUG9zdEZpeDtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdiBzbWUtbGF5b3V0LXJlbGF0aXZlIHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8teSBzbWUtcG9zaXRpb24tc3RyZXRjaFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1sYXlvdXQtdG9vbC1oZWFkZXIgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYXJyYW5nZS1lbGxpcHNpcyBzbWUtcGFkZGluZy1ib3R0b20tbm9uZSBzbWUtcGFkZGluZy1sZWZ0LW1kXCIgKm5nSWY9XCJzZXR0aW5nc1RpdGxlXCI+XHJcbiAgICAgIDxoMiBbdGl0bGVdPVwiZnVsbFNldHRpbmdzVGl0bGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImZ1bGxTZXR0aW5nc1RpdGxlXCIgY2xhc3M9XCJzbWUtZm9udC1oM1wiPnt7IHNldHRpbmdzVGl0bGUgfX1cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkU2V0dGluZ3NUaXRsZVwiIGNsYXNzPVwic21lLXBhZGRpbmctaG9yaXpvbnRhbC1zbSBzbWUtZm9udC1mYW1pbHktbm9ybWFsXCI+e3sgaGVhZGVyU2VwYXJhdG9yIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRTZXR0aW5nc1RpdGxlXCIgY2xhc3M9XCJzbWUtZm9udC1mYW1pbHktbm9ybWFsXCI+e3sgc2VsZWN0ZWRTZXR0aW5nc1RpdGxlIH19PC9zcGFuPlxyXG4gICAgICA8L2gyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c21lLWxheW91dCAjbGF5b3V0IChsYXlvdXRDaGFuZ2VkKT1cImlzUGFkZGluZ1JlcXVpcmVkKClcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0b1wiIFtwYWRMYXN0SXRlbV09XCJmYWxzZVwiPlxyXG4gICAgICAgIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gbmFtZT1cIm5hcnJvd1wiIFt1bnRpbF09XCI4MDBcIiBbY29sdW1uc109XCIxXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgICAgICAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwid2lkZVwiIFtjb2x1bW5zXT1cIjVcIiBbYWRkQm90dG9tUGFkZGluZ109XCJmYWxzZVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gICAgICAgIDxzbWUtbGF5b3V0LWl0ZW0gW2NvbHVtblNwYW5dPVwiMVwiIFtuZ0NsYXNzXT1cImxheW91dC5jdXJyZW50TGF5b3V0RGVmaW5pdGlvbk5hbWU9PT0nbmFycm93JyA/ICcnIDogJ3NtZS1wb3NpdGlvbi1zdHJldGNoLXYnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1zZXR0aW5ncy1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvc21lLWxheW91dC1pdGVtPlxyXG4gICAgICAgIDxzbWUtbGF5b3V0LWl0ZW0gW2NvbHVtblNwYW5dPVwiNFwiIGNsYXNzPVwic21lLXBhZGRpbmctdG9wLXhzXCIgW25nQ2xhc3NdPVwiYWRkUGFkZGluZyA/ICdzbWUtcG9zaXRpb24tc3RyZXRjaCBzbWUtcGFkZGluZy1sZWZ0LXhsJyA6ICdzbWUtcG9zaXRpb24tc3RyZXRjaCdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWhlYWRlclwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1zZXR0aW5ncy1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9zbWUtbGF5b3V0LWl0ZW0+XHJcbiAgICA8L3NtZS1sYXlvdXQ+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,7 +1,9 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
3
4
  import { RouterModule } from '@angular/router';
4
5
  import { SmeRouterModule } from '../../directives/router/router.module';
6
+ import { SmeFormsModule } from '../form/forms.module';
5
7
  import { HeaderModule } from '../header/header.module';
6
8
  import { LayoutModule } from '../layout/layout.module';
7
9
  import { TooltipModule } from '../tooltip/tooltip.module';
@@ -17,9 +19,13 @@ import { SettingsNavigationComponent } from './settings-navigation.component';
17
19
  import { SettingsComponent } from './settings.component';
18
20
  import * as i0 from "@angular/core";
19
21
  import * as i1 from "@angular/common";
20
- import * as i2 from "../tooltip/tooltip.directive";
21
- import * as i3 from "@angular/router";
22
- import * as i4 from "../../directives/router/router-link.directive";
22
+ import * as i2 from "@angular/forms";
23
+ import * as i3 from "../form/form-field/form-field-accessor.directive";
24
+ import * as i4 from "../form/form-field/form-field-validator.directive";
25
+ import * as i5 from "../form/form-field/search/search-form-field.component";
26
+ import * as i6 from "../tooltip/tooltip.directive";
27
+ import * as i7 from "@angular/router";
28
+ import * as i8 from "../../directives/router/router-link.directive";
23
29
  export class SettingsModule {
24
30
  }
25
31
  /** @nocollapse */ SettingsModule.ɵfac = function SettingsModule_Factory(t) { return new (t || SettingsModule)(); };
@@ -33,7 +39,9 @@ export class SettingsModule {
33
39
  CommonModule,
34
40
  HeaderModule,
35
41
  LayoutModule,
36
- TooltipModule
42
+ TooltipModule,
43
+ FormsModule,
44
+ SmeFormsModule
37
45
  ]] });
38
46
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SettingsModule, { declarations: [SettingsComponent,
39
47
  SettingsFormDirective,
@@ -47,7 +55,9 @@ export class SettingsModule {
47
55
  CommonModule,
48
56
  HeaderModule,
49
57
  LayoutModule,
50
- TooltipModule], exports: [SettingsComponent,
58
+ TooltipModule,
59
+ FormsModule,
60
+ SmeFormsModule], exports: [SettingsComponent,
51
61
  SettingsFormDirective,
52
62
  SettingsFooterComponent,
53
63
  SettingsHeaderComponent,
@@ -64,7 +74,9 @@ export class SettingsModule {
64
74
  CommonModule,
65
75
  HeaderModule,
66
76
  LayoutModule,
67
- TooltipModule
77
+ TooltipModule,
78
+ FormsModule,
79
+ SmeFormsModule
68
80
  ],
69
81
  exports: [
70
82
  SettingsComponent,
@@ -93,6 +105,6 @@ export class SettingsModule {
93
105
  }]
94
106
  }], null, null); })();
95
107
  i0.ɵɵsetComponentScope(CommonSettingsComponent, [SettingsComponent,
96
- SettingsNavigationComponent, i1.NgIf, i1.NgForOf, i2.TooltipDirective, i3.RouterLinkWithHref, i3.RouterLinkActive, i4.SmeRouterLinkDirective, i1.NgClass, SettingsHeaderComponent,
97
- SettingsContentComponent, i3.RouterOutlet, SettingsFooterComponent], []);
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQW9DekQsTUFBTSxPQUFPLGNBQWM7OytGQUFkLGNBQWM7cUVBQWQsY0FBYzswRUFMWjtRQUNQLG1CQUFtQjtRQUNuQixrQkFBa0I7S0FDckIsWUEvQlE7WUFDTCxlQUFlO1lBQ2YsWUFBWTtZQUNaLFlBQVk7WUFDWixZQUFZO1lBQ1osWUFBWTtZQUNaLGFBQWE7U0FDaEI7d0ZBMEJRLGNBQWMsbUJBZG5CLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLDJCQUEyQjtRQUMzQix1QkFBdUIsYUF6QnZCLGVBQWU7UUFDZixZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7UUFDWixZQUFZO1FBQ1osYUFBYSxhQUdiLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLDJCQUEyQjtRQUMzQix1QkFBdUI7dUZBaUJsQixjQUFjO2NBbEMxQixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLGVBQWU7b0JBQ2YsWUFBWTtvQkFDWixZQUFZO29CQUNaLFlBQVk7b0JBQ1osWUFBWTtvQkFDWixhQUFhO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ0wsaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLHVCQUF1QjtvQkFDdkIsdUJBQXVCO29CQUN2Qix3QkFBd0I7b0JBQ3hCLHFCQUFxQjtvQkFDckIsMkJBQTJCO29CQUMzQix1QkFBdUI7aUJBQzFCO2dCQUNELFlBQVksRUFBRTtvQkFDVixpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIsdUJBQXVCO29CQUN2Qix1QkFBdUI7b0JBQ3ZCLHdCQUF3QjtvQkFDeEIscUJBQXFCO29CQUNyQiwyQkFBMkI7b0JBQzNCLHVCQUF1QjtpQkFDMUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLG1CQUFtQjtvQkFDbkIsa0JBQWtCO2lCQUNyQjthQUNKOzt1QkFOTyx1QkFBdUIsR0FQdkIsaUJBQWlCO0lBTWpCLDJCQUEyQiwrSEFIM0IsdUJBQXVCO0lBQ3ZCLHdCQUF3QixtQkFGeEIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU21lUm91dGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb3V0ZXIvcm91dGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IEhlYWRlck1vZHVsZSB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIubW9kdWxlJztcclxuaW1wb3J0IHsgTGF5b3V0TW9kdWxlIH0gZnJvbSAnLi4vbGF5b3V0L2xheW91dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vblNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21tb24tc2V0dGluZ3MvY29tbW9uLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzUGFnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uLXNldHRpbmdzL3NldHRpbmdzLXBhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUd1YXJkIH0gZnJvbSAnLi9zZXR0aW5ncy1jYW4tZGVhY3RpdmF0ZS1ndWFyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0dGluZ3NDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy1mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3NGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9zZXR0aW5ncy1mb3JtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybVNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3NOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBTbWVSb3V0ZXJNb2R1bGUsXHJcbiAgICAgICAgUm91dGVyTW9kdWxlLFxyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBIZWFkZXJNb2R1bGUsXHJcbiAgICAgICAgTGF5b3V0TW9kdWxlLFxyXG4gICAgICAgIFRvb2x0aXBNb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgU2V0dGluZ3NDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NGb3JtRGlyZWN0aXZlLFxyXG4gICAgICAgIFNldHRpbmdzRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzQ29udGVudENvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc1BhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NOYXZpZ2F0aW9uQ29tcG9uZW50LFxyXG4gICAgICAgIENvbW1vblNldHRpbmdzQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgU2V0dGluZ3NDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NGb3JtRGlyZWN0aXZlLFxyXG4gICAgICAgIFNldHRpbmdzRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzQ29udGVudENvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc1BhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NOYXZpZ2F0aW9uQ29tcG9uZW50LFxyXG4gICAgICAgIENvbW1vblNldHRpbmdzQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgU2V0dGluZ3NGb3JtU2VydmljZSxcclxuICAgICAgICBDYW5EZWFjdGl2YXRlR3VhcmRcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzTW9kdWxlIHsgfVxyXG4iXX0=
108
+ SettingsNavigationComponent, i1.NgIf, i2.ɵangular_packages_forms_forms_ba, i2.NgControlStatusGroup, i2.NgForm, i3.FormFieldAccessorDirective, i4.FormFieldValidatorDirective, i5.SearchFormFieldComponent, i2.NgControlStatus, i2.NgModel, i1.NgClass, i1.NgForOf, i6.TooltipDirective, i7.RouterLinkWithHref, i7.RouterLinkActive, i8.SmeRouterLinkDirective, SettingsHeaderComponent,
109
+ SettingsContentComponent, i7.RouterOutlet, SettingsFooterComponent], []);
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQXNDekQsTUFBTSxPQUFPLGNBQWM7OytGQUFkLGNBQWM7cUVBQWQsY0FBYzswRUFMWjtRQUNQLG1CQUFtQjtRQUNuQixrQkFBa0I7S0FDckIsWUFqQ1E7WUFDTCxlQUFlO1lBQ2YsWUFBWTtZQUNaLFlBQVk7WUFDWixZQUFZO1lBQ1osWUFBWTtZQUNaLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztTQUNqQjt3RkEwQlEsY0FBYyxtQkFkbkIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsMkJBQTJCO1FBQzNCLHVCQUF1QixhQTNCdkIsZUFBZTtRQUNmLFlBQVk7UUFDWixZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7UUFDWixhQUFhO1FBQ2IsV0FBVztRQUNYLGNBQWMsYUFHZCxpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQiwyQkFBMkI7UUFDM0IsdUJBQXVCO3VGQWlCbEIsY0FBYztjQXBDMUIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxlQUFlO29CQUNmLFlBQVk7b0JBQ1osWUFBWTtvQkFDWixZQUFZO29CQUNaLFlBQVk7b0JBQ1osYUFBYTtvQkFDYixXQUFXO29CQUNYLGNBQWM7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIsdUJBQXVCO29CQUN2Qix1QkFBdUI7b0JBQ3ZCLHdCQUF3QjtvQkFDeEIscUJBQXFCO29CQUNyQiwyQkFBMkI7b0JBQzNCLHVCQUF1QjtpQkFDMUI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLGlCQUFpQjtvQkFDakIscUJBQXFCO29CQUNyQix1QkFBdUI7b0JBQ3ZCLHVCQUF1QjtvQkFDdkIsd0JBQXdCO29CQUN4QixxQkFBcUI7b0JBQ3JCLDJCQUEyQjtvQkFDM0IsdUJBQXVCO2lCQUMxQjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsbUJBQW1CO29CQUNuQixrQkFBa0I7aUJBQ3JCO2FBQ0o7O3VCQU5PLHVCQUF1QixHQVB2QixpQkFBaUI7SUFNakIsMkJBQTJCLG9VQUgzQix1QkFBdUI7SUFDdkIsd0JBQXdCLG1CQUZ4Qix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU21lUm91dGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb3V0ZXIvcm91dGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtZUZvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS9mb3Jtcy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IExheW91dE1vZHVsZSB9IGZyb20gJy4uL2xheW91dC9sYXlvdXQubW9kdWxlJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uLXNldHRpbmdzL2NvbW1vbi1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc1BhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi1zZXR0aW5ncy9zZXR0aW5ncy1wYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbkRlYWN0aXZhdGVHdWFyZCB9IGZyb20gJy4vc2V0dGluZ3MtY2FuLWRlYWN0aXZhdGUtZ3VhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZ3MtY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0Zvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZ3MtZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vc2V0dGluZ3MtZm9ybS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi9zZXR0aW5ncy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZ3MtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZ3MtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgU21lUm91dGVyTW9kdWxlLFxyXG4gICAgICAgIFJvdXRlck1vZHVsZSxcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgSGVhZGVyTW9kdWxlLFxyXG4gICAgICAgIExheW91dE1vZHVsZSxcclxuICAgICAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFNtZUZvcm1zTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIFNldHRpbmdzQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzRm9ybURpcmVjdGl2ZSxcclxuICAgICAgICBTZXR0aW5nc0Zvb3RlckNvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc0hlYWRlckNvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc0NvbnRlbnRDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICAgICAgICBDb21tb25TZXR0aW5nc0NvbXBvbmVudFxyXG4gICAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAgIFNldHRpbmdzQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzRm9ybURpcmVjdGl2ZSxcclxuICAgICAgICBTZXR0aW5nc0Zvb3RlckNvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc0hlYWRlckNvbXBvbmVudCxcclxuICAgICAgICBTZXR0aW5nc0NvbnRlbnRDb21wb25lbnQsXHJcbiAgICAgICAgU2V0dGluZ3NQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIFNldHRpbmdzTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICAgICAgICBDb21tb25TZXR0aW5nc0NvbXBvbmVudFxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFNldHRpbmdzRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgQ2FuRGVhY3RpdmF0ZUd1YXJkXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc01vZHVsZSB7IH1cclxuIl19