@alauda-fe/common 1.4.29-beta.2 → 1.4.30-beta.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 (31) hide show
  1. package/array-form-table/form/component.d.ts +1 -1
  2. package/code/managed-fields-folder.util.d.ts +2 -3
  3. package/code/resource-yaml-display/component.d.ts +3 -8
  4. package/code/resource-yaml-editor/component.d.ts +2 -3
  5. package/code/yaml-sidebar/component.d.ts +6 -15
  6. package/core/abstract/base-nested-form-control.d.ts +1 -1
  7. package/core/services/kubernetes-schema.service.d.ts +1 -0
  8. package/core/services/plugin-util.service.d.ts +1 -1
  9. package/core/services/workspace-helper.service.d.ts +1 -1
  10. package/core/services/yaml-util.service.d.ts +1 -1
  11. package/core/types/schema.d.ts +9 -0
  12. package/core/utils/version.d.ts +1 -1
  13. package/esm2022/code/managed-fields-folder.util.mjs +1 -1
  14. package/esm2022/code/resource-yaml-display/component.mjs +24 -28
  15. package/esm2022/code/resource-yaml-editor/component.mjs +12 -15
  16. package/esm2022/code/yaml-examples.mjs +14 -6
  17. package/esm2022/code/yaml-sidebar/component.mjs +92 -118
  18. package/esm2022/core/services/kubernetes-schema.service.mjs +27 -21
  19. package/esm2022/core/services/plugin-util.service.mjs +3 -3
  20. package/esm2022/core/services/workspace-helper.service.mjs +1 -1
  21. package/esm2022/core/services/yaml-util.service.mjs +3 -2
  22. package/esm2022/core/types/schema.mjs +1 -1
  23. package/esm2022/permission/k8s-permission.service.mjs +5 -2
  24. package/esm2022/permission/types.mjs +1 -1
  25. package/esm2022/translate/i18n-assets-loader.mjs +7 -2
  26. package/esm2022/translate/translate.service.mjs +93 -171
  27. package/package.json +1 -1
  28. package/permission/types.d.ts +17 -8
  29. package/table/component.d.ts +1 -1
  30. package/table/helper.d.ts +1 -1
  31. package/translate/translate.service.d.ts +10 -50
@@ -1,9 +1,9 @@
1
1
  import { IconModule, TabsModule, ButtonModule } from '@alauda/ui';
2
2
  import { NgIf, NgForOf, KeyValuePipe } from '@angular/common';
3
3
  import { HttpClient } from '@angular/common/http';
4
- import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, } from '@angular/core';
4
+ import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef, } from '@angular/core';
5
5
  import { of, map, catchError } from 'rxjs';
6
- import { ParseJsonTranslatePipe } from '../../core/pipes/parse-json-translate.pipe';
6
+ import { PurePipe, ParseJsonTranslatePipe } from '../../core/pipes/public-api';
7
7
  import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
8
8
  import { TRANSLATE_MODULE } from '../../translate/translate.module';
9
9
  import { BUILT_IN_YAML_EXAMPLES } from '../yaml-examples';
@@ -17,34 +17,27 @@ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_1_Template(rf, ctx)
17
17
  i0.ɵɵtext(1, " Schema ");
18
18
  i0.ɵɵelementContainerEnd();
19
19
  } }
20
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelement(0, "div", 13);
22
- i0.ɵɵpipe(1, "aclParseJsonTranslate");
23
- } if (rf & 2) {
24
- const ctx_r0 = i0.ɵɵnextContext(4);
25
- i0.ɵɵproperty("innerHTML", ctx_r0.processDescription(i0.ɵɵpipeBind1(1, 1, ctx_r0.schema.description)), i0.ɵɵsanitizeHtml);
26
- } }
27
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
28
- const _r2 = i0.ɵɵgetCurrentView();
20
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
21
+ const _r1 = i0.ɵɵgetCurrentView();
29
22
  i0.ɵɵelementContainerStart(0);
30
- i0.ɵɵelementStart(1, "a", 14);
31
- i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.refresh()); });
23
+ i0.ɵɵelementStart(1, "a", 13);
24
+ i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_2_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.refresh()); });
32
25
  i0.ɵɵtext(2);
33
26
  i0.ɵɵelementEnd();
34
27
  i0.ɵɵelementContainerEnd();
35
28
  } if (rf & 2) {
36
- const ctx_r0 = i0.ɵɵnextContext(4);
29
+ const ctx_r1 = i0.ɵɵnextContext(4);
37
30
  i0.ɵɵadvance(2);
38
- i0.ɵɵtextInterpolate(ctx_r0.resourceKind);
31
+ i0.ɵɵtextInterpolate(ctx_r1.resourceKind);
39
32
  } }
40
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
33
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
41
34
  const _r3 = i0.ɵɵgetCurrentView();
42
35
  i0.ɵɵelementContainerStart(0);
43
- i0.ɵɵelementStart(1, "span", 15);
36
+ i0.ɵɵelementStart(1, "span", 14);
44
37
  i0.ɵɵtext(2, ">");
45
38
  i0.ɵɵelementEnd();
46
- i0.ɵɵelementStart(3, "a", 14);
47
- i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_ng_container_1_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r3); const i_r4 = i0.ɵɵnextContext().index; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.navigateToPath(i_r4)); });
39
+ i0.ɵɵelementStart(3, "a", 13);
40
+ i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_ng_container_1_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r3); const i_r4 = i0.ɵɵnextContext().index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToPath(i_r4)); });
48
41
  i0.ɵɵtext(4);
49
42
  i0.ɵɵelementEnd();
50
43
  i0.ɵɵelementContainerEnd();
@@ -53,9 +46,9 @@ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_containe
53
46
  i0.ɵɵadvance(4);
54
47
  i0.ɵɵtextInterpolate(p_r5);
55
48
  } }
56
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
49
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
57
50
  i0.ɵɵelementContainerStart(0);
58
- i0.ɵɵelementStart(1, "span", 15);
51
+ i0.ɵɵelementStart(1, "span", 14);
59
52
  i0.ɵɵtext(2, ">");
60
53
  i0.ɵɵelementEnd();
61
54
  i0.ɵɵelementStart(3, "span");
@@ -67,9 +60,9 @@ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_containe
67
60
  i0.ɵɵadvance(4);
68
61
  i0.ɵɵtextInterpolate(p_r5);
69
62
  } }
70
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
63
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
71
64
  i0.ɵɵelementContainerStart(0);
72
- i0.ɵɵtemplate(1, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_ng_container_1_Template, 5, 1, "ng-container", 3)(2, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_ng_container_2_Template, 5, 1, "ng-container", 3);
65
+ i0.ɵɵtemplate(1, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_ng_container_1_Template, 5, 1, "ng-container", 3)(2, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_ng_container_2_Template, 5, 1, "ng-container", 3);
73
66
  i0.ɵɵelementContainerEnd();
74
67
  } if (rf & 2) {
75
68
  const isLast_r6 = ctx.last;
@@ -78,10 +71,18 @@ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_containe
78
71
  i0.ɵɵadvance();
79
72
  i0.ɵɵproperty("ngIf", isLast_r6);
80
73
  } }
81
- function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_7_Template(rf, ctx) { if (rf & 1) {
74
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelement(0, "div", 15);
76
+ i0.ɵɵpipe(1, "aclParseJsonTranslate");
77
+ i0.ɵɵpipe(2, "pure");
78
+ } if (rf & 2) {
79
+ const ctx_r1 = i0.ɵɵnextContext(4);
80
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(2, 3, i0.ɵɵpipeBind1(1, 1, ctx_r1.currentSchemaDescription), ctx_r1.processDescription), i0.ɵɵsanitizeHtml);
81
+ } }
82
+ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_8_Template(rf, ctx) { if (rf & 1) {
82
83
  const _r7 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "p")(1, "a", 14);
84
- i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_7_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r7); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.drillDownToProperty(item_r8.key)); });
84
+ i0.ɵɵelementStart(0, "p")(1, "a", 13);
85
+ i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_8_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r7); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.drillDownToProperty(item_r8.key)); });
85
86
  i0.ɵɵtext(2);
86
87
  i0.ɵɵpipe(3, "translate");
87
88
  i0.ɵɵelementEnd()();
@@ -97,49 +98,50 @@ function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_Templ
97
98
  i0.ɵɵtext(5);
98
99
  i0.ɵɵelementEnd()();
99
100
  i0.ɵɵelement(6, "p", 18);
100
- i0.ɵɵtemplate(7, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_7_Template, 4, 3, "p", 3);
101
+ i0.ɵɵpipe(7, "pure");
102
+ i0.ɵɵtemplate(8, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_p_8_Template, 4, 3, "p", 3);
103
+ i0.ɵɵpipe(9, "pure");
101
104
  i0.ɵɵelementEnd();
102
105
  } if (rf & 2) {
103
106
  const item_r8 = ctx.$implicit;
104
- const ctx_r0 = i0.ɵɵnextContext(4);
107
+ const ctx_r1 = i0.ɵɵnextContext(4);
105
108
  i0.ɵɵadvance(3);
106
109
  i0.ɵɵtextInterpolate(item_r8.key);
107
110
  i0.ɵɵadvance(2);
108
111
  i0.ɵɵtextInterpolate(item_r8.value.type);
109
112
  i0.ɵɵadvance();
110
- i0.ɵɵproperty("innerHTML", ctx_r0.processDescription(item_r8.value.description), i0.ɵɵsanitizeHtml);
111
- i0.ɵɵadvance();
112
- i0.ɵɵproperty("ngIf", ctx_r0.hasViewableContent(item_r8.value));
113
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(7, 4, item_r8.value.description, ctx_r1.processDescription), i0.ɵɵsanitizeHtml);
114
+ i0.ɵɵadvance(2);
115
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(9, 7, item_r8.value, ctx_r1.hasViewableContent));
113
116
  } }
114
117
  function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelementStart(0, "div", 7);
116
- i0.ɵɵtemplate(1, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_1_Template, 2, 3, "div", 8);
117
- i0.ɵɵelementStart(2, "div", 9);
118
- i0.ɵɵtemplate(3, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_Template, 3, 1, "ng-container", 3)(4, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_4_Template, 3, 2, "ng-container", 10);
118
+ i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
119
+ i0.ɵɵtemplate(2, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_2_Template, 3, 1, "ng-container", 3)(3, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_ng_container_3_Template, 3, 2, "ng-container", 9);
119
120
  i0.ɵɵelementEnd();
121
+ i0.ɵɵtemplate(4, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_4_Template, 3, 6, "div", 10);
120
122
  i0.ɵɵelementStart(5, "div", 11);
121
- i0.ɵɵtemplate(6, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_Template, 8, 4, "div", 12);
123
+ i0.ɵɵtemplate(6, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_div_6_Template, 10, 10, "div", 12);
122
124
  i0.ɵɵpipe(7, "keyvalue");
123
125
  i0.ɵɵelementEnd()();
124
126
  } if (rf & 2) {
125
- const ctx_r0 = i0.ɵɵnextContext(3);
126
- i0.ɵɵadvance();
127
- i0.ɵɵproperty("ngIf", ctx_r0.schema.description);
127
+ const ctx_r1 = i0.ɵɵnextContext(3);
128
128
  i0.ɵɵadvance(2);
129
- i0.ɵɵproperty("ngIf", ctx_r0.path.length);
129
+ i0.ɵɵproperty("ngIf", ctx_r1.path.length);
130
130
  i0.ɵɵadvance();
131
- i0.ɵɵproperty("ngForOf", ctx_r0.path);
131
+ i0.ɵɵproperty("ngForOf", ctx_r1.path);
132
+ i0.ɵɵadvance();
133
+ i0.ɵɵproperty("ngIf", ctx_r1.currentSchemaDescription);
132
134
  i0.ɵɵadvance(2);
133
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 4, ctx_r0.properties));
135
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 4, ctx_r1.properties));
134
136
  } }
135
137
  function ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_Template(rf, ctx) { if (rf & 1) {
136
138
  i0.ɵɵelementContainerStart(0);
137
139
  i0.ɵɵtemplate(1, ResourceYamlSidebarComponent_aui_tab_5_ng_container_2_div_1_Template, 8, 6, "div", 6);
138
140
  i0.ɵɵelementContainerEnd();
139
141
  } if (rf & 2) {
140
- const ctx_r0 = i0.ɵɵnextContext(2);
142
+ const ctx_r1 = i0.ɵɵnextContext(2);
141
143
  i0.ɵɵadvance();
142
- i0.ɵɵproperty("ngIf", ctx_r0.schema);
144
+ i0.ɵɵproperty("ngIf", ctx_r1.schema);
143
145
  } }
144
146
  function ResourceYamlSidebarComponent_aui_tab_5_Template(rf, ctx) { if (rf & 1) {
145
147
  i0.ɵɵelementStart(0, "aui-tab");
@@ -159,39 +161,40 @@ function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template(rf
159
161
  i0.ɵɵtext(4);
160
162
  i0.ɵɵelementEnd()();
161
163
  i0.ɵɵelement(5, "p", 18);
162
- i0.ɵɵelementStart(6, "p", 22)(7, "a", 14);
163
- i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template_a_click_7_listener() { const example_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.tryExample(example_r10)); });
164
- i0.ɵɵelement(8, "aui-icon", 23);
165
- i0.ɵɵelementStart(9, "span");
166
- i0.ɵɵtext(10, "Try it");
164
+ i0.ɵɵpipe(6, "pure");
165
+ i0.ɵɵelementStart(7, "p", 22)(8, "a", 13);
166
+ i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template_a_click_8_listener() { const example_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.tryExample(example_r10)); });
167
+ i0.ɵɵelement(9, "aui-icon", 23);
168
+ i0.ɵɵelementStart(10, "span");
169
+ i0.ɵɵtext(11, "Try it");
167
170
  i0.ɵɵelementEnd()();
168
- i0.ɵɵelementStart(11, "a", 14);
169
- i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template_a_click_11_listener() { const example_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.downloadYaml(example_r10)); });
170
- i0.ɵɵelement(12, "aui-icon", 24);
171
- i0.ɵɵelementStart(13, "span");
172
- i0.ɵɵtext(14, "Download YAML");
171
+ i0.ɵɵelementStart(12, "a", 13);
172
+ i0.ɵɵlistener("click", function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template_a_click_12_listener() { const example_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.downloadYaml(example_r10)); });
173
+ i0.ɵɵelement(13, "aui-icon", 24);
174
+ i0.ɵɵelementStart(14, "span");
175
+ i0.ɵɵtext(15, "Download YAML");
173
176
  i0.ɵɵelementEnd()()()();
174
177
  } if (rf & 2) {
175
178
  const example_r10 = ctx.$implicit;
176
179
  const i_r11 = ctx.index;
177
- const ctx_r0 = i0.ɵɵnextContext(3);
180
+ const ctx_r1 = i0.ɵɵnextContext(3);
178
181
  i0.ɵɵadvance(2);
179
182
  i0.ɵɵtextInterpolate1(" ", i_r11 + 1, ". ");
180
183
  i0.ɵɵadvance(2);
181
184
  i0.ɵɵtextInterpolate(example_r10.title);
182
185
  i0.ɵɵadvance();
183
- i0.ɵɵproperty("innerHTML", ctx_r0.processDescription(example_r10.description), i0.ɵɵsanitizeHtml);
186
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(6, 3, example_r10.description, ctx_r1.processDescription), i0.ɵɵsanitizeHtml);
184
187
  } }
185
188
  function ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
186
189
  i0.ɵɵelementContainerStart(0);
187
190
  i0.ɵɵelementStart(1, "div", 19);
188
- i0.ɵɵtemplate(2, ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template, 15, 3, "div", 20);
191
+ i0.ɵɵtemplate(2, ResourceYamlSidebarComponent_aui_tab_6_ng_container_2_div_2_Template, 16, 6, "div", 20);
189
192
  i0.ɵɵelementEnd();
190
193
  i0.ɵɵelementContainerEnd();
191
194
  } if (rf & 2) {
192
- const ctx_r0 = i0.ɵɵnextContext(2);
195
+ const ctx_r1 = i0.ɵɵnextContext(2);
193
196
  i0.ɵɵadvance(2);
194
- i0.ɵɵproperty("ngForOf", ctx_r0.examples);
197
+ i0.ɵɵproperty("ngForOf", ctx_r1.examples);
195
198
  } }
196
199
  function ResourceYamlSidebarComponent_aui_tab_6_Template(rf, ctx) { if (rf & 1) {
197
200
  i0.ɵɵelementStart(0, "aui-tab");
@@ -199,10 +202,11 @@ function ResourceYamlSidebarComponent_aui_tab_6_Template(rf, ctx) { if (rf & 1)
199
202
  i0.ɵɵelementEnd();
200
203
  } }
201
204
  export class ResourceYamlSidebarComponent {
202
- constructor(schemaService, http, cdr) {
205
+ constructor(schemaService, http, cdr, host) {
203
206
  this.schemaService = schemaService;
204
207
  this.http = http;
205
208
  this.cdr = cdr;
209
+ this.host = host;
206
210
  this.close = new EventEmitter();
207
211
  this.tryYaml = new EventEmitter();
208
212
  this.schemaEnable = true;
@@ -226,6 +230,7 @@ export class ResourceYamlSidebarComponent {
226
230
  refresh() {
227
231
  if (this.schema) {
228
232
  this.currentSchema = this.schema;
233
+ this.currentSchemaDescription = this.schema.description;
229
234
  this.properties = this.schema.properties || {};
230
235
  this.path = [];
231
236
  this.hasSchema = true;
@@ -270,7 +275,7 @@ export class ResourceYamlSidebarComponent {
270
275
  return of([]);
271
276
  }
272
277
  // 构建查询 ConsoleYAMLSample 的 API 路径
273
- const apiPath = '/apis/console.alauda.io/v1/consoleyamlsamples';
278
+ const apiPath = '{{API_GATEWAY}}/kubernetes/business-1/apis/console.alauda.io/v1/consoleyamlsamples';
274
279
  return this.http.get(apiPath).pipe(map(response => {
275
280
  return response.items
276
281
  .filter(sample => {
@@ -289,10 +294,11 @@ export class ResourceYamlSidebarComponent {
289
294
  drillDownToProperty(name) {
290
295
  const property = this.currentSchema.properties?.[name];
291
296
  if (property) {
297
+ this.currentSchemaDescription = property.description;
292
298
  let targetSchema = null;
293
299
  // 处理 $ref 引用
294
- if (property.$ref) {
295
- const ref = property.$ref;
300
+ if (property.$ref || property.items?.$ref) {
301
+ const ref = property.$ref || property.items?.$ref;
296
302
  if (ref.startsWith(this.DEFINITIONS_PREFIX)) {
297
303
  const definitionName = ref.replace(this.DEFINITIONS_PREFIX, '');
298
304
  // 从根 schema 的 definitions 中获取定义
@@ -308,6 +314,7 @@ export class ResourceYamlSidebarComponent {
308
314
  this.currentSchema = targetSchema;
309
315
  this.path.push(name);
310
316
  this.properties = targetSchema.properties || {};
317
+ this.scrollTop();
311
318
  }
312
319
  }
313
320
  }
@@ -318,12 +325,13 @@ export class ResourceYamlSidebarComponent {
318
325
  for (const pathSegment of targetPath) {
319
326
  const property = currentObj.properties?.[pathSegment];
320
327
  if (property) {
328
+ this.currentSchemaDescription = property.description;
321
329
  // 处理 $ref 引用
322
- if (property.$ref) {
323
- const ref = property.$ref;
330
+ if (property.$ref || property.items?.$ref) {
331
+ const ref = property.$ref || property.items?.$ref;
324
332
  if (ref.startsWith(this.DEFINITIONS_PREFIX)) {
325
333
  const definitionName = ref.replace(this.DEFINITIONS_PREFIX, '');
326
- const rootDefinitions = this.schema?.definitions;
334
+ const rootDefinitions = this.schemaService.definitions;
327
335
  const definition = rootDefinitions?.[definitionName];
328
336
  if (definition) {
329
337
  currentObj = definition;
@@ -339,29 +347,6 @@ export class ResourceYamlSidebarComponent {
339
347
  this.currentSchema = currentObj;
340
348
  this.properties = currentObj.properties || {};
341
349
  }
342
- hasNestedProperties(property) {
343
- return ((property.type === 'object' &&
344
- property.properties &&
345
- Object.keys(property.properties).length > 0) ||
346
- (property.type === 'array' &&
347
- property.items &&
348
- typeof property.items === 'object' &&
349
- property.items.properties &&
350
- Object.keys(property.items.properties || {})
351
- .length > 0));
352
- }
353
- getPropertyType(property) {
354
- if (property.type) {
355
- if (Array.isArray(property.type)) {
356
- return property.type.join(' | ');
357
- }
358
- return property.type;
359
- }
360
- return 'unknown';
361
- }
362
- isRequired(propertyName) {
363
- return this.currentSchema?.required?.includes(propertyName) || false;
364
- }
365
350
  /**
366
351
  * 检查属性是否有 $ref 引用或嵌套属性
367
352
  */
@@ -379,28 +364,8 @@ export class ResourceYamlSidebarComponent {
379
364
  Object.keys(property.items.properties || {})
380
365
  .length > 0) ||
381
366
  // 有 $ref 引用
382
- !!property.$ref);
383
- }
384
- /**
385
- * 检查属性是否有 $ref 引用
386
- */
387
- hasRefProperty(property) {
388
- return !!property.$ref;
389
- }
390
- /**
391
- * 获取 $ref 引用的定义名称
392
- */
393
- getRefDefinitionName(property) {
394
- const ref = property.$ref;
395
- if (ref && typeof ref === 'string') {
396
- // 从 "#/definitions/io.k8s.api.apps.v1.DeploymentSpec" 中提取定义名称
397
- if (ref.startsWith(this.DEFINITIONS_PREFIX)) {
398
- return ref.replace(this.DEFINITIONS_PREFIX, '');
399
- }
400
- const parts = ref.split('/');
401
- return parts[parts.length - 1] || ref;
402
- }
403
- return '';
367
+ !!property.$ref ||
368
+ !!property?.items?.$ref);
404
369
  }
405
370
  // Examples 相关方法
406
371
  tryExample(example) {
@@ -424,10 +389,17 @@ export class ResourceYamlSidebarComponent {
424
389
  return '';
425
390
  // 将 URL 转换为可点击的链接
426
391
  const urlRegex = /(https?:\/\/[^\s]+)/g;
427
- return description.replace(urlRegex, '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>');
392
+ return description
393
+ .replace(urlRegex, '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>')
394
+ .replace(/\n/g, '<br>'); // 保留换行符
395
+ }
396
+ scrollTop() {
397
+ this.host.nativeElement.scrollTo({
398
+ top: 0,
399
+ });
428
400
  }
429
- static { this.ɵfac = function ResourceYamlSidebarComponent_Factory(t) { return new (t || ResourceYamlSidebarComponent)(i0.ɵɵdirectiveInject(i1.KubernetesSchemaService), i0.ɵɵdirectiveInject(i2.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
430
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceYamlSidebarComponent, selectors: [["acl-resource-yaml-sidebar"]], inputs: { resource: "resource", schema: "schema", schemaEnable: "schemaEnable", exampleEnable: "exampleEnable", extraExamples: "extraExamples" }, outputs: { close: "close", tryYaml: "tryYaml" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 7, vars: 3, consts: [[1, "schema-header"], ["icon", "xmark", 3, "click"], ["type", "card"], [4, "ngIf"], [4, "auiTabLabel"], [4, "auiTabContent"], ["class", "schema-content", 4, "ngIf"], [1, "schema-content"], ["class", "schema-desc", 3, "innerHTML", 4, "ngIf"], [1, "schema-path"], [4, "ngFor", "ngForOf"], [1, "schema-list"], ["class", "schema-item", 4, "ngFor", "ngForOf"], [1, "schema-desc", 3, "innerHTML"], ["href", "javascript:", 3, "click"], [1, "path-mark"], [1, "schema-item"], [1, "obj-type"], [3, "innerHTML"], [1, "example-list"], ["class", "example-item", 4, "ngFor", "ngForOf"], [1, "example-item"], [1, "tw-flex", "tw-justify-between"], ["icon", "arrow_turn_up", "size", "14", "margin", "right"], ["icon", "download", "size", "14", "margin", "right"]], template: function ResourceYamlSidebarComponent_Template(rf, ctx) { if (rf & 1) {
401
+ static { this.ɵfac = function ResourceYamlSidebarComponent_Factory(t) { return new (t || ResourceYamlSidebarComponent)(i0.ɵɵdirectiveInject(i1.KubernetesSchemaService), i0.ɵɵdirectiveInject(i2.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
402
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceYamlSidebarComponent, selectors: [["acl-resource-yaml-sidebar"]], inputs: { resource: "resource", schema: "schema", schemaEnable: "schemaEnable", exampleEnable: "exampleEnable", extraExamples: "extraExamples" }, outputs: { close: "close", tryYaml: "tryYaml" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 7, vars: 3, consts: [[1, "schema-header"], ["icon", "xmark", 3, "click"], ["type", "card"], [4, "ngIf"], [4, "auiTabLabel"], [4, "auiTabContent"], ["class", "schema-content", 4, "ngIf"], [1, "schema-content"], [1, "schema-path"], [4, "ngFor", "ngForOf"], ["class", "schema-desc", 3, "innerHTML", 4, "ngIf"], [1, "schema-list"], ["class", "schema-item", 4, "ngFor", "ngForOf"], ["href", "javascript:", 3, "click"], [1, "path-mark"], [1, "schema-desc", 3, "innerHTML"], [1, "schema-item"], [1, "obj-type"], [3, "innerHTML"], [1, "example-list"], ["class", "example-item", 4, "ngFor", "ngForOf"], [1, "example-item"], [1, "tw-flex", "tw-justify-between"], ["icon", "arrow_turn_up", "size", "14", "margin", "right"], ["icon", "download", "size", "14", "margin", "right"]], template: function ResourceYamlSidebarComponent_Template(rf, ctx) { if (rf & 1) {
431
403
  i0.ɵɵelementStart(0, "div", 0)(1, "span");
432
404
  i0.ɵɵtext(2);
433
405
  i0.ɵɵelementEnd();
@@ -447,7 +419,8 @@ export class ResourceYamlSidebarComponent {
447
419
  } }, dependencies: [NgIf,
448
420
  NgForOf,
449
421
  KeyValuePipe, i3.TranslatePipe, ParseJsonTranslatePipe,
450
- IconModule, i4.IconComponent, TabsModule, i4.TabGroupComponent, i4.TabComponent, i4.TabLabelDirective, i4.TabContentDirective, ButtonModule], styles: ["[_nghost-%COMP%]{display:block;box-sizing:border-box;min-width:360px;padding:16px;background-color:rgb(var(--aui-color-n-10));box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);margin-left:12px;overflow-y:scroll}[_nghost-%COMP%]::-webkit-scrollbar{width:8px;height:4px}[_nghost-%COMP%]::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}[_nghost-%COMP%]::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}[_nghost-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}aui-tab-group[_ngcontent-%COMP%]{display:block;margin-top:5px}.schema-header[_ngcontent-%COMP%]{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:18px}.schema-header[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:16px;color:rgb(var(--aui-color-n-6));cursor:pointer}.schema-header[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]:hover{color:rgb(var(--aui-color-primary))}.schema-content[_ngcontent-%COMP%]{line-height:20px;overflow-y:auto;height:calc(100% - 40px)}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:4px}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}.schema-desc[_ngcontent-%COMP%]{margin-bottom:12px}.schema-desc[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.schema-desc[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.schema-path[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;margin-bottom:12px}.schema-path[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{margin-left:2px;word-break:break-all}.schema-path[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-child{margin-right:2px}.schema-path[_ngcontent-%COMP%] .path-mark[_ngcontent-%COMP%]{margin:0 4px;color:rgb(var(--aui-color-n-6))}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%], .schema-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]{padding-left:16px}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%]:not(:last-of-type), .schema-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:not(:last-of-type), .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%]:not(:last-of-type), .example-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:not(:last-of-type){border-bottom:1px solid rgb(var(--aui-color-border));margin-bottom:12px}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:before, .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:before{content:\"\";display:block;width:6px;height:6px;border-radius:50%;background-color:rgb(var(--aui-color-n-6));position:absolute;left:-12px;top:8px}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{position:relative;font-weight:500;margin-bottom:12px;word-break:break-word}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:4px}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .obj-type[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .obj-type[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4))}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:12px;word-break:break-word}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.schema-examples[_ngcontent-%COMP%]{padding:16px}.examples-header[_ngcontent-%COMP%]{margin-bottom:16px}.examples-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600;color:#333}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]{margin-bottom:24px;border:1px solid #e1e5e9;border-radius:6px;overflow:hidden}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:last-child{margin-bottom:0}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e1e5e9}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:600;color:#333}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s ease}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-primary[_ngcontent-%COMP%]{color:#007bff;border:1px solid #007bff;background-color:transparent}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-primary[_ngcontent-%COMP%]:hover{color:#fff;background-color:#007bff}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-secondary[_ngcontent-%COMP%]{color:#6c757d;border:1px solid #6c757d;background-color:transparent}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-secondary[_ngcontent-%COMP%]:hover{color:#fff;background-color:#6c757d}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%]{padding:12px 16px;color:#666;font-size:14px;line-height:1.5;border-bottom:1px solid #e1e5e9}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%]{background-color:#f8f9fa}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{margin:0;padding:16px;background-color:transparent;border:none;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.4;color:#333;overflow-x:auto}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background-color:transparent;padding:0;color:inherit}"], changeDetection: 0 }); }
422
+ IconModule, i4.IconComponent, TabsModule, i4.TabGroupComponent, i4.TabComponent, i4.TabLabelDirective, i4.TabContentDirective, ButtonModule,
423
+ PurePipe], styles: ["[_nghost-%COMP%]{display:block;box-sizing:border-box;min-width:360px;padding:16px;background-color:rgb(var(--aui-color-n-10));box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);margin-left:12px;overflow-y:scroll}[_nghost-%COMP%]::-webkit-scrollbar{width:8px;height:4px}[_nghost-%COMP%]::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}[_nghost-%COMP%]::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}[_nghost-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}aui-tab-group[_ngcontent-%COMP%]{display:block;margin-top:5px}.schema-header[_ngcontent-%COMP%]{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:18px}.schema-header[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:16px;color:rgb(var(--aui-color-n-6));cursor:pointer}.schema-header[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]:hover{color:rgb(var(--aui-color-primary))}.schema-content[_ngcontent-%COMP%]{line-height:20px;overflow-y:auto;height:calc(100% - 40px)}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:4px}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.schema-content[_ngcontent-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}.schema-desc[_ngcontent-%COMP%]{margin-bottom:12px}.schema-desc[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.schema-desc[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.schema-path[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;margin-bottom:12px}.schema-path[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{margin-left:2px;word-break:break-all}.schema-path[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-child{margin-right:2px}.schema-path[_ngcontent-%COMP%] .path-mark[_ngcontent-%COMP%]{margin:0 4px;color:rgb(var(--aui-color-n-6))}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%], .schema-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]{padding-left:16px}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%]:not(:last-of-type), .schema-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:not(:last-of-type), .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%]:not(:last-of-type), .example-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:not(:last-of-type){border-bottom:1px solid rgb(var(--aui-color-border));margin-bottom:12px}.schema-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:before, .example-list[_ngcontent-%COMP%] .schema-item[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:before{content:\"\";display:block;width:6px;height:6px;border-radius:50%;background-color:rgb(var(--aui-color-n-6));position:absolute;left:-12px;top:8px}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{position:relative;font-weight:500;margin-bottom:12px;word-break:break-word}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:4px}.schema-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .obj-type[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .obj-type[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4))}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:12px;word-break:break-word}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.schema-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .example-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.schema-examples[_ngcontent-%COMP%]{padding:16px}.examples-header[_ngcontent-%COMP%]{margin-bottom:16px}.examples-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600;color:#333}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]{margin-bottom:24px;border:1px solid #e1e5e9;border-radius:6px;overflow:hidden}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%]:last-child{margin-bottom:0}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e1e5e9}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:600;color:#333}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s ease}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-primary[_ngcontent-%COMP%]{color:#007bff;border:1px solid #007bff;background-color:transparent}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-primary[_ngcontent-%COMP%]:hover{color:#fff;background-color:#007bff}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-secondary[_ngcontent-%COMP%]{color:#6c757d;border:1px solid #6c757d;background-color:transparent}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-header[_ngcontent-%COMP%] .example-actions[_ngcontent-%COMP%] .btn.btn-outline-secondary[_ngcontent-%COMP%]:hover{color:#fff;background-color:#6c757d}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%]{padding:12px 16px;color:#666;font-size:14px;line-height:1.5;border-bottom:1px solid #e1e5e9}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#007bff;text-decoration:none}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-description[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%]{background-color:#f8f9fa}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{margin:0;padding:16px;background-color:transparent;border:none;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.4;color:#333;overflow-x:auto}.examples-content[_ngcontent-%COMP%] .examples-list[_ngcontent-%COMP%] .example-item[_ngcontent-%COMP%] .example-yaml[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background-color:transparent;padding:0;color:inherit}"], changeDetection: 0 }); }
451
424
  }
452
425
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceYamlSidebarComponent, [{
453
426
  type: Component,
@@ -460,8 +433,9 @@ export class ResourceYamlSidebarComponent {
460
433
  IconModule,
461
434
  TabsModule,
462
435
  ButtonModule,
463
- ], template: "<div class=\"schema-header\">\n <span>{{ resourceKind }}</span>\n <aui-icon\n icon=\"xmark\"\n (click)=\"close.next()\"\n ></aui-icon>\n</div>\n<aui-tab-group type=\"card\">\n <aui-tab *ngIf=\"schemaEnable && hasSchema\">\n <ng-container *auiTabLabel> Schema </ng-container>\n <ng-container *auiTabContent>\n <div\n *ngIf=\"schema\"\n class=\"schema-content\"\n >\n <div\n *ngIf=\"schema.description\"\n class=\"schema-desc\"\n [innerHTML]=\"\n processDescription(schema.description | aclParseJsonTranslate)\n \"\n ></div>\n <div class=\"schema-path\">\n <ng-container *ngIf=\"path.length\">\n <a\n href=\"javascript:\"\n (click)=\"refresh()\"\n >{{ resourceKind }}</a\n >\n </ng-container>\n\n <ng-container *ngFor=\"let p of path; index as i; last as isLast\">\n <ng-container *ngIf=\"!isLast\">\n <span class=\"path-mark\">></span>\n <a\n href=\"javascript:\"\n (click)=\"navigateToPath(i)\"\n >{{ p }}</a\n >\n </ng-container>\n <ng-container *ngIf=\"isLast\">\n <span class=\"path-mark\">></span>\n <span>{{ p }}</span>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"schema-list\">\n <div\n *ngFor=\"let item of properties | keyvalue\"\n class=\"schema-item\"\n >\n <h3>\n <span>{{ item.key }}</span>\n <span class=\"obj-type\">{{ item.value.type }}</span>\n </h3>\n <p [innerHTML]=\"processDescription(item.value.description)\"></p>\n <p *ngIf=\"hasViewableContent(item.value)\">\n <a\n href=\"javascript:\"\n (click)=\"drillDownToProperty(item.key)\"\n >\n {{ 'view_detail' | translate }}\n </a>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </aui-tab>\n <aui-tab *ngIf=\"exampleEnable && hasExamples\">\n <ng-container *auiTabLabel> Examples </ng-container>\n <ng-container *auiTabContent>\n <div class=\"example-list\">\n <div\n *ngFor=\"let example of examples; let i = index\"\n class=\"example-item\"\n >\n <h3>\n {{ i + 1 }}. <span>{{ example.title }}</span>\n </h3>\n <p [innerHTML]=\"processDescription(example.description)\"></p>\n <p class=\"tw-flex tw-justify-between\">\n <a\n href=\"javascript:\"\n (click)=\"tryExample(example)\"\n >\n <aui-icon\n icon=\"arrow_turn_up\"\n size=\"14\"\n margin=\"right\"\n ></aui-icon>\n <span>Try it</span>\n </a>\n <a\n href=\"javascript:\"\n (click)=\"downloadYaml(example)\"\n >\n <aui-icon\n icon=\"download\"\n size=\"14\"\n margin=\"right\"\n ></aui-icon>\n <span>Download YAML</span>\n </a>\n </p>\n </div>\n </div>\n </ng-container>\n </aui-tab>\n</aui-tab-group>\n", styles: [":host{display:block;box-sizing:border-box;min-width:360px;padding:16px;background-color:rgb(var(--aui-color-n-10));box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);margin-left:12px;overflow-y:scroll}:host::-webkit-scrollbar{width:8px;height:4px}:host::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}:host::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}:host::-webkit-scrollbar-corner{background-color:transparent}aui-tab-group{display:block;margin-top:5px}.schema-header{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:18px}.schema-header aui-icon{font-size:16px;color:rgb(var(--aui-color-n-6));cursor:pointer}.schema-header aui-icon:hover{color:rgb(var(--aui-color-primary))}.schema-content{line-height:20px;overflow-y:auto;height:calc(100% - 40px)}.schema-content::-webkit-scrollbar{width:8px;height:4px}.schema-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.schema-content::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.schema-content::-webkit-scrollbar-corner{background-color:transparent}.schema-desc{margin-bottom:12px}.schema-desc a{color:#007bff;text-decoration:none}.schema-desc a:hover{text-decoration:underline}.schema-path{display:flex;flex-wrap:wrap;margin-bottom:12px}.schema-path *{margin-left:2px;word-break:break-all}.schema-path span:first-child{margin-right:2px}.schema-path .path-mark{margin:0 4px;color:rgb(var(--aui-color-n-6))}.schema-list .schema-item,.schema-list .example-item,.example-list .schema-item,.example-list .example-item{padding-left:16px}.schema-list .schema-item:not(:last-of-type),.schema-list .example-item:not(:last-of-type),.example-list .schema-item:not(:last-of-type),.example-list .example-item:not(:last-of-type){border-bottom:1px solid rgb(var(--aui-color-border));margin-bottom:12px}.schema-list .schema-item h3:before,.example-list .schema-item h3:before{content:\"\";display:block;width:6px;height:6px;border-radius:50%;background-color:rgb(var(--aui-color-n-6));position:absolute;left:-12px;top:8px}.schema-list h3,.example-list h3{position:relative;font-weight:500;margin-bottom:12px;word-break:break-word}.schema-list h3 span,.example-list h3 span{margin-right:4px}.schema-list h3 .obj-type,.example-list h3 .obj-type{color:rgb(var(--aui-color-n-4))}.schema-list p,.example-list p{margin-bottom:12px;word-break:break-word}.schema-list p a,.example-list p a{color:#007bff;text-decoration:none}.schema-list p a:hover,.example-list p a:hover{text-decoration:underline}.schema-examples{padding:16px}.examples-header{margin-bottom:16px}.examples-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.examples-content .examples-list .example-item{margin-bottom:24px;border:1px solid #e1e5e9;border-radius:6px;overflow:hidden}.examples-content .examples-list .example-item:last-child{margin-bottom:0}.examples-content .examples-list .example-item .example-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e1e5e9}.examples-content .examples-list .example-item .example-header .example-title{margin:0;font-size:16px;font-weight:600;color:#333}.examples-content .examples-list .example-item .example-header .example-actions{display:flex;gap:8px}.examples-content .examples-list .example-item .example-header .example-actions .btn{padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s ease}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-primary{color:#007bff;border:1px solid #007bff;background-color:transparent}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-primary:hover{color:#fff;background-color:#007bff}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-secondary{color:#6c757d;border:1px solid #6c757d;background-color:transparent}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-secondary:hover{color:#fff;background-color:#6c757d}.examples-content .examples-list .example-item .example-description{padding:12px 16px;color:#666;font-size:14px;line-height:1.5;border-bottom:1px solid #e1e5e9}.examples-content .examples-list .example-item .example-description a{color:#007bff;text-decoration:none}.examples-content .examples-list .example-item .example-description a:hover{text-decoration:underline}.examples-content .examples-list .example-item .example-yaml{background-color:#f8f9fa}.examples-content .examples-list .example-item .example-yaml pre{margin:0;padding:16px;background-color:transparent;border:none;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.4;color:#333;overflow-x:auto}.examples-content .examples-list .example-item .example-yaml pre code{background-color:transparent;padding:0;color:inherit}\n"] }]
464
- }], () => [{ type: i1.KubernetesSchemaService }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }], { resource: [{
436
+ PurePipe,
437
+ ], template: "<div class=\"schema-header\">\n <span>{{ resourceKind }}</span>\n <aui-icon\n icon=\"xmark\"\n (click)=\"close.next()\"\n ></aui-icon>\n</div>\n<aui-tab-group type=\"card\">\n <aui-tab *ngIf=\"schemaEnable && hasSchema\">\n <ng-container *auiTabLabel> Schema </ng-container>\n <ng-container *auiTabContent>\n <div\n *ngIf=\"schema\"\n class=\"schema-content\"\n >\n <div class=\"schema-path\">\n <ng-container *ngIf=\"path.length\">\n <a\n href=\"javascript:\"\n (click)=\"refresh()\"\n >{{ resourceKind }}</a\n >\n </ng-container>\n\n <ng-container *ngFor=\"let p of path; index as i; last as isLast\">\n <ng-container *ngIf=\"!isLast\">\n <span class=\"path-mark\">></span>\n <a\n href=\"javascript:\"\n (click)=\"navigateToPath(i)\"\n >{{ p }}</a\n >\n </ng-container>\n <ng-container *ngIf=\"isLast\">\n <span class=\"path-mark\">></span>\n <span>{{ p }}</span>\n </ng-container>\n </ng-container>\n </div>\n <div\n *ngIf=\"currentSchemaDescription\"\n class=\"schema-desc\"\n [innerHTML]=\"\n currentSchemaDescription\n | aclParseJsonTranslate\n | pure: processDescription\n \"\n ></div>\n <div class=\"schema-list\">\n <div\n *ngFor=\"let item of properties | keyvalue\"\n class=\"schema-item\"\n >\n <h3>\n <span>{{ item.key }}</span>\n <span class=\"obj-type\">{{ item.value.type }}</span>\n </h3>\n <p\n [innerHTML]=\"item.value.description | pure: processDescription\"\n ></p>\n <p *ngIf=\"item.value | pure: hasViewableContent\">\n <a\n href=\"javascript:\"\n (click)=\"drillDownToProperty(item.key)\"\n >\n {{ 'view_detail' | translate }}\n </a>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </aui-tab>\n <aui-tab *ngIf=\"exampleEnable && hasExamples\">\n <ng-container *auiTabLabel> Examples </ng-container>\n <ng-container *auiTabContent>\n <div class=\"example-list\">\n <div\n *ngFor=\"let example of examples; let i = index\"\n class=\"example-item\"\n >\n <h3>\n {{ i + 1 }}. <span>{{ example.title }}</span>\n </h3>\n <p [innerHTML]=\"example.description | pure: processDescription\"></p>\n <p class=\"tw-flex tw-justify-between\">\n <a\n href=\"javascript:\"\n (click)=\"tryExample(example)\"\n >\n <aui-icon\n icon=\"arrow_turn_up\"\n size=\"14\"\n margin=\"right\"\n ></aui-icon>\n <span>Try it</span>\n </a>\n <a\n href=\"javascript:\"\n (click)=\"downloadYaml(example)\"\n >\n <aui-icon\n icon=\"download\"\n size=\"14\"\n margin=\"right\"\n ></aui-icon>\n <span>Download YAML</span>\n </a>\n </p>\n </div>\n </div>\n </ng-container>\n </aui-tab>\n</aui-tab-group>\n", styles: [":host{display:block;box-sizing:border-box;min-width:360px;padding:16px;background-color:rgb(var(--aui-color-n-10));box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);margin-left:12px;overflow-y:scroll}:host::-webkit-scrollbar{width:8px;height:4px}:host::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}:host::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}:host::-webkit-scrollbar-corner{background-color:transparent}aui-tab-group{display:block;margin-top:5px}.schema-header{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:18px}.schema-header aui-icon{font-size:16px;color:rgb(var(--aui-color-n-6));cursor:pointer}.schema-header aui-icon:hover{color:rgb(var(--aui-color-primary))}.schema-content{line-height:20px;overflow-y:auto;height:calc(100% - 40px)}.schema-content::-webkit-scrollbar{width:8px;height:4px}.schema-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.schema-content::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.schema-content::-webkit-scrollbar-corner{background-color:transparent}.schema-desc{margin-bottom:12px}.schema-desc a{color:#007bff;text-decoration:none}.schema-desc a:hover{text-decoration:underline}.schema-path{display:flex;flex-wrap:wrap;margin-bottom:12px}.schema-path *{margin-left:2px;word-break:break-all}.schema-path span:first-child{margin-right:2px}.schema-path .path-mark{margin:0 4px;color:rgb(var(--aui-color-n-6))}.schema-list .schema-item,.schema-list .example-item,.example-list .schema-item,.example-list .example-item{padding-left:16px}.schema-list .schema-item:not(:last-of-type),.schema-list .example-item:not(:last-of-type),.example-list .schema-item:not(:last-of-type),.example-list .example-item:not(:last-of-type){border-bottom:1px solid rgb(var(--aui-color-border));margin-bottom:12px}.schema-list .schema-item h3:before,.example-list .schema-item h3:before{content:\"\";display:block;width:6px;height:6px;border-radius:50%;background-color:rgb(var(--aui-color-n-6));position:absolute;left:-12px;top:8px}.schema-list h3,.example-list h3{position:relative;font-weight:500;margin-bottom:12px;word-break:break-word}.schema-list h3 span,.example-list h3 span{margin-right:4px}.schema-list h3 .obj-type,.example-list h3 .obj-type{color:rgb(var(--aui-color-n-4))}.schema-list p,.example-list p{margin-bottom:12px;word-break:break-word}.schema-list p a,.example-list p a{color:#007bff;text-decoration:none}.schema-list p a:hover,.example-list p a:hover{text-decoration:underline}.schema-examples{padding:16px}.examples-header{margin-bottom:16px}.examples-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.examples-content .examples-list .example-item{margin-bottom:24px;border:1px solid #e1e5e9;border-radius:6px;overflow:hidden}.examples-content .examples-list .example-item:last-child{margin-bottom:0}.examples-content .examples-list .example-item .example-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e1e5e9}.examples-content .examples-list .example-item .example-header .example-title{margin:0;font-size:16px;font-weight:600;color:#333}.examples-content .examples-list .example-item .example-header .example-actions{display:flex;gap:8px}.examples-content .examples-list .example-item .example-header .example-actions .btn{padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s ease}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-primary{color:#007bff;border:1px solid #007bff;background-color:transparent}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-primary:hover{color:#fff;background-color:#007bff}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-secondary{color:#6c757d;border:1px solid #6c757d;background-color:transparent}.examples-content .examples-list .example-item .example-header .example-actions .btn.btn-outline-secondary:hover{color:#fff;background-color:#6c757d}.examples-content .examples-list .example-item .example-description{padding:12px 16px;color:#666;font-size:14px;line-height:1.5;border-bottom:1px solid #e1e5e9}.examples-content .examples-list .example-item .example-description a{color:#007bff;text-decoration:none}.examples-content .examples-list .example-item .example-description a:hover{text-decoration:underline}.examples-content .examples-list .example-item .example-yaml{background-color:#f8f9fa}.examples-content .examples-list .example-item .example-yaml pre{margin:0;padding:16px;background-color:transparent;border:none;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.4;color:#333;overflow-x:auto}.examples-content .examples-list .example-item .example-yaml pre code{background-color:transparent;padding:0;color:inherit}\n"] }]
438
+ }], () => [{ type: i1.KubernetesSchemaService }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { resource: [{
465
439
  type: Input
466
440
  }], schema: [{
467
441
  type: Input
@@ -479,4 +453,4 @@ export class ResourceYamlSidebarComponent {
479
453
  type: Input
480
454
  }] }); })();
481
455
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceYamlSidebarComponent, { className: "ResourceYamlSidebarComponent" }); })();
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvZGUveWFtbC1zaWRlYmFyL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3lhbWwtc2lkZWJhci90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBSUwsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUd4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7OztJQ1p0RCw2QkFBMkI7SUFBQyx3QkFBTzs7OztJQU0vQiwwQkFNTzs7OztJQUhMLHlIQUVDOzs7O0lBR0QsNkJBQWtDO0lBQ2hDLDZCQUdHO0lBREQsNE5BQVMsZ0JBQVMsS0FBQztJQUNsQixZQUFrQjtJQUFBLGlCQUNwQjs7OztJQURFLGVBQWtCO0lBQWxCLHlDQUFrQjs7OztJQUtyQiw2QkFBOEI7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QTJCO1lBOER6QixBQTdEQSxxRkFBMkMsd0VBNkRHO1lBd0NoRCxpQkFBZ0I7O1lBNUdSLGVBQWtCO1lBQWxCLHNDQUFrQjtZQU9kLGVBQStCO1lBQS9CLHdEQUErQjtZQTZEL0IsY0FBa0M7WUFBbEMsMkRBQWtDOzRCRHJDMUMsSUFBSTtZQUNKLE9BQU87WUFDUCxZQUFZLG9CQUVaLHNCQUFzQjtZQUN0QixVQUFVLG9CQUNWLFVBQVUsdUZBQ1YsWUFBWTs7aUZBR0gsNEJBQTRCO2NBakJ4QyxTQUFTOzJCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsSUFBSTtvQkFDSixPQUFPO29CQUNQLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixzQkFBc0I7b0JBQ3RCLFVBQVU7b0JBQ1YsVUFBVTtvQkFDVixZQUFZO2lCQUNiO2lIQUlELFFBQVE7a0JBRFAsS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSzs7SUFJTiw0REFBNEQ7SUFDNUQsS0FBSztrQkFGSixNQUFNO1lBS1AsT0FBTztrQkFETixNQUFNO1lBSVAsWUFBWTtrQkFEWCxLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLOztrRkFwQkssNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWNvbk1vZHVsZSwgVGFic01vZHVsZSwgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0Zvck9mLCBLZXlWYWx1ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUGFyc2VKc29uVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2NvcmUvcGlwZXMvcGFyc2UtanNvbi10cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBLdWJlcm5ldGVzU2NoZW1hU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMva3ViZXJuZXRlcy1zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBLdWJlcm5ldGVzUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2s4cy9jb3JlJztcbmltcG9ydCB7IE9wZW5BUElWM1NjaGVtYU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvc2NoZW1hJztcbmltcG9ydCB7IFRSQU5TTEFURV9NT0RVTEUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvdHJhbnNsYXRlLm1vZHVsZSc7XG5pbXBvcnQgeyBCVUlMVF9JTl9ZQU1MX0VYQU1QTEVTIH0gZnJvbSAnLi4veWFtbC1leGFtcGxlcyc7XG5cbmltcG9ydCB7IFlhbWxFeGFtcGxlLCBDb25zb2xlWUFNTFNhbXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmVzb3VyY2UteWFtbC1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIFBhcnNlSnNvblRyYW5zbGF0ZVBpcGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VZYW1sU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcmVzb3VyY2U6IEt1YmVybmV0ZXNSZXNvdXJjZTtcblxuICBASW5wdXQoKVxuICBzY2hlbWE6IE9wZW5BUElWM1NjaGVtYU9iamVjdDtcblxuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICB0cnlZYW1sID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KClcbiAgc2NoZW1hRW5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBleGFtcGxlRW5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBleHRyYUV4YW1wbGVzOiBZYW1sRXhhbXBsZVtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGSU5JVElPTlNfUFJFRklYID0gJyMvZGVmaW5pdGlvbnMvJztcblxuICBjdXJyZW50U2NoZW1hOiBPcGVuQVBJVjNTY2hlbWFPYmplY3Q7XG4gIHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0IH07XG4gIHBhdGg6IHN0cmluZ1tdID0gW107XG4gIHJlc291cmNlS2luZDogc3RyaW5nO1xuICBleGFtcGxlczogWWFtbEV4YW1wbGVbXSA9IFtdO1xuICBoYXNTY2hlbWEgPSBmYWxzZTtcbiAgaGFzRXhhbXBsZXMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjaGVtYVNlcnZpY2U6IEt1YmVybmV0ZXNTY2hlbWFTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLmxvYWRFeGFtcGxlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnNjaGVtYSB8fCBjaGFuZ2VzLnJlc291cmNlKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHRoaXMubG9hZEV4YW1wbGVzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMuY3VycmVudFNjaGVtYSA9IHRoaXMuc2NoZW1hO1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdGhpcy5zY2hlbWEucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIHRoaXMucGF0aCA9IFtdO1xuICAgICAgdGhpcy5oYXNTY2hlbWEgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhc1NjaGVtYSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc291cmNlKSB7XG4gICAgICB0aGlzLnJlc291cmNlS2luZCA9IHRoaXMucmVzb3VyY2Uua2luZCB8fCAnUmVzb3VyY2UnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEV4YW1wbGVzKCkge1xuICAgIGlmICghdGhpcy5yZXNvdXJjZSkge1xuICAgICAgdGhpcy5leGFtcGxlcyA9IFtdO1xuICAgICAgdGhpcy5oYXNFeGFtcGxlcyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VLZXkgPSBgJHt0aGlzLnJlc291cmNlLmFwaVZlcnNpb259LiR7dGhpcy5yZXNvdXJjZS5raW5kfWA7XG4gICAgY29uc3QgYnVpbHRJbkV4YW1wbGVzID0gQlVJTFRfSU5fWUFNTF9FWEFNUExFU1tyZXNvdXJjZUtleV0gfHwgW107XG5cbiAgICAvLyDliqDovb0gQ29uc29sZVlBTUxTYW1wbGUgQ1JEIOS4reeahOekuuS+i1xuICAgIHRoaXMubG9hZENvbnNvbGVZQU1MU2FtcGxlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBjcmRFeGFtcGxlcyA9PiB7XG4gICAgICAgIHRoaXMuZXhhbXBsZXMgPSBbXG4gICAgICAgICAgLi4uYnVpbHRJbkV4YW1wbGVzLFxuICAgICAgICAgIC4uLih0aGlzLmV4dHJhRXhhbXBsZXMgfHwgW10pLFxuICAgICAgICAgIC4uLmNyZEV4YW1wbGVzLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmhhc0V4YW1wbGVzID0gdGhpcy5leGFtcGxlcy5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAvLyDlpoLmnpzliqDovb0gQ1JEIOekuuS+i+Wksei0pe+8jOWPquS9v+eUqOWGhee9ruekuuS+i1xuICAgICAgICB0aGlzLmV4YW1wbGVzID0gYnVpbHRJbkV4YW1wbGVzO1xuICAgICAgICB0aGlzLmhhc0V4YW1wbGVzID0gdGhpcy5leGFtcGxlcy5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb25zb2xlWUFNTFNhbXBsZXMoKTogT2JzZXJ2YWJsZTxZYW1sRXhhbXBsZVtdPiB7XG4gICAgaWYgKCF0aGlzLnJlc291cmNlKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIC8vIOaehOW7uuafpeivoiBDb25zb2xlWUFNTFNhbXBsZSDnmoQgQVBJIOi3r+W+hFxuICAgIGNvbnN0IGFwaVBhdGggPSAnL2FwaXMvY29uc29sZS5hbGF1ZGEuaW8vdjEvY29uc29sZXlhbWxzYW1wbGVzJztcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgaXRlbXM6IENvbnNvbGVZQU1MU2FtcGxlW10gfT4oYXBpUGF0aCkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5pdGVtc1xuICAgICAgICAgIC5maWx0ZXIoc2FtcGxlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNhbXBsZS5zcGVjLnRhcmdldFJlc291cmNlO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGFyZ2V0LmFwaVZlcnNpb24gPT09IHRoaXMucmVzb3VyY2UuYXBpVmVyc2lvbiAmJlxuICAgICAgICAgICAgICB0YXJnZXQua2luZCA9PT0gdGhpcy5yZXNvdXJjZS5raW5kXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcChzYW1wbGUgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBzYW1wbGUuc3BlYy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzYW1wbGUuc3BlYy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHlhbWw6IHNhbXBsZS5zcGVjLnlhbWwsXG4gICAgICAgICAgICBzbmlwcGV0OiBzYW1wbGUuc3BlYy5zbmlwcGV0LFxuICAgICAgICAgIH0pKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLFxuICAgICk7XG4gIH1cblxuICBkcmlsbERvd25Ub1Byb3BlcnR5KG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jdXJyZW50U2NoZW1hLnByb3BlcnRpZXM/LltuYW1lXTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIGxldCB0YXJnZXRTY2hlbWE6IE9wZW5BUElWM1NjaGVtYU9iamVjdCB8IG51bGwgPSBudWxsO1xuICAgICAgLy8g5aSE55CGICRyZWYg5byV55SoXG4gICAgICBpZiAoKHByb3BlcnR5IGFzIGFueSkuJHJlZikge1xuICAgICAgICBjb25zdCByZWYgPSAocHJvcGVydHkgYXMgYW55KS4kcmVmIGFzIHN0cmluZztcblxuICAgICAgICBpZiAocmVmLnN0YXJ0c1dpdGgodGhpcy5ERUZJTklUSU9OU19QUkVGSVgpKSB7XG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5hbWUgPSByZWYucmVwbGFjZSh0aGlzLkRFRklOSVRJT05TX1BSRUZJWCwgJycpO1xuICAgICAgICAgIC8vIOS7juaguSBzY2hlbWEg55qEIGRlZmluaXRpb25zIOS4reiOt+WPluWumuS5iVxuICAgICAgICAgIGNvbnN0IHJvb3REZWZpbml0aW9ucyA9IHRoaXMuc2NoZW1hU2VydmljZS5kZWZpbml0aW9ucztcbiAgICAgICAgICB0YXJnZXRTY2hlbWEgPSByb290RGVmaW5pdGlvbnM/LltkZWZpbml0aW9uTmFtZV0gfHwgbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8g5aSE55CG5pmu6YCa55qE5bWM5aWX5bGe5oCnXG4gICAgICBlbHNlIGlmIChwcm9wZXJ0eS5wcm9wZXJ0aWVzIHx8IHByb3BlcnR5Lml0ZW1zPy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRhcmdldFNjaGVtYSA9IHByb3BlcnR5Lml0ZW1zPy5wcm9wZXJ0aWVzID8gcHJvcGVydHkuaXRlbXMgOiBwcm9wZXJ0eTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldFNjaGVtYSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWEgPSB0YXJnZXRTY2hlbWE7XG4gICAgICAgIHRoaXMucGF0aC5wdXNoKG5hbWUpO1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB0YXJnZXRTY2hlbWEucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvUGF0aChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFyZ2V0UGF0aCA9IHRoaXMucGF0aC5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgIHRoaXMucGF0aCA9IFsuLi50YXJnZXRQYXRoXTtcblxuICAgIGxldCBjdXJyZW50T2JqID0gdGhpcy5zY2hlbWE7XG4gICAgZm9yIChjb25zdCBwYXRoU2VnbWVudCBvZiB0YXJnZXRQYXRoKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGN1cnJlbnRPYmoucHJvcGVydGllcz8uW3BhdGhTZWdtZW50XTtcbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAvLyDlpITnkIYgJHJlZiDlvJXnlKhcbiAgICAgICAgaWYgKChwcm9wZXJ0eSBhcyBhbnkpLiRyZWYpIHtcbiAgICAgICAgICBjb25zdCByZWYgPSAocHJvcGVydHkgYXMgYW55KS4kcmVmIGFzIHN0cmluZztcbiAgICAgICAgICBpZiAocmVmLnN0YXJ0c1dpdGgodGhpcy5ERUZJTklUSU9OU19QUkVGSVgpKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uTmFtZSA9IHJlZi5yZXBsYWNlKHRoaXMuREVGSU5JVElPTlNfUFJFRklYLCAnJyk7XG4gICAgICAgICAgICBjb25zdCByb290RGVmaW5pdGlvbnMgPSAodGhpcy5zY2hlbWEgYXMgYW55KT8uZGVmaW5pdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gcm9vdERlZmluaXRpb25zPy5bZGVmaW5pdGlvbk5hbWVdO1xuICAgICAgICAgICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgICAgICAgY3VycmVudE9iaiA9IGRlZmluaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWkhOeQhuaZrumAmueahOW1jOWll+WxnuaAp1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50T2JqID0gcHJvcGVydHkuaXRlbXM/LnByb3BlcnRpZXMgPyBwcm9wZXJ0eS5pdGVtcyA6IHByb3BlcnR5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50U2NoZW1hID0gY3VycmVudE9iajtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBjdXJyZW50T2JqLnByb3BlcnRpZXMgfHwge307XG4gIH1cblxuICBoYXNOZXN0ZWRQcm9wZXJ0aWVzKHByb3BlcnR5OiBPcGVuQVBJVjNTY2hlbWFPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHByb3BlcnR5LnByb3BlcnRpZXMgJiZcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcGVydHkucHJvcGVydGllcykubGVuZ3RoID4gMCkgfHxcbiAgICAgIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknICYmXG4gICAgICAgIHByb3BlcnR5Lml0ZW1zICYmXG4gICAgICAgIHR5cGVvZiBwcm9wZXJ0eS5pdGVtcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgKHByb3BlcnR5Lml0ZW1zIGFzIE9wZW5BUElWM1NjaGVtYU9iamVjdCkucHJvcGVydGllcyAmJlxuICAgICAgICBPYmplY3Qua2V5cygocHJvcGVydHkuaXRlbXMgYXMgT3BlbkFQSVYzU2NoZW1hT2JqZWN0KS5wcm9wZXJ0aWVzIHx8IHt9KVxuICAgICAgICAgIC5sZW5ndGggPiAwKVxuICAgICk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVR5cGUocHJvcGVydHk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCk6IHN0cmluZyB7XG4gICAgaWYgKHByb3BlcnR5LnR5cGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnR5LnR5cGUpKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eS50eXBlLmpvaW4oJyB8ICcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BlcnR5LnR5cGU7XG4gICAgfVxuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cblxuICBpc1JlcXVpcmVkKHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNjaGVtYT8ucmVxdWlyZWQ/LmluY2x1ZGVzKHByb3BlcnR5TmFtZSkgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5bGe5oCn5piv5ZCm5pyJICRyZWYg5byV55So5oiW5bWM5aWX5bGe5oCnXG4gICAqL1xuICBoYXNWaWV3YWJsZUNvbnRlbnQocHJvcGVydHk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAvLyDmnIkgcHJvcGVydGllcyDnmoTlr7nosaFcbiAgICAgIChwcm9wZXJ0eS50eXBlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBwcm9wZXJ0eS5wcm9wZXJ0aWVzICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BlcnR5LnByb3BlcnRpZXMpLmxlbmd0aCA+IDApIHx8XG4gICAgICAvLyDmnIkgcHJvcGVydGllcyDnmoTmlbDnu4TpoblcbiAgICAgIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknICYmXG4gICAgICAgIHByb3BlcnR5Lml0ZW1zICYmXG4gICAgICAgIHR5cGVvZiBwcm9wZXJ0eS5pdGVtcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgKHByb3BlcnR5Lml0ZW1zIGFzIE9wZW5BUElWM1NjaGVtYU9iamVjdCkucHJvcGVydGllcyAmJlxuICAgICAgICBPYmplY3Qua2V5cygocHJvcGVydHkuaXRlbXMgYXMgT3BlbkFQSVYzU2NoZW1hT2JqZWN0KS5wcm9wZXJ0aWVzIHx8IHt9KVxuICAgICAgICAgIC5sZW5ndGggPiAwKSB8fFxuICAgICAgLy8g5pyJICRyZWYg5byV55SoXG4gICAgICAhIShwcm9wZXJ0eSBhcyBhbnkpLiRyZWZcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOafpeWxnuaAp+aYr+WQpuaciSAkcmVmIOW8leeUqFxuICAgKi9cbiAgaGFzUmVmUHJvcGVydHkocHJvcGVydHk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShwcm9wZXJ0eSBhcyBhbnkpLiRyZWY7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+WICRyZWYg5byV55So55qE5a6a5LmJ5ZCN56ewXG4gICAqL1xuICBnZXRSZWZEZWZpbml0aW9uTmFtZShwcm9wZXJ0eTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCByZWYgPSAocHJvcGVydHkgYXMgYW55KS4kcmVmO1xuICAgIGlmIChyZWYgJiYgdHlwZW9mIHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIOS7jiBcIiMvZGVmaW5pdGlvbnMvaW8uazhzLmFwaS5hcHBzLnYxLkRlcGxveW1lbnRTcGVjXCIg5Lit5o+Q5Y+W5a6a5LmJ5ZCN56ewXG4gICAgICBpZiAocmVmLnN0YXJ0c1dpdGgodGhpcy5ERUZJTklUSU9OU19QUkVGSVgpKSB7XG4gICAgICAgIHJldHVybiByZWYucmVwbGFjZSh0aGlzLkRFRklOSVRJT05TX1BSRUZJWCwgJycpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFydHMgPSByZWYuc3BsaXQoJy8nKTtcbiAgICAgIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSB8fCByZWY7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIEV4YW1wbGVzIOebuOWFs+aWueazlVxuICB0cnlFeGFtcGxlKGV4YW1wbGU6IFlhbWxFeGFtcGxlKSB7XG4gICAgLy8g6Kem5Y+R5LqL5Lu277yM6K6p54i257uE5Lu25aSE55CGIHRyeSBpdCDlip/og73vvIzlsIYgWUFNTCDlhoXlrrnlj5HpgIHnu5nniLbnu4Tku7ZcbiAgICB0aGlzLnRyeVlhbWwuZW1pdChleGFtcGxlLnlhbWwpO1xuICB9XG5cbiAgZG93bmxvYWRZYW1sKGV4YW1wbGU6IFlhbWxFeGFtcGxlKSB7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtleGFtcGxlLnlhbWxdLCB7IHR5cGU6ICd0ZXh0L3lhbWwnIH0pO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtleGFtcGxlLnRpdGxlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnLScpfS55YW1sYDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH1cblxuICAvLyDlpITnkIbmj4/ov7DkuK3nmoTpk77mjqVcbiAgcHJvY2Vzc0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGVzY3JpcHRpb24pIHJldHVybiAnJztcblxuICAgIC8vIOWwhiBVUkwg6L2s5o2i5Li65Y+v54K55Ye755qE6ZO+5o6lXG4gICAgY29uc3QgdXJsUmVnZXggPSAvKGh0dHBzPzpcXC9cXC9bXlxcc10rKS9nO1xuICAgIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKFxuICAgICAgdXJsUmVnZXgsXG4gICAgICAnPGEgaHJlZj1cIiQxXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPiQxPC9hPicsXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNjaGVtYS1oZWFkZXJcIj5cbiAgPHNwYW4+e3sgcmVzb3VyY2VLaW5kIH19PC9zcGFuPlxuICA8YXVpLWljb25cbiAgICBpY29uPVwieG1hcmtcIlxuICAgIChjbGljayk9XCJjbG9zZS5uZXh0KClcIlxuICA+PC9hdWktaWNvbj5cbjwvZGl2PlxuPGF1aS10YWItZ3JvdXAgdHlwZT1cImNhcmRcIj5cbiAgPGF1aS10YWIgKm5nSWY9XCJzY2hlbWFFbmFibGUgJiYgaGFzU2NoZW1hXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYXVpVGFiTGFiZWw+IFNjaGVtYSA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICphdWlUYWJDb250ZW50PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNjaGVtYVwiXG4gICAgICAgIGNsYXNzPVwic2NoZW1hLWNvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzY2hlbWEuZGVzY3JpcHRpb25cIlxuICAgICAgICAgIGNsYXNzPVwic2NoZW1hLWRlc2NcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICBwcm9jZXNzRGVzY3JpcHRpb24oc2NoZW1hLmRlc2NyaXB0aW9uIHwgYWNsUGFyc2VKc29uVHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtYS1wYXRoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhdGgubGVuZ3RoXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDpcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPnt7IHJlc291cmNlS2luZCB9fTwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcCBvZiBwYXRoOyBpbmRleCBhcyBpOyBsYXN0IGFzIGlzTGFzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xhc3RcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXRoLW1hcmtcIj4+PC9zcGFuPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9QYXRoKGkpXCJcbiAgICAgICAgICAgICAgICA+e3sgcCB9fTwvYVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3RcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXRoLW1hcmtcIj4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1hLWxpc3RcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wZXJ0aWVzIHwga2V5dmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJzY2hlbWEtaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGgzPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmotdHlwZVwiPnt7IGl0ZW0udmFsdWUudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInByb2Nlc3NEZXNjcmlwdGlvbihpdGVtLnZhbHVlLmRlc2NyaXB0aW9uKVwiPjwvcD5cbiAgICAgICAgICAgIDxwICpuZ0lmPVwiaGFzVmlld2FibGVDb250ZW50KGl0ZW0udmFsdWUpXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHJpbGxEb3duVG9Qcm9wZXJ0eShpdGVtLmtleSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ3ZpZXdfZGV0YWlsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXVpLXRhYj5cbiAgPGF1aS10YWIgKm5nSWY9XCJleGFtcGxlRW5hYmxlICYmIGhhc0V4YW1wbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYXVpVGFiTGFiZWw+IEV4YW1wbGVzIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmF1aVRhYkNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZXhhbXBsZSBvZiBleGFtcGxlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWl0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAge3sgaSArIDEgfX0uIDxzcGFuPnt7IGV4YW1wbGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInByb2Nlc3NEZXNjcmlwdGlvbihleGFtcGxlLmRlc2NyaXB0aW9uKVwiPjwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cInR3LWZsZXggdHctanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDpcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidHJ5RXhhbXBsZShleGFtcGxlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICAgIGljb249XCJhcnJvd190dXJuX3VwXCJcbiAgICAgICAgICAgICAgICBzaXplPVwiMTRcIlxuICAgICAgICAgICAgICAgIG1hcmdpbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPlRyeSBpdDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFlhbWwoZXhhbXBsZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCIxNFwiXG4gICAgICAgICAgICAgICAgbWFyZ2luPVwicmlnaHRcIlxuICAgICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+RG93bmxvYWQgWUFNTDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXVpLXRhYj5cbjwvYXVpLXRhYi1ncm91cD5cbiJdfQ==
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvZGUveWFtbC1zaWRlYmFyL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3lhbWwtc2lkZWJhci90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBSUwsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBS3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0lDZnRELDZCQUEyQjtJQUFDLHdCQUFPOzs7OztJQU83Qiw2QkFBa0M7SUFDaEMsNkJBR0c7SUFERCw0TkFBUyxnQkFBUyxLQUFDO0lBQ2xCLFlBQWtCO0lBQUEsaUJBQ3BCOzs7O0lBREUsZUFBa0I7SUFBbEIseUNBQWtCOzs7O0lBS3JCLDZCQUE4QjtJQUM1Qixn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Q0wsQ0FBQzs2RkEzUFUsNEJBQTRCO29FQUE1Qiw0QkFBNEI7WUM3Q3ZDLEFBREYsOEJBQTJCLFdBQ25CO1lBQUEsWUFBa0I7WUFBQSxpQkFBTztZQUMvQixtQ0FHQztZQURDLDJHQUFTLGdCQUFZLElBQUM7WUFFMUIsQUFERyxpQkFBVyxFQUNSO1lBQ04sd0NBQTJCO1lBa0V6QixBQWpFQSxxRkFBMkMsd0VBaUVHO1lBd0NoRCxpQkFBZ0I7O1lBaEhSLGVBQWtCO1lBQWxCLHNDQUFrQjtZQU9kLGVBQStCO1lBQS9CLHdEQUErQjtZQWlFL0IsY0FBa0M7WUFBbEMsMkRBQWtDOzRCRHRDMUMsSUFBSTtZQUNKLE9BQU87WUFDUCxZQUFZLG9CQUVaLHNCQUFzQjtZQUN0QixVQUFVLG9CQUNWLFVBQVUsdUZBQ1YsWUFBWTtZQUNaLFFBQVE7O2lGQUdDLDRCQUE0QjtjQWxCeEMsU0FBUzsyQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO29CQUNQLElBQUk7b0JBQ0osT0FBTztvQkFDUCxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsc0JBQXNCO29CQUN0QixVQUFVO29CQUNWLFVBQVU7b0JBQ1YsWUFBWTtvQkFDWixRQUFRO2lCQUNUOzBJQUlELFFBQVE7a0JBRFAsS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSzs7SUFJTiw0REFBNEQ7SUFDNUQsS0FBSztrQkFGSixNQUFNO1lBS1AsT0FBTztrQkFETixNQUFNO1lBSVAsWUFBWTtrQkFEWCxLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLO1lBSU4sYUFBYTtrQkFEWixLQUFLOztrRkFwQkssNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWNvbk1vZHVsZSwgVGFic01vZHVsZSwgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0Zvck9mLCBLZXlWYWx1ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUHVyZVBpcGUsIFBhcnNlSnNvblRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9jb3JlL3BpcGVzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgS3ViZXJuZXRlc1NjaGVtYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2t1YmVybmV0ZXMtc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUUkFOU0xBVEVfTU9EVUxFIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgQlVJTFRfSU5fWUFNTF9FWEFNUExFUyB9IGZyb20gJy4uL3lhbWwtZXhhbXBsZXMnO1xuXG5pbXBvcnQgeyBZYW1sRXhhbXBsZSwgQ29uc29sZVlBTUxTYW1wbGUgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXJlc291cmNlLXlhbWwtc2lkZWJhcicsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBLZXlWYWx1ZVBpcGUsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgICBQYXJzZUpzb25UcmFuc2xhdGVQaXBlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgUHVyZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlWWFtbFNpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHJlc291cmNlOiBLdWJlcm5ldGVzUmVzb3VyY2U7XG5cbiAgQElucHV0KClcbiAgc2NoZW1hOiBPcGVuQVBJVjNTY2hlbWFPYmplY3Q7XG5cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgdHJ5WWFtbCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpXG4gIHNjaGVtYUVuYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZXhhbXBsZUVuYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZXh0cmFFeGFtcGxlczogWWFtbEV4YW1wbGVbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRklOSVRJT05TX1BSRUZJWCA9ICcjL2RlZmluaXRpb25zLyc7XG5cbiAgY3VycmVudFNjaGVtYTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0O1xuICBjdXJyZW50U2NoZW1hRGVzY3JpcHRpb246IHN0cmluZztcbiAgcHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBPcGVuQVBJVjNTY2hlbWFPYmplY3QgfTtcbiAgcGF0aDogc3RyaW5nW10gPSBbXTtcbiAgcmVzb3VyY2VLaW5kOiBzdHJpbmc7XG4gIGV4YW1wbGVzOiBZYW1sRXhhbXBsZVtdID0gW107XG4gIGhhc1NjaGVtYSA9IGZhbHNlO1xuICBoYXNFeGFtcGxlcyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2NoZW1hU2VydmljZTogS3ViZXJuZXRlc1NjaGVtYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgdGhpcy5sb2FkRXhhbXBsZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5zY2hlbWEgfHwgY2hhbmdlcy5yZXNvdXJjZSkge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICB0aGlzLmxvYWRFeGFtcGxlcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuc2NoZW1hKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTY2hlbWEgPSB0aGlzLnNjaGVtYTtcbiAgICAgIHRoaXMuY3VycmVudFNjaGVtYURlc2NyaXB0aW9uID0gdGhpcy5zY2hlbWEuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLnByb3BlcnRpZXMgPSB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgdGhpcy5wYXRoID0gW107XG4gICAgICB0aGlzLmhhc1NjaGVtYSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzU2NoZW1hID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb3VyY2UpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VLaW5kID0gdGhpcy5yZXNvdXJjZS5raW5kIHx8ICdSZXNvdXJjZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRXhhbXBsZXMoKSB7XG4gICAgaWYgKCF0aGlzLnJlc291cmNlKSB7XG4gICAgICB0aGlzLmV4YW1wbGVzID0gW107XG4gICAgICB0aGlzLmhhc0V4YW1wbGVzID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZUtleSA9IGAke3RoaXMucmVzb3VyY2UuYXBpVmVyc2lvbn0uJHt0aGlzLnJlc291cmNlLmtpbmR9YDtcbiAgICBjb25zdCBidWlsdEluRXhhbXBsZXMgPSBCVUlMVF9JTl9ZQU1MX0VYQU1QTEVTW3Jlc291cmNlS2V5XSB8fCBbXTtcblxuICAgIC8vIOWKoOi9vSBDb25zb2xlWUFNTFNhbXBsZSBDUkQg5Lit55qE56S65L6LXG4gICAgdGhpcy5sb2FkQ29uc29sZVlBTUxTYW1wbGVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGNyZEV4YW1wbGVzID0+IHtcbiAgICAgICAgdGhpcy5leGFtcGxlcyA9IFtcbiAgICAgICAgICAuLi5idWlsdEluRXhhbXBsZXMsXG4gICAgICAgICAgLi4uKHRoaXMuZXh0cmFFeGFtcGxlcyB8fCBbXSksXG4gICAgICAgICAgLi4uY3JkRXhhbXBsZXMsXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaGFzRXhhbXBsZXMgPSB0aGlzLmV4YW1wbGVzLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIC8vIOWmguaenOWKoOi9vSBDUkQg56S65L6L5aSx6LSl77yM5Y+q5L2/55So5YaF572u56S65L6LXG4gICAgICAgIHRoaXMuZXhhbXBsZXMgPSBidWlsdEluRXhhbXBsZXM7XG4gICAgICAgIHRoaXMuaGFzRXhhbXBsZXMgPSB0aGlzLmV4YW1wbGVzLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvbnNvbGVZQU1MU2FtcGxlcygpOiBPYnNlcnZhYmxlPFlhbWxFeGFtcGxlW10+IHtcbiAgICBpZiAoIXRoaXMucmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgLy8g5p6E5bu65p+l6K+iIENvbnNvbGVZQU1MU2FtcGxlIOeahCBBUEkg6Lev5b6EXG4gICAgY29uc3QgYXBpUGF0aCA9XG4gICAgICAne3tBUElfR0FURVdBWX19L2t1YmVybmV0ZXMvYnVzaW5lc3MtMS9hcGlzL2NvbnNvbGUuYWxhdWRhLmlvL3YxL2NvbnNvbGV5YW1sc2FtcGxlcyc7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDx7IGl0ZW1zOiBDb25zb2xlWUFNTFNhbXBsZVtdIH0+KGFwaVBhdGgpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuaXRlbXNcbiAgICAgICAgICAuZmlsdGVyKHNhbXBsZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzYW1wbGUuc3BlYy50YXJnZXRSZXNvdXJjZTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHRhcmdldC5hcGlWZXJzaW9uID09PSB0aGlzLnJlc291cmNlLmFwaVZlcnNpb24gJiZcbiAgICAgICAgICAgICAgdGFyZ2V0LmtpbmQgPT09IHRoaXMucmVzb3VyY2Uua2luZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoc2FtcGxlID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogc2FtcGxlLnNwZWMudGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2FtcGxlLnNwZWMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB5YW1sOiBzYW1wbGUuc3BlYy55YW1sLFxuICAgICAgICAgICAgc25pcHBldDogc2FtcGxlLnNwZWMuc25pcHBldCxcbiAgICAgICAgICB9KSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSxcbiAgICApO1xuICB9XG5cbiAgZHJpbGxEb3duVG9Qcm9wZXJ0eShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY3VycmVudFNjaGVtYS5wcm9wZXJ0aWVzPy5bbmFtZV07XG4gICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTY2hlbWFEZXNjcmlwdGlvbiA9IHByb3BlcnR5LmRlc2NyaXB0aW9uO1xuICAgICAgbGV0IHRhcmdldFNjaGVtYTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0IHwgbnVsbCA9IG51bGw7XG4gICAgICAvLyDlpITnkIYgJHJlZiDlvJXnlKhcbiAgICAgIGlmIChwcm9wZXJ0eS4kcmVmIHx8IHByb3BlcnR5Lml0ZW1zPy4kcmVmKSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IHByb3BlcnR5LiRyZWYgfHwgcHJvcGVydHkuaXRlbXM/LiRyZWY7XG5cbiAgICAgICAgaWYgKHJlZi5zdGFydHNXaXRoKHRoaXMuREVGSU5JVElPTlNfUFJFRklYKSkge1xuICAgICAgICAgIGNvbnN0IGRlZmluaXRpb25OYW1lID0gcmVmLnJlcGxhY2UodGhpcy5ERUZJTklUSU9OU19QUkVGSVgsICcnKTtcbiAgICAgICAgICAvLyDku47moLkgc2NoZW1hIOeahCBkZWZpbml0aW9ucyDkuK3ojrflj5blrprkuYlcbiAgICAgICAgICBjb25zdCByb290RGVmaW5pdGlvbnMgPSB0aGlzLnNjaGVtYVNlcnZpY2UuZGVmaW5pdGlvbnM7XG4gICAgICAgICAgdGFyZ2V0U2NoZW1hID0gcm9vdERlZmluaXRpb25zPy5bZGVmaW5pdGlvbk5hbWVdIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIOWkhOeQhuaZrumAmueahOW1jOWll+WxnuaAp1xuICAgICAgZWxzZSBpZiAocHJvcGVydHkucHJvcGVydGllcyB8fCBwcm9wZXJ0eS5pdGVtcz8ucHJvcGVydGllcykge1xuICAgICAgICB0YXJnZXRTY2hlbWEgPSBwcm9wZXJ0eS5pdGVtcz8ucHJvcGVydGllcyA/IHByb3BlcnR5Lml0ZW1zIDogcHJvcGVydHk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXRTY2hlbWEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1hID0gdGFyZ2V0U2NoZW1hO1xuICAgICAgICB0aGlzLnBhdGgucHVzaChuYW1lKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdGFyZ2V0U2NoZW1hLnByb3BlcnRpZXMgfHwge307XG5cbiAgICAgICAgdGhpcy5zY3JvbGxUb3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvUGF0aChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFyZ2V0UGF0aCA9IHRoaXMucGF0aC5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgIHRoaXMucGF0aCA9IFsuLi50YXJnZXRQYXRoXTtcblxuICAgIGxldCBjdXJyZW50T2JqID0gdGhpcy5zY2hlbWE7XG4gICAgZm9yIChjb25zdCBwYXRoU2VnbWVudCBvZiB0YXJnZXRQYXRoKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGN1cnJlbnRPYmoucHJvcGVydGllcz8uW3BhdGhTZWdtZW50XTtcbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWFEZXNjcmlwdGlvbiA9IHByb3BlcnR5LmRlc2NyaXB0aW9uO1xuICAgICAgICAvLyDlpITnkIYgJHJlZiDlvJXnlKhcbiAgICAgICAgaWYgKHByb3BlcnR5LiRyZWYgfHwgcHJvcGVydHkuaXRlbXM/LiRyZWYpIHtcbiAgICAgICAgICBjb25zdCByZWYgPSBwcm9wZXJ0eS4kcmVmIHx8IHByb3BlcnR5Lml0ZW1zPy4kcmVmO1xuICAgICAgICAgIGlmIChyZWYuc3RhcnRzV2l0aCh0aGlzLkRFRklOSVRJT05TX1BSRUZJWCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmluaXRpb25OYW1lID0gcmVmLnJlcGxhY2UodGhpcy5ERUZJTklUSU9OU19QUkVGSVgsICcnKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3REZWZpbml0aW9ucyA9IHRoaXMuc2NoZW1hU2VydmljZS5kZWZpbml0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSByb290RGVmaW5pdGlvbnM/LltkZWZpbml0aW9uTmFtZV07XG4gICAgICAgICAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICAgICAgICBjdXJyZW50T2JqID0gZGVmaW5pdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aSE55CG5pmu6YCa55qE5bWM5aWX5bGe5oCnXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRPYmogPSBwcm9wZXJ0eS5pdGVtcz8ucHJvcGVydGllcyA/IHByb3BlcnR5Lml0ZW1zIDogcHJvcGVydHk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTY2hlbWEgPSBjdXJyZW50T2JqO1xuICAgIHRoaXMucHJvcGVydGllcyA9IGN1cnJlbnRPYmoucHJvcGVydGllcyB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4Dmn6XlsZ7mgKfmmK/lkKbmnIkgJHJlZiDlvJXnlKjmiJbltYzlpZflsZ7mgKdcbiAgICovXG4gIGhhc1ZpZXdhYmxlQ29udGVudChwcm9wZXJ0eTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIOaciSBwcm9wZXJ0aWVzIOeahOWvueixoVxuICAgICAgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHByb3BlcnR5LnByb3BlcnRpZXMgJiZcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcGVydHkucHJvcGVydGllcykubGVuZ3RoID4gMCkgfHxcbiAgICAgIC8vIOaciSBwcm9wZXJ0aWVzIOeahOaVsOe7hOmhuVxuICAgICAgKHByb3BlcnR5LnR5cGUgPT09ICdhcnJheScgJiZcbiAgICAgICAgcHJvcGVydHkuaXRlbXMgJiZcbiAgICAgICAgdHlwZW9mIHByb3BlcnR5Lml0ZW1zID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAocHJvcGVydHkuaXRlbXMgYXMgT3BlbkFQSVYzU2NoZW1hT2JqZWN0KS5wcm9wZXJ0aWVzICYmXG4gICAgICAgIE9iamVjdC5rZXlzKChwcm9wZXJ0eS5pdGVtcyBhcyBPcGVuQVBJVjNTY2hlbWFPYmplY3QpLnByb3BlcnRpZXMgfHwge30pXG4gICAgICAgICAgLmxlbmd0aCA+IDApIHx8XG4gICAgICAvLyDmnIkgJHJlZiDlvJXnlKhcbiAgICAgICEhcHJvcGVydHkuJHJlZiB8fFxuICAgICAgISFwcm9wZXJ0eT8uaXRlbXM/LiRyZWZcbiAgICApO1xuICB9XG5cbiAgLy8gRXhhbXBsZXMg55u45YWz5pa55rOVXG4gIHRyeUV4YW1wbGUoZXhhbXBsZTogWWFtbEV4YW1wbGUpIHtcbiAgICAvLyDop6blj5Hkuovku7bvvIzorqnniLbnu4Tku7blpITnkIYgdHJ5IGl0IOWKn+iDve+8jOWwhiBZQU1MIOWGheWuueWPkemAgee7meeItue7hOS7tlxuICAgIHRoaXMudHJ5WWFtbC5lbWl0KGV4YW1wbGUueWFtbCk7XG4gIH1cblxuICBkb3dubG9hZFlhbWwoZXhhbXBsZTogWWFtbEV4YW1wbGUpIHtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2V4YW1wbGUueWFtbF0sIHsgdHlwZTogJ3RleHQveWFtbCcgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgbGluay5kb3dubG9hZCA9IGAke2V4YW1wbGUudGl0bGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyl9LnlhbWxgO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG4gIC8vIOWkhOeQhuaPj+i/sOS4reeahOmTvuaOpVxuICBwcm9jZXNzRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkZXNjcmlwdGlvbikgcmV0dXJuICcnO1xuXG4gICAgLy8g5bCGIFVSTCDovazmjaLkuLrlj6/ngrnlh7vnmoTpk77mjqVcbiAgICBjb25zdCB1cmxSZWdleCA9IC8oaHR0cHM/OlxcL1xcL1teXFxzXSspL2c7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgdXJsUmVnZXgsXG4gICAgICAgICc8YSBocmVmPVwiJDFcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+JDE8L2E+JyxcbiAgICAgIClcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTsgLy8g5L+d55WZ5o2i6KGM56ymXG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvcCgpIHtcbiAgICB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICB0b3A6IDAsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzY2hlbWEtaGVhZGVyXCI+XG4gIDxzcGFuPnt7IHJlc291cmNlS2luZCB9fTwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cInhtYXJrXCJcbiAgICAoY2xpY2spPVwiY2xvc2UubmV4dCgpXCJcbiAgPjwvYXVpLWljb24+XG48L2Rpdj5cbjxhdWktdGFiLWdyb3VwIHR5cGU9XCJjYXJkXCI+XG4gIDxhdWktdGFiICpuZ0lmPVwic2NoZW1hRW5hYmxlICYmIGhhc1NjaGVtYVwiPlxuICAgIDxuZy1jb250YWluZXIgKmF1aVRhYkxhYmVsPiBTY2hlbWEgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqYXVpVGFiQ29udGVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzY2hlbWFcIlxuICAgICAgICBjbGFzcz1cInNjaGVtYS1jb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtYS1wYXRoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhdGgubGVuZ3RoXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDpcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPnt7IHJlc291cmNlS2luZCB9fTwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcCBvZiBwYXRoOyBpbmRleCBhcyBpOyBsYXN0IGFzIGlzTGFzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xhc3RcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXRoLW1hcmtcIj4+PC9zcGFuPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9QYXRoKGkpXCJcbiAgICAgICAgICAgICAgICA+e3sgcCB9fTwvYVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3RcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXRoLW1hcmtcIj4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJjdXJyZW50U2NoZW1hRGVzY3JpcHRpb25cIlxuICAgICAgICAgIGNsYXNzPVwic2NoZW1hLWRlc2NcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICBjdXJyZW50U2NoZW1hRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgfCBhY2xQYXJzZUpzb25UcmFuc2xhdGVcbiAgICAgICAgICAgICAgfCBwdXJlOiBwcm9jZXNzRGVzY3JpcHRpb25cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY2hlbWEtbGlzdFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByb3BlcnRpZXMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInNjaGVtYS1pdGVtXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDM+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9iai10eXBlXCI+e3sgaXRlbS52YWx1ZS50eXBlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS52YWx1ZS5kZXNjcmlwdGlvbiB8IHB1cmU6IHByb2Nlc3NEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICA+PC9wPlxuICAgICAgICAgICAgPHAgKm5nSWY9XCJpdGVtLnZhbHVlIHwgcHVyZTogaGFzVmlld2FibGVDb250ZW50XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHJpbGxEb3duVG9Qcm9wZXJ0eShpdGVtLmtleSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ3ZpZXdfZGV0YWlsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXVpLXRhYj5cbiAgPGF1aS10YWIgKm5nSWY9XCJleGFtcGxlRW5hYmxlICYmIGhhc0V4YW1wbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYXVpVGFiTGFiZWw+IEV4YW1wbGVzIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmF1aVRhYkNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZXhhbXBsZSBvZiBleGFtcGxlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWl0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAge3sgaSArIDEgfX0uIDxzcGFuPnt7IGV4YW1wbGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cImV4YW1wbGUuZGVzY3JpcHRpb24gfCBwdXJlOiBwcm9jZXNzRGVzY3JpcHRpb25cIj48L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ0dy1mbGV4IHR3LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRyeUV4YW1wbGUoZXhhbXBsZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgICBpY29uPVwiYXJyb3dfdHVybl91cFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjE0XCJcbiAgICAgICAgICAgICAgICBtYXJnaW49XCJyaWdodFwiXG4gICAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj5UcnkgaXQ8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDpcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRZYW1sKGV4YW1wbGUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgICAgaWNvbj1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICBzaXplPVwiMTRcIlxuICAgICAgICAgICAgICAgIG1hcmdpbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPkRvd25sb2FkIFlBTUw8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2F1aS10YWI+XG48L2F1aS10YWItZ3JvdXA+XG4iXX0=