@alauda-fe/network 1.0.0 → 1.0.2

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 (62) hide show
  1. package/esm2022/index.mjs +10 -2
  2. package/esm2022/lib/components/certificate-status/component.mjs +7 -6
  3. package/esm2022/lib/components/fixed-ip/component.mjs +134 -91
  4. package/esm2022/lib/components/loadbalancer-spec-form/component.mjs +57 -57
  5. package/esm2022/lib/components/service-annotations-form/annotations.component.mjs +136 -142
  6. package/esm2022/lib/components/service-annotations-form-item/annotations.component.mjs +24 -25
  7. package/esm2022/lib/components/service-form/component.mjs +34 -33
  8. package/esm2022/lib/components/service-form/fieldset/component.mjs +92 -95
  9. package/esm2022/lib/directives/subnet-validator.directive.mjs +5 -5
  10. package/esm2022/lib/features/network-policy/components/add-peer-rule-handler/component.mjs +69 -0
  11. package/esm2022/lib/features/network-policy/components/ip-block-display/component.mjs +54 -0
  12. package/esm2022/lib/features/network-policy/components/label-selector-display/component.mjs +117 -0
  13. package/esm2022/lib/features/network-policy/components/peer-container/component.mjs +81 -0
  14. package/esm2022/lib/features/network-policy/components/pod-review/component.mjs +250 -0
  15. package/esm2022/lib/features/network-policy/components/rule-table/component.mjs +269 -0
  16. package/esm2022/lib/features/network-policy/form/network-policy/component.mjs +429 -0
  17. package/esm2022/lib/features/network-policy/form/network-policy-ip-block/component.mjs +102 -0
  18. package/esm2022/lib/features/network-policy/form/network-policy-peer/component.mjs +247 -0
  19. package/esm2022/lib/features/network-policy/form/network-policy-ports/component.mjs +161 -0
  20. package/esm2022/lib/features/network-policy/form/network-policy-remote-except-input/component.mjs +128 -0
  21. package/esm2022/lib/features/network-policy/form/network-policy-rule/component.mjs +142 -0
  22. package/esm2022/lib/services/alb-api.service.mjs +26 -6
  23. package/esm2022/lib/services/certificate-api.service.mjs +4 -4
  24. package/esm2022/lib/services/network-util.service.mjs +18 -4
  25. package/esm2022/lib/services/subnet-util.service.mjs +121 -0
  26. package/esm2022/lib/types/alb-exports.mjs +1 -1
  27. package/esm2022/lib/types/k8s-exports.mjs +2 -1
  28. package/esm2022/lib/types/metallb-exports.mjs +2 -0
  29. package/esm2022/lib/types/resource-definition.mjs +28 -2
  30. package/esm2022/lib/utils/alb-exports.mjs +1 -1
  31. package/esm2022/lib/utils/cidr-exports.mjs +3 -3
  32. package/esm2022/lib/utils/common-exports.mjs +22 -0
  33. package/esm2022/lib/utils/service-exports.mjs +1 -1
  34. package/esm2022/lib/utils/validators-exports.mjs +44 -0
  35. package/index.d.ts +9 -1
  36. package/lib/components/fixed-ip/component.d.ts +10 -3
  37. package/lib/components/service-annotations-form/annotations.component.d.ts +6 -6
  38. package/lib/components/service-annotations-form-item/annotations.component.d.ts +1 -1
  39. package/lib/components/service-form/component.d.ts +1 -1
  40. package/lib/features/network-policy/components/add-peer-rule-handler/component.d.ts +8 -0
  41. package/lib/features/network-policy/components/ip-block-display/component.d.ts +7 -0
  42. package/lib/features/network-policy/components/label-selector-display/component.d.ts +13 -0
  43. package/lib/features/network-policy/components/peer-container/component.d.ts +18 -0
  44. package/lib/features/network-policy/components/pod-review/component.d.ts +37 -0
  45. package/lib/features/network-policy/components/rule-table/component.d.ts +21 -0
  46. package/lib/features/network-policy/form/network-policy/component.d.ts +70 -0
  47. package/lib/features/network-policy/form/network-policy-ip-block/component.d.ts +23 -0
  48. package/lib/features/network-policy/form/network-policy-peer/component.d.ts +43 -0
  49. package/lib/features/network-policy/form/network-policy-ports/component.d.ts +17 -0
  50. package/lib/features/network-policy/form/network-policy-remote-except-input/component.d.ts +23 -0
  51. package/lib/features/network-policy/form/network-policy-rule/component.d.ts +28 -0
  52. package/lib/services/alb-api.service.d.ts +4 -2
  53. package/lib/services/network-util.service.d.ts +1 -0
  54. package/lib/services/subnet-util.service.d.ts +25 -0
  55. package/lib/types/alb-exports.d.ts +23 -0
  56. package/lib/types/k8s-exports.d.ts +51 -1
  57. package/lib/types/metallb-exports.d.ts +65 -0
  58. package/lib/types/resource-definition.d.ts +143 -0
  59. package/lib/utils/common-exports.d.ts +5 -0
  60. package/lib/utils/validators-exports.d.ts +16 -0
  61. package/package.json +10 -5
  62. package/styles.css +1 -0
@@ -1,5 +1,5 @@
1
1
  import { AutocompleteModule, ButtonModule, IconModule, InputModule, } from '@alauda/ui';
2
- import { ArrayFormTableComponent, ArrayFormTableHeaderDirective, ArrayFormTableRowControlDirective, ArrayFormTableRowDirective, ArrayFormTableRowErrorDirective, BaseStringMapFormComponent, ErrorsMapperModule, FALSE, HelpDocumentModule, PurePipe, TOKEN_BASE_DOMAIN, TOKEN_BASE_HREF, TRUE, TranslateModule, TranslateService, getK8sResourceAnnotationErrorMapper$, k8sResourceAnnotationKeyValidator, } from '@alauda-fe/common';
2
+ import { ArrayFormTableComponent, ArrayFormTableHeaderDirective, ArrayFormTableRowControlDirective, ArrayFormTableRowDirective, ArrayFormTableRowErrorDirective, BaseStringMapFormComponent, ERRORS_MAPPER_MODULE, FALSE, HelpDocumentModule, PurePipe, TOKEN_BASE_DOMAIN, TOKEN_BASE_HREF, TRUE, TRANSLATE_MODULE, TranslateService, getK8sResourceAnnotationErrorMapper$, k8sResourceAnnotationKeyValidator, } from '@alauda-fe/common';
3
3
  import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
4
4
  import { ChangeDetectionStrategy, Component, Inject, Injector, Input, inject, } from '@angular/core';
5
5
  import { ReactiveFormsModule } from '@angular/forms';
@@ -7,15 +7,19 @@ import { sortBy } from 'lodash-es';
7
7
  import { ClusterType } from '../../utils/cluster-exports';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/forms";
10
- import * as i2 from "@alauda-fe/common";
11
- import * as i3 from "@alauda/ui";
10
+ import * as i2 from "@alauda/ui";
11
+ import * as i3 from "@alauda-fe/common";
12
+ const _c0 = ["*"];
13
+ const _c1 = (a0, a1) => ({ config: a0, readonly: a1 });
14
+ const _c2 = (a0, a1) => ({ path: a0, rawUrl: a1, type: "page" });
15
+ const _c3 = a0 => ({ example: a0 });
12
16
  function ServiceAnnotationsFormComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
13
17
  i0.ɵɵelementContainerStart(0);
14
- i0.ɵɵelementStart(1, "th", 6);
18
+ i0.ɵɵelementStart(1, "th", 8);
15
19
  i0.ɵɵtext(2);
16
20
  i0.ɵɵpipe(3, "translate");
17
21
  i0.ɵɵelementEnd();
18
- i0.ɵɵelementStart(4, "th", 6);
22
+ i0.ɵɵelementStart(4, "th", 8);
19
23
  i0.ɵɵtext(5);
20
24
  i0.ɵɵpipe(6, "translate");
21
25
  i0.ɵɵelementEnd();
@@ -31,9 +35,9 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
31
35
  i0.ɵɵtext(1);
32
36
  i0.ɵɵelementEnd();
33
37
  } if (rf & 2) {
34
- const tip_r17 = ctx.ngIf;
35
- i0.ɵɵadvance(1);
36
- i0.ɵɵtextInterpolate1(" ", tip_r17, " ");
38
+ const tip_r4 = ctx.ngIf;
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate1(" ", tip_r4, " ");
37
41
  } }
38
42
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template(rf, ctx) { if (rf & 1) {
39
43
  i0.ɵɵelementStart(0, "aui-suggestion", 15);
@@ -42,12 +46,12 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
42
46
  i0.ɵɵpipe(3, "translate");
43
47
  i0.ɵɵelementEnd();
44
48
  } if (rf & 2) {
45
- const option_r15 = ctx.$implicit;
46
- i0.ɵɵproperty("value", option_r15.key);
47
- i0.ɵɵadvance(1);
48
- i0.ɵɵtextInterpolate1(" ", option_r15.key, " ");
49
- i0.ɵɵadvance(1);
50
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r15.tip));
49
+ const option_r5 = ctx.$implicit;
50
+ i0.ɵɵproperty("value", option_r5.key);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵtextInterpolate1(" ", option_r5.key, " ");
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r5.tip));
51
55
  } }
52
56
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
53
57
  i0.ɵɵelementContainerStart(0);
@@ -55,47 +59,46 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_contai
55
59
  i0.ɵɵpipe(2, "translate");
56
60
  i0.ɵɵelementContainerEnd();
57
61
  } if (rf & 2) {
58
- const doc_r18 = i0.ɵɵnextContext(2).ngIf;
59
- i0.ɵɵadvance(1);
60
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, doc_r18.tipPrefix), " ");
62
+ const doc_r6 = i0.ɵɵnextContext(2).ngIf;
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, doc_r6.tipPrefix), " ");
61
65
  } }
62
- const _c0 = function (a0, a1) { return { path: a0, rawUrl: a1, type: "page" }; };
63
66
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template(rf, ctx) { if (rf & 1) {
64
67
  i0.ɵɵelementStart(0, "div", 17);
65
- i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template, 3, 3, "ng-container", 8);
68
+ i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template, 3, 3, "ng-container", 10);
66
69
  i0.ɵɵelementStart(2, "a", 18);
67
70
  i0.ɵɵtext(3);
68
71
  i0.ɵɵpipe(4, "translate");
69
72
  i0.ɵɵelement(5, "aui-icon", 19);
70
73
  i0.ɵɵelementEnd()();
71
74
  } if (rf & 2) {
72
- const doc_r18 = i0.ɵɵnextContext().ngIf;
73
- i0.ɵɵadvance(1);
74
- i0.ɵɵproperty("ngIf", doc_r18.tipPrefix);
75
- i0.ɵɵadvance(1);
76
- i0.ɵɵproperty("aclDocs", i0.ɵɵpureFunction2(5, _c0, doc_r18.path, doc_r18.rawUrl));
77
- i0.ɵɵadvance(1);
78
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 3, doc_r18.tip), " ");
75
+ const doc_r6 = i0.ɵɵnextContext().ngIf;
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵproperty("ngIf", doc_r6.tipPrefix);
78
+ i0.ɵɵadvance();
79
+ i0.ɵɵproperty("aclDocs", i0.ɵɵpureFunction2(5, _c2, doc_r6.path, doc_r6.rawUrl));
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 3, doc_r6.tip), " ");
79
82
  } }
80
83
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
81
84
  i0.ɵɵelementContainerStart(0);
82
- i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template, 6, 8, "div", 5);
85
+ i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template, 6, 8, "div", 7);
83
86
  i0.ɵɵpipe(2, "pure");
84
87
  i0.ɵɵelementContainerEnd();
85
88
  } if (rf & 2) {
86
- const doc_r18 = ctx.ngIf;
87
- const ctx_r11 = i0.ɵɵnextContext(3);
88
- i0.ɵɵadvance(1);
89
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(2, 1, ctx_r11.baseHref, ctx_r11.showDocLink, doc_r18.product));
89
+ const doc_r6 = ctx.ngIf;
90
+ const ctx_r1 = i0.ɵɵnextContext(3);
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(2, 1, ctx_r1.baseHref, ctx_r1.showDocLink, doc_r6.product));
90
93
  } }
91
94
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_div_2_Template(rf, ctx) { if (rf & 1) {
92
95
  i0.ɵɵelementStart(0, "div", 16);
93
96
  i0.ɵɵtext(1);
94
97
  i0.ɵɵelementEnd();
95
98
  } if (rf & 2) {
96
- const tip_r25 = ctx.ngIf;
97
- i0.ɵɵadvance(1);
98
- i0.ɵɵtextInterpolate1(" ", tip_r25, " ");
99
+ const tip_r7 = ctx.ngIf;
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵtextInterpolate1(" ", tip_r7, " ");
99
102
  } }
100
103
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template(rf, ctx) { if (rf & 1) {
101
104
  i0.ɵɵelementStart(0, "aui-suggestion", 15);
@@ -104,12 +107,12 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
104
107
  i0.ɵɵpipe(3, "translate");
105
108
  i0.ɵɵelementEnd();
106
109
  } if (rf & 2) {
107
- const option_r23 = ctx.$implicit;
108
- i0.ɵɵproperty("value", option_r23.value);
109
- i0.ɵɵadvance(1);
110
- i0.ɵɵtextInterpolate1(" ", option_r23.value, " ");
111
- i0.ɵɵadvance(1);
112
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r23.tip));
110
+ const option_r8 = ctx.$implicit;
111
+ i0.ɵɵproperty("value", option_r8.value);
112
+ i0.ɵɵadvance();
113
+ i0.ɵɵtextInterpolate1(" ", option_r8.value, " ");
114
+ i0.ɵɵadvance();
115
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r8.tip));
113
116
  } }
114
117
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_div_1_Template(rf, ctx) { if (rf & 1) {
115
118
  i0.ɵɵelementStart(0, "div", 24);
@@ -117,19 +120,18 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_di
117
120
  i0.ɵɵpipe(2, "translate");
118
121
  i0.ɵɵelementEnd();
119
122
  } if (rf & 2) {
120
- i0.ɵɵadvance(1);
121
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "read_filling_instructions_tip"), " ");
123
+ i0.ɵɵadvance();
124
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "network.read_filling_instructions_tip"), " ");
122
125
  } }
123
- const _c1 = function (a0) { return { example: a0 }; };
124
126
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template(rf, ctx) { if (rf & 1) {
125
- const _r29 = i0.ɵɵgetCurrentView();
127
+ const _r9 = i0.ɵɵgetCurrentView();
126
128
  i0.ɵɵelementStart(0, "div", 16);
127
129
  i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_div_1_Template, 3, 3, "div", 20);
128
130
  i0.ɵɵelementStart(2, "div", 21);
129
131
  i0.ɵɵtext(3);
130
132
  i0.ɵɵpipe(4, "translate");
131
133
  i0.ɵɵelementStart(5, "aui-icon", 22);
132
- i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template_aui_icon_click_5_listener() { const restoredCtx = i0.ɵɵrestoreView(_r29); const valueConfig_r26 = restoredCtx.ngIf; const control_r5 = i0.ɵɵnextContext(2).$implicit; return i0.ɵɵresetView(control_r5.get("1").setValue(valueConfig_r26.example)); });
134
+ i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template_aui_icon_click_5_listener() { const valueConfig_r10 = i0.ɵɵrestoreView(_r9).ngIf; const control_r3 = i0.ɵɵnextContext(2).$implicit; return i0.ɵɵresetView(control_r3.get("1").setValue(valueConfig_r10.example)); });
133
135
  i0.ɵɵelementEnd()();
134
136
  i0.ɵɵelementStart(6, "a", 23);
135
137
  i0.ɵɵtext(7);
@@ -137,34 +139,34 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Te
137
139
  i0.ɵɵelement(9, "aui-icon", 19);
138
140
  i0.ɵɵelementEnd()();
139
141
  } if (rf & 2) {
140
- const valueConfig_r26 = ctx.ngIf;
141
- const control_r5 = i0.ɵɵnextContext(2).$implicit;
142
- i0.ɵɵadvance(1);
143
- i0.ɵɵproperty("ngIf", control_r5.get("1").value === valueConfig_r26.example);
142
+ const valueConfig_r10 = ctx.ngIf;
143
+ const control_r3 = i0.ɵɵnextContext(2).$implicit;
144
+ i0.ɵɵadvance();
145
+ i0.ɵɵproperty("ngIf", control_r3.get("1").value === valueConfig_r10.example);
144
146
  i0.ɵɵadvance(2);
145
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 4, valueConfig_r26.tip, i0.ɵɵpureFunction1(9, _c1, valueConfig_r26.example)), " ");
147
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 4, valueConfig_r10.tip, i0.ɵɵpureFunction1(9, _c3, valueConfig_r10.example)), " ");
146
148
  i0.ɵɵadvance(3);
147
- i0.ɵɵproperty("href", valueConfig_r26.docLink, i0.ɵɵsanitizeUrl);
148
- i0.ɵɵadvance(1);
149
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 7, "filling_instructions"), " ");
149
+ i0.ɵɵproperty("href", valueConfig_r10.docLink, i0.ɵɵsanitizeUrl);
150
+ i0.ɵɵadvance();
151
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 7, "network.filling_instructions"), " ");
150
152
  } }
151
153
  function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
152
- const _r33 = i0.ɵɵgetCurrentView();
154
+ const _r1 = i0.ɵɵgetCurrentView();
153
155
  i0.ɵɵelementContainerStart(0);
154
- i0.ɵɵelementStart(1, "td", 6)(2, "input", 9);
155
- i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.onBlur()); })("auiAutocompleteSelected", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_auiAutocompleteSelected_2_listener() { i0.ɵɵrestoreView(_r33); const control_r5 = i0.ɵɵnextContext().$implicit; const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.onKeySelected(control_r5)); });
156
+ i0.ɵɵelementStart(1, "td", 8)(2, "input", 11);
157
+ i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onBlur()); })("auiAutocompleteSelected", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_auiAutocompleteSelected_2_listener() { i0.ɵɵrestoreView(_r1); const control_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeySelected(control_r3)); });
156
158
  i0.ɵɵelementEnd();
157
- i0.ɵɵelementStart(3, "aui-autocomplete", null, 10);
158
- i0.ɵɵtemplate(5, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template, 4, 5, "aui-suggestion", 11);
159
+ i0.ɵɵelementStart(3, "aui-autocomplete", null, 0);
160
+ i0.ɵɵtemplate(5, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template, 4, 5, "aui-suggestion", 12);
159
161
  i0.ɵɵelementEnd();
160
- i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template, 3, 5, "ng-container", 8);
162
+ i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template, 3, 5, "ng-container", 10);
161
163
  i0.ɵɵpipe(7, "pure");
162
164
  i0.ɵɵelementEnd();
163
- i0.ɵɵelementStart(8, "td", 6)(9, "input", 12);
164
- i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_9_listener() { i0.ɵɵrestoreView(_r33); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.onBlur()); });
165
+ i0.ɵɵelementStart(8, "td", 8)(9, "input", 13);
166
+ i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onBlur()); });
165
167
  i0.ɵɵelementEnd();
166
- i0.ɵɵelementStart(10, "aui-autocomplete", null, 13);
167
- i0.ɵɵtemplate(12, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template, 4, 5, "aui-suggestion", 11);
168
+ i0.ɵɵelementStart(10, "aui-autocomplete", null, 1);
169
+ i0.ɵɵtemplate(12, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template, 4, 5, "aui-suggestion", 12);
168
170
  i0.ɵɵpipe(13, "pure");
169
171
  i0.ɵɵelementEnd();
170
172
  i0.ɵɵtemplate(14, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template, 10, 11, "div", 14);
@@ -172,41 +174,40 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template(
172
174
  i0.ɵɵelementEnd();
173
175
  i0.ɵɵelementContainerEnd();
174
176
  } if (rf & 2) {
175
- const __r8 = ctx.ngIf;
176
- const _r9 = i0.ɵɵreference(4);
177
- const _r12 = i0.ɵɵreference(11);
178
- const ctx_r37 = i0.ɵɵnextContext();
179
- const index_r6 = ctx_r37.index;
180
- const control_r5 = ctx_r37.$implicit;
181
- const ctx_r7 = i0.ɵɵnextContext();
182
- let tmp_3_0;
183
- let tmp_6_0;
184
- let tmp_7_0;
177
+ let tmp_10_0;
178
+ let tmp_13_0;
179
+ let tmp_14_0;
180
+ const __r11 = ctx.ngIf;
181
+ const keySuggestion_r12 = i0.ɵɵreference(4);
182
+ const valueSuggestion_r13 = i0.ɵɵreference(11);
183
+ const ctx_r13 = i0.ɵɵnextContext();
184
+ const control_r3 = ctx_r13.$implicit;
185
+ const index_r15 = ctx_r13.index;
186
+ const ctx_r1 = i0.ɵɵnextContext();
185
187
  i0.ɵɵadvance(2);
186
- i0.ɵɵproperty("readonly", __r8.readonly)("auiAutocomplete", _r9);
188
+ i0.ɵɵproperty("readonly", __r11.readonly)("auiAutocomplete", keySuggestion_r12);
187
189
  i0.ɵɵadvance(3);
188
- i0.ɵɵproperty("ngForOf", __r8.readonly ? null : ctx_r7.filterOptions(__r8.config == null ? null : __r8.config.options, index_r6));
189
- i0.ɵɵadvance(1);
190
- i0.ɵɵproperty("ngIf", (tmp_3_0 = i0.ɵɵpipeBind3(7, 8, __r8.config == null ? null : __r8.config.options, ctx_r7.getActiveConfigOption, control_r5.get("0").value)) == null ? null : tmp_3_0.doc);
190
+ i0.ɵɵproperty("ngForOf", __r11.readonly ? null : ctx_r1.filterOptions(__r11.config == null ? null : __r11.config.options, index_r15));
191
+ i0.ɵɵadvance();
192
+ i0.ɵɵproperty("ngIf", (tmp_10_0 = i0.ɵɵpipeBind3(7, 8, __r11.config == null ? null : __r11.config.options, ctx_r1.getActiveConfigOption, control_r3.get("0").value)) == null ? null : tmp_10_0.doc);
191
193
  i0.ɵɵadvance(3);
192
- i0.ɵɵproperty("readonly", __r8.readonly)("auiAutocomplete", _r12);
194
+ i0.ɵɵproperty("readonly", __r11.readonly)("auiAutocomplete", valueSuggestion_r13);
193
195
  i0.ɵɵadvance(3);
194
- i0.ɵɵproperty("ngForOf", __r8.readonly ? null : (tmp_6_0 = i0.ɵɵpipeBind3(13, 12, __r8.config == null ? null : __r8.config.options, ctx_r7.getConfigOption, control_r5.get("0").value)) == null ? null : tmp_6_0.values);
196
+ i0.ɵɵproperty("ngForOf", __r11.readonly ? null : (tmp_13_0 = i0.ɵɵpipeBind3(13, 12, __r11.config == null ? null : __r11.config.options, ctx_r1.getConfigOption, control_r3.get("0").value)) == null ? null : tmp_13_0.values);
195
197
  i0.ɵɵadvance(2);
196
- i0.ɵɵproperty("ngIf", (tmp_7_0 = i0.ɵɵpipeBind3(15, 16, __r8.config == null ? null : __r8.config.options, ctx_r7.getActiveConfigOption, control_r5.get("0").value)) == null ? null : tmp_7_0.value);
198
+ i0.ɵɵproperty("ngIf", (tmp_14_0 = i0.ɵɵpipeBind3(15, 16, __r11.config == null ? null : __r11.config.options, ctx_r1.getActiveConfigOption, control_r3.get("0").value)) == null ? null : tmp_14_0.value);
197
199
  } }
198
- const _c2 = function (a0, a1) { return { config: a0, readonly: a1 }; };
199
200
  function ServiceAnnotationsFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
200
- i0.ɵɵelementContainerStart(0, 7);
201
- i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template, 16, 20, "ng-container", 8);
201
+ i0.ɵɵelementContainerStart(0, 9);
202
+ i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template, 16, 20, "ng-container", 10);
202
203
  i0.ɵɵelementContainerEnd();
203
204
  } if (rf & 2) {
204
- const control_r5 = ctx.$implicit;
205
- const index_r6 = ctx.index;
205
+ const control_r3 = ctx.$implicit;
206
+ const index_r15 = ctx.index;
206
207
  const ctx_r1 = i0.ɵɵnextContext();
207
- i0.ɵɵproperty("formGroupName", index_r6);
208
- i0.ɵɵadvance(1);
209
- i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(2, _c2, ctx_r1.KNOWN_ANNOTATIONS[ctx_r1.clusterType], ctx_r1.isLabelReadonly(control_r5)));
208
+ i0.ɵɵproperty("formGroupName", index_r15);
209
+ i0.ɵɵadvance();
210
+ i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(2, _c1, ctx_r1.KNOWN_ANNOTATIONS[ctx_r1.clusterType], ctx_r1.isLabelReadonly(control_r3)));
210
211
  } }
211
212
  function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
212
213
  i0.ɵɵelementContainerStart(0);
@@ -214,7 +215,7 @@ function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Temp
214
215
  i0.ɵɵpipe(2, "translate");
215
216
  i0.ɵɵelementContainerEnd();
216
217
  } if (rf & 2) {
217
- i0.ɵɵadvance(1);
218
+ i0.ɵɵadvance();
218
219
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "k8s_resource_label_key_required"), " ");
219
220
  } }
220
221
  function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
@@ -223,69 +224,68 @@ function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Temp
223
224
  i0.ɵɵpipe(2, "translate");
224
225
  i0.ɵɵelementContainerEnd();
225
226
  } if (rf & 2) {
226
- i0.ɵɵadvance(1);
227
+ i0.ɵɵadvance();
227
228
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "k8s_resource_label_key_duplicated"), " ");
228
229
  } }
229
230
  function ServiceAnnotationsFormComponent_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
230
231
  i0.ɵɵelementStart(0, "td", 26);
231
- i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template, 3, 3, "ng-container", 8);
232
- i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template, 3, 3, "ng-container", 8);
232
+ i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template, 3, 3, "ng-container", 10)(2, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template, 3, 3, "ng-container", 10);
233
233
  i0.ɵɵelement(3, "acl-errors-mapper", 27);
234
234
  i0.ɵɵpipe(4, "async");
235
235
  i0.ɵɵelement(5, "acl-errors-mapper", 28);
236
236
  i0.ɵɵelementEnd();
237
237
  } if (rf & 2) {
238
- const control_r38 = i0.ɵɵnextContext().$implicit;
239
- const ctx_r39 = i0.ɵɵnextContext();
240
- i0.ɵɵadvance(1);
241
- i0.ɵɵproperty("ngIf", control_r38.errors == null ? null : control_r38.errors.keyIsMissing);
242
- i0.ɵɵadvance(1);
243
- i0.ɵɵproperty("ngIf", control_r38.errors == null ? null : control_r38.errors.duplicateError);
244
- i0.ɵɵadvance(1);
245
- i0.ɵɵproperty("errors", control_r38.get("0").errors)("errorsMapper", i0.ɵɵpipeBind1(4, 5, ctx_r39.annotationsErrorsMapper).key);
238
+ const control_r16 = i0.ɵɵnextContext().$implicit;
239
+ const ctx_r1 = i0.ɵɵnextContext();
240
+ i0.ɵɵadvance();
241
+ i0.ɵɵproperty("ngIf", control_r16.errors == null ? null : control_r16.errors.keyIsMissing);
242
+ i0.ɵɵadvance();
243
+ i0.ɵɵproperty("ngIf", control_r16.errors == null ? null : control_r16.errors.duplicateError);
244
+ i0.ɵɵadvance();
245
+ i0.ɵɵproperty("errors", control_r16.get("0").errors)("errorsMapper", i0.ɵɵpipeBind1(4, 5, ctx_r1.annotationsErrorsMapper).key);
246
246
  i0.ɵɵadvance(2);
247
- i0.ɵɵproperty("errors", control_r38.get("1").errors);
247
+ i0.ɵɵproperty("errors", control_r16.get("1").errors);
248
248
  } }
249
249
  function ServiceAnnotationsFormComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
250
250
  i0.ɵɵelementContainerStart(0);
251
251
  i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_Template, 6, 7, "td", 25);
252
252
  i0.ɵɵelementContainerEnd();
253
253
  } if (rf & 2) {
254
- const control_r38 = ctx.$implicit;
255
- i0.ɵɵadvance(1);
256
- i0.ɵɵproperty("ngIf", control_r38.invalid);
254
+ const control_r16 = ctx.$implicit;
255
+ i0.ɵɵadvance();
256
+ i0.ɵɵproperty("ngIf", control_r16.invalid);
257
257
  } }
258
258
  function ServiceAnnotationsFormComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
259
- const _r46 = i0.ɵɵgetCurrentView();
259
+ const _r17 = i0.ɵɵgetCurrentView();
260
260
  i0.ɵɵelementContainerStart(0);
261
261
  i0.ɵɵelementStart(1, "button", 29);
262
- i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_4_Template_button_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r46); const index_r44 = restoredCtx.index; const ctx_r45 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r45.remove(index_r44)); });
262
+ i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_4_Template_button_click_1_listener() { const index_r18 = i0.ɵɵrestoreView(_r17).index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.remove(index_r18)); });
263
263
  i0.ɵɵelement(2, "aui-icon", 30);
264
264
  i0.ɵɵelementEnd();
265
265
  i0.ɵɵelementContainerEnd();
266
266
  } if (rf & 2) {
267
- const item_r43 = ctx.$implicit;
268
- const ctx_r3 = i0.ɵɵnextContext();
269
- i0.ɵɵadvance(1);
270
- i0.ɵɵproperty("square", true)("plain", true)("disabled", ctx_r3.isLabelReadonly(item_r43));
267
+ const item_r19 = ctx.$implicit;
268
+ const ctx_r1 = i0.ɵɵnextContext();
269
+ i0.ɵɵadvance();
270
+ i0.ɵɵproperty("square", true)("plain", true)("disabled", ctx_r1.isLabelReadonly(item_r19));
271
271
  } }
272
272
  function ServiceAnnotationsFormComponent_div_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
273
273
  i0.ɵɵelementContainerStart(0);
274
274
  i0.ɵɵtext(1);
275
275
  i0.ɵɵelementContainerEnd();
276
276
  } if (rf & 2) {
277
- const text_r51 = ctx.$implicit;
278
- i0.ɵɵadvance(1);
279
- i0.ɵɵtextInterpolate(text_r51);
277
+ const text_r20 = ctx.$implicit;
278
+ i0.ɵɵadvance();
279
+ i0.ɵɵtextInterpolate(text_r20);
280
280
  } }
281
281
  function ServiceAnnotationsFormComponent_div_6_ng_container_3_Template(rf, ctx) { if (rf & 1) {
282
282
  i0.ɵɵelementContainerStart(0);
283
283
  i0.ɵɵtext(1);
284
284
  i0.ɵɵelementContainerEnd();
285
285
  } if (rf & 2) {
286
- const config_r47 = i0.ɵɵnextContext().ngIf;
287
- i0.ɵɵadvance(1);
288
- i0.ɵɵtextInterpolate(config_r47.label);
286
+ const config_r21 = i0.ɵɵnextContext().ngIf;
287
+ i0.ɵɵadvance();
288
+ i0.ɵɵtextInterpolate(config_r21.label);
289
289
  } }
290
290
  function ServiceAnnotationsFormComponent_div_6_a_4_Template(rf, ctx) { if (rf & 1) {
291
291
  i0.ɵɵelementStart(0, "a", 35);
@@ -294,28 +294,25 @@ function ServiceAnnotationsFormComponent_div_6_a_4_Template(rf, ctx) { if (rf &
294
294
  i0.ɵɵelement(3, "aui-icon", 19);
295
295
  i0.ɵɵelementEnd();
296
296
  } if (rf & 2) {
297
- const config_r47 = i0.ɵɵnextContext().ngIf;
298
- i0.ɵɵproperty("href", config_r47.docLink, i0.ɵɵsanitizeUrl);
299
- i0.ɵɵadvance(1);
297
+ const config_r21 = i0.ɵɵnextContext().ngIf;
298
+ i0.ɵɵproperty("href", config_r21.docLink, i0.ɵɵsanitizeUrl);
299
+ i0.ɵɵadvance();
300
300
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "documentation"), " ");
301
301
  } }
302
302
  function ServiceAnnotationsFormComponent_div_6_Template(rf, ctx) { if (rf & 1) {
303
303
  i0.ɵɵelementStart(0, "div", 17);
304
304
  i0.ɵɵelementContainerStart(1, 31);
305
- i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_div_6_ng_container_2_Template, 2, 1, "ng-container", 32);
306
- i0.ɵɵtemplate(3, ServiceAnnotationsFormComponent_div_6_ng_container_3_Template, 2, 1, "ng-container", 33);
307
- i0.ɵɵtemplate(4, ServiceAnnotationsFormComponent_div_6_a_4_Template, 4, 4, "a", 34);
305
+ i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_div_6_ng_container_2_Template, 2, 1, "ng-container", 32)(3, ServiceAnnotationsFormComponent_div_6_ng_container_3_Template, 2, 1, "ng-container", 33)(4, ServiceAnnotationsFormComponent_div_6_a_4_Template, 4, 4, "a", 34);
308
306
  i0.ɵɵelementContainerEnd();
309
307
  i0.ɵɵelementEnd();
310
308
  } if (rf & 2) {
311
- i0.ɵɵadvance(1);
309
+ i0.ɵɵadvance();
312
310
  i0.ɵɵproperty("aclTranslate", "documentation_for_lb_service_annotations");
313
311
  i0.ɵɵadvance(2);
314
312
  i0.ɵɵproperty("aclTranslateMatch", "type");
315
- i0.ɵɵadvance(1);
313
+ i0.ɵɵadvance();
316
314
  i0.ɵɵproperty("aclTranslateMatch", "documentation");
317
315
  } }
318
- const _c3 = ["*"];
319
316
  var PRODUCT_BASE_HREF_MAP;
320
317
  (function (PRODUCT_BASE_HREF_MAP) {
321
318
  PRODUCT_BASE_HREF_MAP["devops"] = "/console-devops/";
@@ -619,17 +616,14 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
619
616
  return PRODUCT_BASE_HREF_MAP[product] === baseHref;
620
617
  }
621
618
  static { this.ɵfac = function ServiceAnnotationsFormComponent_Factory(t) { return new (t || ServiceAnnotationsFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(TOKEN_BASE_DOMAIN)); }; }
622
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormComponent, selectors: [["acl-service-annotations-form"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", resourceName: "resourceName" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c3, decls: 7, vars: 4, consts: [[3, "formGroup", "rows", "resourceName", "add", "remove"], [4, "aclArrayFormTableHeader"], [3, "formGroupName", 4, "aclArrayFormTableRow"], [4, "aclArrayFormTableRowError"], [4, "aclArrayFormTableRowControl"], ["class", "tw-text-help-text tw-text-s tw-mt-4", 4, "ngIf"], [1, "column"], [3, "formGroupName"], [4, "ngIf"], ["aui-input", "", "formControlName", "0", 3, "readonly", "auiAutocomplete", "blur", "auiAutocompleteSelected"], ["keySuggestion", ""], [3, "value", 4, "ngFor", "ngForOf"], ["aui-input", "", "formControlName", "1", 3, "readonly", "auiAutocomplete", "blur"], ["valueSuggestion", ""], ["class", "tw-text-help-text tw-text-s", 4, "ngIf"], [3, "value"], [1, "tw-text-help-text", "tw-text-s"], [1, "tw-text-help-text", "tw-text-s", "tw-mt-4"], [3, "aclDocs"], ["icon", "jump"], ["class", "tw-text-yellow tw-mt-4", 4, "ngIf"], [1, "tw-break-all", "tw-my-4"], ["icon", "arrow_turn_up", 1, "tw-text-primary", "tw-cursor-pointer", 3, "click"], ["rel", "noopener noreferrer", "target", "_blank", 3, "href"], [1, "tw-text-yellow", "tw-mt-4"], ["colspan", "3", "class", "acl-table-form-error-hint", 4, "ngIf"], ["colspan", "3", 1, "acl-table-form-error-hint"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["auiFormItemError", "", 3, "errors"], ["aui-button", "text", "type", "button", 3, "square", "plain", "disabled", "click"], ["icon", "minus_circle"], [3, "aclTranslate"], [4, "aclTranslateText"], [4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", 4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"]], template: function ServiceAnnotationsFormComponent_Template(rf, ctx) { if (rf & 1) {
619
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormComponent, selectors: [["acl-service-annotations-form"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", resourceName: "resourceName" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 7, vars: 4, consts: [["keySuggestion", ""], ["valueSuggestion", ""], [3, "add", "remove", "formGroup", "rows", "resourceName"], [4, "aclArrayFormTableHeader"], [3, "formGroupName", 4, "aclArrayFormTableRow"], [4, "aclArrayFormTableRowError"], [4, "aclArrayFormTableRowControl"], ["class", "tw-text-help-text tw-text-s tw-mt-4", 4, "ngIf"], [1, "column"], [3, "formGroupName"], [4, "ngIf"], ["aui-input", "", "formControlName", "0", 3, "blur", "auiAutocompleteSelected", "readonly", "auiAutocomplete"], [3, "value", 4, "ngFor", "ngForOf"], ["aui-input", "", "formControlName", "1", 3, "blur", "readonly", "auiAutocomplete"], ["class", "tw-text-help-text tw-text-s", 4, "ngIf"], [3, "value"], [1, "tw-text-help-text", "tw-text-s"], [1, "tw-text-help-text", "tw-text-s", "tw-mt-4"], [3, "aclDocs"], ["icon", "jump"], ["class", "tw-text-yellow tw-mt-4", 4, "ngIf"], [1, "tw-break-all", "tw-my-4"], ["icon", "arrow_turn_up", 1, "tw-text-primary", "tw-cursor-pointer", 3, "click"], ["rel", "noopener noreferrer", "target", "_blank", 3, "href"], [1, "tw-text-yellow", "tw-mt-4"], ["colspan", "3", "class", "acl-table-form-error-hint", 4, "ngIf"], ["colspan", "3", 1, "acl-table-form-error-hint"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["auiFormItemError", "", 3, "errors"], ["aui-button", "text", "type", "button", 3, "click", "square", "plain", "disabled"], ["icon", "minus_circle"], [3, "aclTranslate"], [4, "aclTranslateText"], [4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", 4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"]], template: function ServiceAnnotationsFormComponent_Template(rf, ctx) { if (rf & 1) {
623
620
  i0.ɵɵprojectionDef();
624
- i0.ɵɵelementStart(0, "acl-array-form-table", 0);
621
+ i0.ɵɵelementStart(0, "acl-array-form-table", 2);
625
622
  i0.ɵɵlistener("add", function ServiceAnnotationsFormComponent_Template_acl_array_form_table_add_0_listener() { return ctx.form.push(ctx.createNewControl()); })("remove", function ServiceAnnotationsFormComponent_Template_acl_array_form_table_remove_0_listener($event) { return ctx.remove($event); });
626
- i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_1_Template, 7, 6, "ng-container", 1);
627
- i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_ng_container_2_Template, 2, 5, "ng-container", 2);
628
- i0.ɵɵtemplate(3, ServiceAnnotationsFormComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
629
- i0.ɵɵtemplate(4, ServiceAnnotationsFormComponent_ng_container_4_Template, 3, 3, "ng-container", 4);
623
+ i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_1_Template, 7, 6, "ng-container", 3)(2, ServiceAnnotationsFormComponent_ng_container_2_Template, 2, 5, "ng-container", 4)(3, ServiceAnnotationsFormComponent_ng_container_3_Template, 2, 1, "ng-container", 5)(4, ServiceAnnotationsFormComponent_ng_container_4_Template, 3, 3, "ng-container", 6);
630
624
  i0.ɵɵelementEnd();
631
625
  i0.ɵɵprojection(5);
632
- i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_div_6_Template, 5, 3, "div", 5);
626
+ i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_div_6_Template, 5, 3, "div", 7);
633
627
  } if (rf & 2) {
634
628
  i0.ɵɵproperty("formGroup", ctx.form)("rows", ctx.form.controls)("resourceName", ctx.resourceName);
635
629
  i0.ɵɵadvance(6);
@@ -637,21 +631,19 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
637
631
  } }, dependencies: [AsyncPipe,
638
632
  NgIf,
639
633
  NgForOf,
640
- ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i1.FormGroupName, TranslateModule, i2.TranslateDirective, i2.TranslateMatchDirective, i2.TranslateTextDirective, i2.TranslatePipe, AutocompleteModule, i3.AutoCompleteDirective, i3.AutocompleteComponent, i3.SuggestionComponent, ButtonModule, i3.ButtonComponent, IconModule, i3.IconComponent, InputModule, i3.InputComponent, ArrayFormTableComponent,
634
+ ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i1.FormGroupName, AutocompleteModule, i2.AutoCompleteDirective, i2.AutocompleteComponent, i2.SuggestionComponent, ButtonModule, i2.ButtonComponent, IconModule, i2.IconComponent, InputModule, i2.InputComponent, ArrayFormTableComponent,
641
635
  ArrayFormTableHeaderDirective,
642
636
  ArrayFormTableRowDirective,
643
637
  ArrayFormTableRowControlDirective,
644
- ArrayFormTableRowErrorDirective,
645
- ErrorsMapperModule, i2.ErrorsMapperComponent, HelpDocumentModule, i2.DocsDirective, PurePipe], styles: ["[_nghost-%COMP%]{flex:1}.column[_ngcontent-%COMP%]{width:50%;vertical-align:top}"], changeDetection: 0 }); }
638
+ ArrayFormTableRowErrorDirective, i3.TranslatePipe, i3.TranslateDirective, i3.TranslateMatchDirective, i3.TranslateTextDirective, i3.ErrorsMapperComponent, HelpDocumentModule, i3.DocsDirective, PurePipe], styles: ["[_nghost-%COMP%]{flex:1}.column[_ngcontent-%COMP%]{width:50%;vertical-align:top}"], changeDetection: 0 }); }
646
639
  }
647
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormComponent, [{
640
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormComponent, [{
648
641
  type: Component,
649
642
  args: [{ selector: 'acl-service-annotations-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
650
643
  AsyncPipe,
651
644
  NgIf,
652
645
  NgForOf,
653
646
  ReactiveFormsModule,
654
- TranslateModule,
655
647
  AutocompleteModule,
656
648
  ButtonModule,
657
649
  IconModule,
@@ -661,14 +653,15 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
661
653
  ArrayFormTableRowDirective,
662
654
  ArrayFormTableRowControlDirective,
663
655
  ArrayFormTableRowErrorDirective,
664
- ErrorsMapperModule,
656
+ TRANSLATE_MODULE,
657
+ ERRORS_MAPPER_MODULE,
665
658
  HelpDocumentModule,
666
659
  PurePipe,
667
- ], template: "<acl-array-form-table\n [formGroup]=\"$any(form)\"\n [rows]=\"form.controls\"\n (add)=\"form.push(createNewControl())\"\n (remove)=\"remove($event)\"\n [resourceName]=\"resourceName\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th class=\"column\">{{ 'key' | translate }}</th>\n <th class=\"column\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <ng-container\n *ngIf=\"{\n config: KNOWN_ANNOTATIONS[clusterType],\n readonly: isLabelReadonly(control)\n } as _\"\n >\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"0\"\n [auiAutocomplete]=\"keySuggestion\"\n (auiAutocompleteSelected)=\"onKeySelected(control)\"\n />\n <aui-autocomplete #keySuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : filterOptions(_.config?.options, index)\n \"\n [value]=\"option.key\"\n >\n {{ option.key }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <ng-container\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.doc as doc\n \"\n >\n <div\n *ngIf=\"baseHref | pure: showDocLink:doc.product\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n >\n <ng-container *ngIf=\"doc.tipPrefix\">\n {{ doc.tipPrefix | translate }}\n </ng-container>\n <a\n [aclDocs]=\"{\n path: doc.path,\n rawUrl: doc.rawUrl,\n type: 'page',\n }\"\n >\n {{ doc.tip | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </ng-container>\n </td>\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"1\"\n [auiAutocomplete]=\"valueSuggestion\"\n />\n <aui-autocomplete #valueSuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : (\n _.config?.options\n | pure: getConfigOption:control.get('0').value\n )?.values\n \"\n [value]=\"option.value\"\n >\n {{ option.value }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <div\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.value as valueConfig\n \"\n class=\"tw-text-help-text tw-text-s\"\n >\n <div\n *ngIf=\"control.get('1').value === valueConfig.example\"\n class=\"tw-text-yellow tw-mt-4\"\n >\n {{ 'read_filling_instructions_tip' | translate }}\n </div>\n <div class=\"tw-break-all tw-my-4\">\n {{ valueConfig.tip | translate: { example: valueConfig.example } }}\n <aui-icon\n class=\"tw-text-primary tw-cursor-pointer\"\n icon=\"arrow_turn_up\"\n (click)=\"control.get('1').setValue(valueConfig.example)\"\n ></aui-icon>\n </div>\n <a\n [href]=\"valueConfig.docLink\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {{ 'filling_instructions' | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('0').errors\"\n [errorsMapper]=\"(annotationsErrorsMapper | async).key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('1').errors\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"isLabelReadonly(item)\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n</acl-array-form-table>\n\n<ng-content></ng-content>\n\n<div\n *ngIf=\"KNOWN_ANNOTATIONS[clusterType] as config\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n>\n <ng-container [aclTranslate]=\"'documentation_for_lb_service_annotations'\">\n <ng-container *aclTranslateText=\"let text\">{{ text }}</ng-container>\n <ng-container *aclTranslateMatch=\"'type'\">{{ config.label }}</ng-container>\n <a\n *aclTranslateMatch=\"'documentation'\"\n [href]=\"config.docLink\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'documentation' | translate }}\n <aui-icon icon=\"jump\"></aui-icon> </a\n ></ng-container>\n</div>\n", styles: [":host{flex:1}.column{width:50%;vertical-align:top}\n"] }]
668
- }], function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
660
+ ], template: "<acl-array-form-table\n [formGroup]=\"$any(form)\"\n [rows]=\"form.controls\"\n (add)=\"form.push(createNewControl())\"\n (remove)=\"remove($event)\"\n [resourceName]=\"resourceName\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th class=\"column\">{{ 'key' | translate }}</th>\n <th class=\"column\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <ng-container\n *ngIf=\"{\n config: KNOWN_ANNOTATIONS[clusterType],\n readonly: isLabelReadonly(control)\n } as _\"\n >\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"0\"\n [auiAutocomplete]=\"keySuggestion\"\n (auiAutocompleteSelected)=\"onKeySelected(control)\"\n />\n <aui-autocomplete #keySuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : filterOptions(_.config?.options, index)\n \"\n [value]=\"option.key\"\n >\n {{ option.key }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <ng-container\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.doc as doc\n \"\n >\n <div\n *ngIf=\"baseHref | pure: showDocLink:doc.product\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n >\n <ng-container *ngIf=\"doc.tipPrefix\">\n {{ doc.tipPrefix | translate }}\n </ng-container>\n <a\n [aclDocs]=\"{\n path: doc.path,\n rawUrl: doc.rawUrl,\n type: 'page',\n }\"\n >\n {{ doc.tip | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </ng-container>\n </td>\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"1\"\n [auiAutocomplete]=\"valueSuggestion\"\n />\n <aui-autocomplete #valueSuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : (\n _.config?.options\n | pure: getConfigOption:control.get('0').value\n )?.values\n \"\n [value]=\"option.value\"\n >\n {{ option.value }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <div\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.value as valueConfig\n \"\n class=\"tw-text-help-text tw-text-s\"\n >\n <div\n *ngIf=\"control.get('1').value === valueConfig.example\"\n class=\"tw-text-yellow tw-mt-4\"\n >\n {{ 'network.read_filling_instructions_tip' | translate }}\n </div>\n <div class=\"tw-break-all tw-my-4\">\n {{ valueConfig.tip | translate: { example: valueConfig.example } }}\n <aui-icon\n class=\"tw-text-primary tw-cursor-pointer\"\n icon=\"arrow_turn_up\"\n (click)=\"control.get('1').setValue(valueConfig.example)\"\n ></aui-icon>\n </div>\n <a\n [href]=\"valueConfig.docLink\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {{ 'network.filling_instructions' | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('0').errors\"\n [errorsMapper]=\"(annotationsErrorsMapper | async).key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('1').errors\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"isLabelReadonly(item)\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n</acl-array-form-table>\n\n<ng-content></ng-content>\n\n<div\n *ngIf=\"KNOWN_ANNOTATIONS[clusterType] as config\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n>\n <ng-container [aclTranslate]=\"'documentation_for_lb_service_annotations'\">\n <ng-container *aclTranslateText=\"let text\">{{ text }}</ng-container>\n <ng-container *aclTranslateMatch=\"'type'\">{{ config.label }}</ng-container>\n <a\n *aclTranslateMatch=\"'documentation'\"\n [href]=\"config.docLink\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'documentation' | translate }}\n <aui-icon icon=\"jump\"></aui-icon> </a\n ></ng-container>\n</div>\n", styles: [":host{flex:1}.column{width:50%;vertical-align:top}\n"] }]
661
+ }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
669
662
  type: Inject,
670
663
  args: [TOKEN_BASE_DOMAIN]
671
- }] }]; }, { isUpdate: [{
664
+ }] }], { isUpdate: [{
672
665
  type: Input,
673
666
  args: [{ required: true }]
674
667
  }], clusterType: [{
@@ -678,4 +671,5 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
678
671
  type: Input,
679
672
  args: [{ required: true }]
680
673
  }] }); })();
681
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFFMUIsa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxrQkFBa0IsRUFFbEIsUUFBUSxFQUVSLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsSUFBSSxFQUVKLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsb0NBQW9DLEVBQ3BDLGlDQUFpQyxHQUNsQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztJQ2xDeEQsNkJBQXVDO0lBQ3JDLDZCQUFtQjtJQUFBLFlBQXVCOztJQUFBLGlCQUFLO0lBQy9DLDZCQUFtQjtJQUFBLFlBQXlCOztJQUFBLGlCQUFLO0lBQ25ELDBCQUFlOztJQUZNLGVBQXVCO0lBQXZCLGlEQUF1QjtJQUN2QixlQUF5QjtJQUF6QixtREFBeUI7OztJQWdDcEMsK0JBR0M7SUFDQyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGVBQ0Y7SUFERSx3Q0FDRjs7O0lBZEYsMENBT0M7SUFDQyxZQUNBO0lBQUEsZ0lBS007O0lBQ1IsaUJBQWlCOzs7SUFUZixzQ0FBb0I7SUFFcEIsZUFDQTtJQURBLCtDQUNBO0lBQ0csZUFBNkI7SUFBN0IsMkRBQTZCOzs7SUFtQmhDLDZCQUFvQztJQUNsQyxZQUNGOztJQUFBLDBCQUFlOzs7SUFEYixlQUNGO0lBREUsd0VBQ0Y7Ozs7SUFORiwrQkFHQztJQUNDLHFKQUVlO0lBQ2YsNkJBTUM7SUFDQyxZQUNBOztJQUFBLCtCQUFpQztJQUNuQyxpQkFBSSxFQUFBOzs7SUFaVyxlQUFtQjtJQUFuQix3Q0FBbUI7SUFJaEMsZUFJRTtJQUpGLGtGQUlFO0lBRUYsZUFDQTtJQURBLGtFQUNBOzs7SUF2Qk4sNkJBT0M7SUFDQyw2SEFpQk07O0lBQ1IsMEJBQWU7Ozs7SUFqQlYsZUFBOEM7SUFBOUMsbUdBQThDOzs7SUF3Qy9DLCtCQUdDO0lBQ0MsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixlQUNGO0lBREUsd0NBQ0Y7OztJQWpCRiwwQ0FVQztJQUNDLFlBQ0E7SUFBQSxpSUFLTTs7SUFDUixpQkFBaUI7OztJQVRmLHdDQUFzQjtJQUV0QixlQUNBO0lBREEsaURBQ0E7SUFDRyxlQUE2QjtJQUE3QiwyREFBNkI7OztJQWdCbEMsK0JBR0M7SUFDQyxZQUNGOztJQUFBLGlCQUFNOztJQURKLGVBQ0Y7SUFERSxzRkFDRjs7Ozs7SUFkRiwrQkFRQztJQUNDLHNIQUtNO0lBQ04sK0JBQWtDO0lBQ2hDLFlBQ0E7O0lBQUEsb0NBSUM7SUFEQywyUkFBUyxlQUFBLGVBQVksR0FBRyxDQUFDLGtDQUE4QixDQUFBLElBQUM7SUFDekQsaUJBQVcsRUFBQTtJQUVkLDZCQUlDO0lBQ0MsWUFDQTs7SUFBQSwrQkFBaUM7SUFDbkMsaUJBQUksRUFBQTs7OztJQXBCRCxlQUFvRDtJQUFwRCw0RUFBb0Q7SUFNckQsZUFDQTtJQURBLCtIQUNBO0lBT0EsZUFBNEI7SUFBNUIsZ0VBQTRCO0lBSTVCLGVBQ0E7SUFEQSw2RUFDQTs7OztJQXZIUiw2QkFLQztJQUNDLDZCQUFtQixlQUFBO0lBSWYsb01BQVEsZUFBQSxnQkFBUSxDQUFBLElBQUMsNlFBR1UsZUFBQSxpQ0FBc0IsQ0FBQSxJQUhoQztJQUhuQixpQkFPRTtJQUNGLGtEQUFpQztJQUMvQixxSUFlaUI7SUFDbkIsaUJBQW1CO0lBQ25CLGdJQTBCZTs7SUFDakIsaUJBQUs7SUFDTCw2QkFBbUIsZ0JBQUE7SUFJZixvTUFBUSxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUhuQixpQkFNRTtJQUNGLG1EQUFtQztJQUNqQyx1SUFrQmlCOztJQUNuQixpQkFBbUI7SUFDbkIsbUhBK0JNOztJQUNSLGlCQUFLO0lBQ1AsMEJBQWU7Ozs7Ozs7Ozs7OztJQWxIVCxlQUF1QjtJQUF2Qix3Q0FBdUIsd0JBQUE7SUFVaEMsZUFHRDtJQUhDLGlJQUdEO0lBWVcsZUFLTDtJQUxLLCtMQUtMO0lBeUJJLGVBQXVCO0lBQXZCLHdDQUF1Qix5QkFBQTtJQVNoQyxlQU1EO0lBTkMsd05BTUQ7SUFZVyxlQUl1QjtJQUp2QixtTUFJdUI7Ozs7SUFuR2hDLGdDQUdDO0lBQ0MsbUhBMkhlO0lBQ2pCLDBCQUFlOzs7OztJQTlIYix3Q0FBdUI7SUFHcEIsZUFHQztJQUhELG1JQUdDOzs7SUFnSUYsNkJBQW1EO0lBQ2pELFlBQ0Y7O0lBQUEsMEJBQWU7O0lBRGIsZUFDRjtJQURFLHdGQUNGOzs7SUFFQSw2QkFBcUQ7SUFDbkQsWUFDRjs7SUFBQSwwQkFBZTs7SUFEYixlQUNGO0lBREUsMEZBQ0Y7OztJQVhGLDhCQUlDO0lBQ0Msc0hBRWU7SUFFZixzSEFFZTtJQUVmLHdDQUlxQjs7SUFDckIsd0NBR3FCO0lBQ3ZCLGlCQUFLOzs7O0lBakJZLGVBQWtDO0lBQWxDLDBGQUFrQztJQUlsQyxlQUFvQztJQUFwQyw0RkFBb0M7SUFNakQsZUFBa0M7SUFBbEMsb0RBQWtDLDJFQUFBO0lBS2xDLGVBQWtDO0lBQWxDLG9EQUFrQzs7O0lBckJ4Qyw2QkFBdUQ7SUFDckQsOEZBc0JLO0lBQ1AsMEJBQWU7OztJQXRCVixlQUFxQjtJQUFyQiwwQ0FBcUI7Ozs7SUF3QjFCLDZCQUF5RTtJQUN2RSxrQ0FPQztJQURDLGdQQUFTLGVBQUEseUJBQWEsQ0FBQSxJQUFDO0lBRXZCLCtCQUF5QztJQUMzQyxpQkFBUztJQUNYLDBCQUFlOzs7O0lBUFgsZUFBZTtJQUFmLDZCQUFlLGVBQUEsOENBQUE7OztJQWlCakIsNkJBQTJDO0lBQUEsWUFBVTtJQUFBLDBCQUFlOzs7SUFBekIsZUFBVTtJQUFWLDhCQUFVOzs7SUFDckQsNkJBQTBDO0lBQUEsWUFBa0I7SUFBQSwwQkFBZTs7O0lBQWpDLGVBQWtCO0lBQWxCLHNDQUFrQjs7O0lBQzVELDZCQUtDO0lBQ0MsWUFDQTs7SUFBQSwrQkFBaUM7SUFBQyxpQkFDckM7OztJQU5HLDJEQUF1QjtJQUl2QixlQUNBO0lBREEsc0VBQ0E7OztJQWROLCtCQUdDO0lBQ0MsaUNBQTBFO0lBQ3hFLHlHQUFvRTtJQUNwRSx5R0FBMkU7SUFDM0UsbUZBUUQ7SUFBQSwwQkFBZTtJQUNsQixpQkFBTTs7SUFaVSxlQUEyRDtJQUEzRCx5RUFBMkQ7SUFFeEQsZUFBeUI7SUFBekIsMENBQXlCO0lBRXJDLGVBQWtDO0lBQWxDLG1EQUFrQzs7O0FEckp6QyxJQUFLLHFCQU9KO0FBUEQsV0FBSyxxQkFBcUI7SUFDeEIsb0RBQTJCLENBQUE7SUFDM0IsOENBQXFCLENBQUE7SUFDckIsOENBQXFCLENBQUE7SUFDckIsZ0VBQXVDLENBQUE7SUFDdkMsOENBQXFCLENBQUE7SUFDckIsd0RBQStCLENBQUE7QUFDakMsQ0FBQyxFQVBJLHFCQUFxQixLQUFyQixxQkFBcUIsUUFPekI7QUF1QkQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBUzFCO0lBQ0YsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDdEIsS0FBSyxFQUFFLEtBQUs7UUFDWixPQUFPLEVBQ0wsd0ZBQXdGO1FBQzFGLE9BQU8sRUFBRTtZQUNQO2dCQUNFLEdBQUcsRUFBRSx5REFBeUQ7Z0JBQzlELEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsNENBQTRDO29CQUNoRCxFQUFFLEVBQUUsV0FBVztpQkFDaEI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUsVUFBVTs0QkFDZCxFQUFFLEVBQUUsSUFBSTt5QkFDVDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsS0FBSzt3QkFDWixHQUFHLEVBQUU7NEJBQ0gsRUFBRSxFQUFFLGdCQUFnQjs0QkFDcEIsRUFBRSxFQUFFLElBQUk7eUJBQ1Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN2QixLQUFLLEVBQUUsS0FBSztRQUNaLE9BQU8sRUFDTCxnR0FBZ0c7UUFDbEcsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsR0FBRyxFQUFFLG1EQUFtRDtnQkFDeEQsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSxvREFBb0Q7b0JBQ3hELEVBQUUsRUFBRSwrQkFBK0I7aUJBQ3BDO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUU7d0JBQ0gsRUFBRSxFQUFFLHlCQUF5Qjt3QkFDN0IsRUFBRSxFQUFFLE9BQU87cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFLFVBQVU7b0JBQ25CLElBQUksRUFBRSxvRkFBb0Y7aUJBQzNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTt3QkFDakIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSxnREFBZ0Q7NEJBQ3BELEVBQUUsRUFBRSx3Q0FBd0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsOERBQThEO2dCQUNuRSxHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLGtEQUFrRDtvQkFDdEQsRUFBRSxFQUFFLGNBQWM7aUJBQ25CO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTt3QkFDakIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSwrQ0FBK0M7NEJBQ25ELEVBQUUsRUFBRSxzQkFBc0I7eUJBQzNCO3FCQUNGO29CQUNEO3dCQUNFLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUscUZBQXFGOzRCQUN6RixFQUFFLEVBQUUsa0NBQWtDO3lCQUN2QztxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLHFEQUFxRDtnQkFDMUQsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSw0Q0FBNEM7b0JBQ2hELEVBQUUsRUFBRSxXQUFXO2lCQUNoQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsS0FBSyxFQUFFLFVBQVU7d0JBQ2pCLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUsVUFBVTs0QkFDZCxFQUFFLEVBQUUsSUFBSTt5QkFDVDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixHQUFHLEVBQUU7NEJBQ0gsRUFBRSxFQUFFLGdCQUFnQjs0QkFDcEIsRUFBRSxFQUFFLElBQUk7eUJBQ1Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSw4REFBOEQ7Z0JBQ25FLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUseUNBQXlDO29CQUM3QyxFQUFFLEVBQUUsY0FBYztpQkFDbkI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxNQUFNO3FCQUNkO29CQUNEO3dCQUNFLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjthQUNGO1NBQ0Y7S0FDRjtJQUNELENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQzVCLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUNMLDRFQUE0RTtRQUM5RSxPQUFPLEVBQUU7WUFDUDtnQkFDRSxHQUFHLEVBQUUsc0JBQXNCO2dCQUMzQixHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLGlHQUFpRztvQkFDckcsRUFBRSxFQUFFLDRCQUE0QjtpQkFDakM7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSw4QkFBOEI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsaUNBQWlDO29CQUNyQyxFQUFFLEVBQUUsWUFBWTtpQkFDakI7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE9BQU8sRUFBRSxrUEFBa1A7b0JBQzNQLEdBQUcsRUFBRTt3QkFDSCxFQUFFLEVBQUUsNEJBQTRCO3dCQUNoQyxFQUFFLEVBQUUsa0JBQWtCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQ0wscUZBQXFGO2lCQUN4RjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLDZCQUE2QjtnQkFDbEMsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSxtSUFBbUk7b0JBQ3ZJLEVBQUUsRUFBRSw2REFBNkQ7aUJBQ2xFO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUseUJBQXlCO2dCQUM5QixHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLDBEQUEwRDtvQkFDOUQsRUFBRSxFQUFFLGtCQUFrQjtpQkFDdkI7Z0JBQ0QsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRTt3QkFDSCxFQUFFLEVBQUUseURBQXlEO3dCQUM3RCxFQUFFLEVBQUUsd0JBQXdCO3FCQUM3QjtvQkFDRCxNQUFNLEVBQ0osOEVBQThFO29CQUNoRixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxFQUFFLG9DQUFvQzt3QkFDeEMsRUFBRSxFQUFFLE9BQU87cUJBQ1o7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxPQUFPO3dCQUNkLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUscUJBQXFCOzRCQUN6QixFQUFFLEVBQUUsU0FBUzt5QkFDZDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSwrRUFBK0U7NEJBQ25GLEVBQUUsRUFBRSw0Q0FBNEM7eUJBQ2pEO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsZ0NBQWdDO2dCQUNyQyxHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLDBGQUEwRjtvQkFDOUYsRUFBRSxFQUFFLHFCQUFxQjtpQkFDMUI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUM1QixLQUFLLEVBQUUsS0FBSztRQUNaLE9BQU8sRUFDTCwyRkFBMkY7UUFDN0YsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsR0FBRyxFQUFFLHNDQUFzQztnQkFDM0MsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSw2QkFBNkI7b0JBQ2pDLEVBQUUsRUFBRSxRQUFRO2lCQUNiO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTtxQkFDbEI7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSx5QkFBeUI7Z0JBQzlCLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsK0dBQStHO29CQUNuSCxFQUFFLEVBQUUsMEJBQTBCO2lCQUMvQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsS0FBSyxFQUFFLFNBQVM7cUJBQ2pCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQTRCRixNQUFNLE9BQU8sK0JBQWdDLFNBQVEsMEJBQTBCO0lBdUI3RSxZQUNFLFFBQWtCLEVBQzBCLFVBQWtCO1FBRTlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUY0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBZi9DLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXRELDJDQUEyQztRQUNsQyx3QkFBbUIsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0RSw0QkFBdUIsR0FBRyxvQ0FBb0MsQ0FDNUQsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFPdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUE2QyxFQUFFLEtBQWE7UUFDeEUsTUFBTSxJQUFJLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUE2QyxFQUFFLEdBQVc7UUFDeEUsT0FBTyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVRLG1CQUFtQjtRQUMxQixPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVEsa0JBQWtCLENBQUMsUUFBbUI7UUFDN0MsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQTZCO1FBQzdCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBcUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQXNCLEVBQUUsSUFBc0IsRUFBRSxFQUFFO1lBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDMUMsT0FBTyxDQUFDLENBQUM7YUFDVjtZQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QixZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDM0M7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRVEsZ0JBQWdCO1FBQ3ZCLE9BQU8saUNBQWlDLENBQUM7SUFDM0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUF1QztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxxQkFBcUIsQ0FDbkIsT0FBNkMsRUFDN0MsR0FBVztRQUVYLE9BQU8sT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUF1QztRQUNuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLFdBQVcsQ0FBQyxRQUFnQixFQUFFLE9BQTRDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDckQsQ0FBQztnR0FsR1UsK0JBQStCLDBEQXlCaEMsaUJBQWlCO29FQXpCaEIsK0JBQStCOztZQ3ZWNUMsK0NBTUM7WUFIQyxzSEFBTyxjQUFVLHNCQUFrQixDQUFDLElBQUMscUhBQzNCLGtCQUFjLElBRGE7WUFJckMsa0dBR2U7WUFFZixrR0FnSWU7WUFFZixrR0F3QmU7WUFFZixrR0FXZTtZQUNqQixpQkFBdUI7WUFFdkIsa0JBQXlCO1lBRXpCLGdGQWdCTTs7WUF2TUosb0NBQXdCLDJCQUFBLGtDQUFBO1lBd0x2QixlQUFxQztZQUFyQyw2REFBcUM7NEJEMklwQyxTQUFTO1lBQ1QsSUFBSTtZQUNKLE9BQU87WUFDUCxtQkFBbUIscUlBQ25CLGVBQWUsa0dBQ2Ysa0JBQWtCLDhFQUNsQixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsV0FBVyxxQkFDWCx1QkFBdUI7WUFDdkIsNkJBQTZCO1lBQzdCLDBCQUEwQjtZQUMxQixpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLGtCQUFrQiw0QkFDbEIsa0JBQWtCLG9CQUNsQixRQUFROzt1RkFHQywrQkFBK0I7Y0ExQjNDLFNBQVM7MkJBQ0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDtvQkFDUCxTQUFTO29CQUNULElBQUk7b0JBQ0osT0FBTztvQkFDUCxtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCx1QkFBdUI7b0JBQ3ZCLDZCQUE2QjtvQkFDN0IsMEJBQTBCO29CQUMxQixpQ0FBaUM7b0JBQ2pDLCtCQUErQjtvQkFDL0Isa0JBQWtCO29CQUNsQixrQkFBa0I7b0JBQ2xCLFFBQVE7aUJBQ1Q7O3NCQTJCRSxNQUFNO3VCQUFDLGlCQUFpQjt3QkF2QjNCLFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixZQUFZO2tCQURYLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlTW9kdWxlLFxuICBCdXR0b25Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICBBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dFcnJvckRpcmVjdGl2ZSxcbiAgQmFzZVN0cmluZ01hcEZvcm1Db21wb25lbnQsXG4gIEtleVZhbHVlVHVwbGUsXG4gIEVycm9yc01hcHBlck1vZHVsZSxcbiAgRkFMU0UsXG4gIEhlbHBEb2N1bWVudE1vZHVsZSxcbiAgTG9jYWxlLFxuICBQdXJlUGlwZSxcbiAgU3RyaW5nTWFwLFxuICBUT0tFTl9CQVNFX0RPTUFJTixcbiAgVE9LRU5fQkFTRV9IUkVGLFxuICBUUlVFLFxuICBUcmFuc2xhdGVLZXksXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3IsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NsdXN0ZXItZXhwb3J0cyc7XG5cbmVudW0gUFJPRFVDVF9CQVNFX0hSRUZfTUFQIHtcbiAgZGV2b3BzID0gJy9jb25zb2xlLWRldm9wcy8nLFxuICBhY3AgPSAnL2NvbnNvbGUtYWNwLycsXG4gIGFzbSA9ICcvY29uc29sZS1hc20vJyxcbiAgZGF0YXNlcnZpY2VzID0gJy9jb25zb2xlLWRhdGFzZXJ2aWNlcy8nLFxuICBjZWMgPSAnL2NvbnNvbGUtY2VjLycsXG4gIHBsYXRmb3JtID0gJy9jb25zb2xlLXBsYXRmb3JtLycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkNvbmZpZ09wdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICB0aXA6IFRyYW5zbGF0ZUtleTxMb2NhbGU+O1xuICBkb2M/OiB7XG4gICAgdGlwOiBUcmFuc2xhdGVLZXk8TG9jYWxlPjtcbiAgICB0aXBQcmVmaXg/OiBUcmFuc2xhdGVLZXk8TG9jYWxlPjtcbiAgICBwYXRoPzogc3RyaW5nOyAvLyDmoIflh4bmlofmoaPpk77mjqUsIOWvueW6lCBEb2NzT3B0aW9uLnBhdGhcbiAgICByYXdVcmw/OiBzdHJpbmc7IC8vIOmdnuagh+WHhuaWh+aho+mTvuaOpSwg5a+55bqUIERvY3NPcHRpb24ucmF3VXJsXG4gICAgcHJvZHVjdD86IGtleW9mIHR5cGVvZiBQUk9EVUNUX0JBU0VfSFJFRl9NQVA7XG4gIH07XG4gIHZhbHVlPzoge1xuICAgIGV4YW1wbGU6IHN0cmluZztcbiAgICB0aXA6IFRyYW5zbGF0ZUtleTxMb2NhbGU+O1xuICAgIGRvY0xpbms6IHN0cmluZztcbiAgfTtcbiAgdmFsdWVzPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdGlwPzogVHJhbnNsYXRlS2V5PExvY2FsZT47XG4gIH0+O1xufVxuXG5leHBvcnQgY29uc3QgS05PV05fQU5OT1RBVElPTlM6IFBhcnRpYWw8XG4gIFJlY29yZDxcbiAgICBDbHVzdGVyVHlwZSxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgZG9jTGluazogc3RyaW5nO1xuICAgICAgb3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdO1xuICAgIH1cbiAgPlxuPiA9IHtcbiAgW0NsdXN0ZXJUeXBlLkF6dXJlQUtTXToge1xuICAgIGxhYmVsOiAnQUtTJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8vY2xvdWQtcHJvdmlkZXItYXp1cmUuc2lncy5rOHMuaW8vdG9waWNzL2xvYWRiYWxhbmNlci8jbG9hZGJhbGFuY2VyLWFubm90YXRpb25zJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F6dXJlLWxvYWQtYmFsYW5jZXItaW50ZXJuYWwnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHVzZSBvZiBpbnRyYW5ldC9wdWJsaWMgbmV0d29yaycsXG4gICAgICAgICAgemg6ICfmjIflrprkvb/nlKjlhoXnvZEv5YWs572RJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFRSVUUsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdJbnRyYW5ldCcsXG4gICAgICAgICAgICAgIHpoOiAn5YaF572RJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogRkFMU0UsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdQdWJsaWMgbmV0d29yaycsXG4gICAgICAgICAgICAgIHpoOiAn5YWs572RJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgW0NsdXN0ZXJUeXBlLkFtYXpvbkVLU106IHtcbiAgICBsYWJlbDogJ0VLUycsXG4gICAgZG9jTGluazpcbiAgICAgICdodHRwczovL2t1YmVybmV0ZXMtc2lncy5naXRodWIuaW8vYXdzLWxvYWQtYmFsYW5jZXItY29udHJvbGxlci92Mi41L2d1aWRlL3NlcnZpY2UvYW5ub3RhdGlvbnMvJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIExvYWRCYWxhbmNlciBTZXJ2aWNlIENvbnRyb2xsZXIgaW4gdXNlJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuaJgOS9v+eUqOeahCBMb2FkQmFsYW5jZXIg57G75Z6L5YaF6YOo6Lev55Sx5o6n5Yi25ZmoJyxcbiAgICAgICAgfSxcbiAgICAgICAgZG9jOiB7XG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0NvbnRyb2xsZXIgSW5zdGFsbGF0aW9uJyxcbiAgICAgICAgICAgIHpoOiAn5o6n5Yi25Zmo5a6J6KOFJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2R1Y3Q6ICdwbGF0Zm9ybScsXG4gICAgICAgICAgcGF0aDogJ3BsYXRmb3JtLXVzZXJtYW51YWwvY2x1c3RlcmFsbC8xY2x1c3Rlci9jbG91ZGluaXQvbmV0d29yazEvZWtzaW5ncmVzc2NvbnRyb2xsZXIvIzInLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1VzaW5nIHRoZSBvZmZpY2lhbCBBV1MgTG9hZEJhbGFuY2VyIENvbnRyb2xsZXInLFxuICAgICAgICAgICAgICB6aDogJ+S9v+eUqCBBV1Mg5a6Y5pa555qEIEFXUyBMb2FkQmFsYW5jZXIgQ29udHJvbGxlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1ubGItdGFyZ2V0LXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHdheSB0cmFmZmljIGlzIGRlbGl2ZXJlZCB0byB0aGUgcG9kcycsXG4gICAgICAgICAgemg6ICfmjIflrprmtYHph4/pgIHovr7lrrnlmajnu4TnmoTmlrnlvI8nLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2luc3RhbmNlJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1RyYWZmaWMgd2lsbCBiZSBzZW50IHRvIHRoZSBwb2RzIHZpYSBOb2RlUG9ydCcsXG4gICAgICAgICAgICAgIHpoOiAn5rWB6YeP5bCG6YCa6L+HIE5vZGVQb3J0IOmAgeW+gOWuueWZqOe7hCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpcCcsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdUcmFmZmljIGlzIGRpcmVjdGx5IHJvdXRlZCB0byB0aGUgcG9kcyAoQW1hem9uIFZQQyBDTkkgaXMgcmVxdWlyZWQgZm9yIHRoZSBjbHVzdGVyKScsXG4gICAgICAgICAgICAgIHpoOiAn5rWB6YeP55u05o6l6Lev55Sx5Yiw5a655Zmo57uE77yI6ZuG576k6ZyA5L2/55SoIEFtYXpvbiBWUEMgQ05J77yJJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXNjaGVtZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdXNlIG9mIGludHJhbmV0L3B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuS9v+eUqOWGhee9kS/lhaznvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0ludHJhbmV0JyxcbiAgICAgICAgICAgICAgemg6ICflhoXnvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW50ZXJuZXQtZmFjaW5nJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICAgICAgemg6ICflhaznvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItaXAtYWRkcmVzcy10eXBlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSBzdXBwb3J0ZWQgSVAgcHJvdG9jb2wgc3RhY2snLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5pSv5oyB55qEIElQIOWNj+iuruagiCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaXB2NCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2R1YWxzdGFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgW0NsdXN0ZXJUeXBlLkh1YXdlaUNsb3VkQ0NFXToge1xuICAgIGxhYmVsOiAnQ0NFJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC9lbi11cy91c2VybWFudWFsLWNjZS9jY2VfMTBfMDM4NS5odG1sJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmlkJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdQbGVhc2UgcHJvdmlkZSB0aGUgSUQgb2YgdGhlIGNsb3VkIExvYWRCYWxhbmNlciwgWW91IHNob3VsZCB1c2UgYW4gZXhpc3RpbmcgY2xvdWQgTG9hZEJhbGFuY2VyLicsXG4gICAgICAgICAgemg6ICfloavlhpnkupHkuIrotJ/ovb3lnYfooaHlmajnmoQgSUTvvIzpnIDkvb/nlKjlt7LmnInkupHkuIrotJ/ovb3lnYfooaHlmagnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuYXV0b2NyZWF0ZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnQ3JlYXRlIGEgbmV3IGNsb3VkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgemg6ICfmlrDliJvlu7rkupHkuIrotJ/ovb3lnYfooaHlmagnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGV4YW1wbGU6IGB7XCJ0eXBlXCI6XCJwdWJsaWNcIixcImJhbmR3aWR0aF9uYW1lXCI6XCJjY2UtYmFuZHdpZHRoLTE1NTExNjMzNzk2MjdcIixcImJhbmR3aWR0aF9jaGFyZ2Vtb2RlXCI6XCJiYW5kd2lkdGhcIixcImJhbmR3aWR0aF9zaXplXCI6NSxcImJhbmR3aWR0aF9zaGFyZXR5cGVcIjpcIlBFUlwiLFwiZWlwX3R5cGVcIjpcIjVfYmdwXCIsXCJhdmFpbGFibGVfem9uZVwiOltcImNuLW5vcnRoLTRiXCJdLFwibDRfZmxhdm9yX25hbWVcIjpcIkw0X2ZsYXZvci5lbGIuczEuc21hbGxcIn1gLFxuICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgZW46ICdGb3IgZXhhbXBsZToge3sgZXhhbXBsZSB9fScsXG4gICAgICAgICAgICB6aDogJ+S+i+Wmgu+8mnt7IGV4YW1wbGUgfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZG9jTGluazpcbiAgICAgICAgICAgICdodHRwczovL3N1cHBvcnQuaHVhd2VpY2xvdWQuY29tL2ludGwvZW4tdXMvdXNlcm1hbnVhbC1jY2UvY2NlXzEwXzAzODUuaHRtbCNzZWN0aW9uOCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5zdWJuZXQtaWQnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1N1Ym5ldCBJRCBvZiB0aGUgY2x1c3Rlciwgd2hpY2ggaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBjbG91ZCBMb2FkQmFsYW5jZXIgYW5kIEt1YmVybmV0ZXMgdmVyc2lvbiBpcyAxLjExLjctcjAgYW5kIGJlbG93LicsXG4gICAgICAgICAgemg6ICfpm4bnvqTmiYDlnKjlrZDnvZHnmoQgSUTvvIzlvZMgS3ViZXJuZXRlcyDniYjmnKzkuLogMS4xMS43LXIwIOWPiuS7peS4i++8jOaWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqOaXtuW/hemhu+Whq+WGmeatpOmhuScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5jbGFzcycsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdHlwZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjbG91ZCBMb2FkQmFsYW5jZXInLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5paw5Yib5bu655qE5LqR5LiK6LSf6L295Z2H6KGh5Zmo55qE57G75Z6LJyxcbiAgICAgICAgfSxcbiAgICAgICAgZG9jOiB7XG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0RpZmZlcmVuY2VzIEJldHdlZW4gRGVkaWNhdGVkIGFuZCBTaGFyZWQgTG9hZCBCYWxhbmNlcnMnLFxuICAgICAgICAgICAgemg6ICflhbHkuqvlnovlvLnmgKfotJ/ovb3lnYfooaHkuI7ni6zkuqvlnovotJ/ovb3lnYfooaHnmoTlip/og73ljLrliKsnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmF3VXJsOlxuICAgICAgICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC96aC1jbi9wcm9kdWN0ZGVzYy1lbGIvZWxiX3Byb18wMDA0Lmh0bWwnLFxuICAgICAgICAgIHRpcFByZWZpeDoge1xuICAgICAgICAgICAgZW46ICdGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gJyxcbiAgICAgICAgICAgIHpoOiAn6K+m5oOF6K+35Y+C6KeBJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ3VuaW9uJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1NoYXJlZCBMb2FkQmFsYW5jZXInLFxuICAgICAgICAgICAgICB6aDogJ+WFseS6q+Wei+i0n+i9veWdh+ihoScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdwZXJmb3JtYW5jZScsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdEZWRpY2F0ZWQgTG9hZEJhbGFuY2VyLCB3aGljaCBjYW4gYmUgdXNlZCBvbmx5IGluIGNsdXN0ZXJzIG9mIHYxLjE3IGFuZCBsYXRlcicsXG4gICAgICAgICAgICAgIHpoOiAn54us5Lqr5Z6L6LSf6L295Z2H6KGh77yM5LuF5pSv5oyB5ZyoIEt1YmVybmV0ZXMg54mI5pys5Li6IDEuMTcg5Y+K5Lul5LiK55qE6ZuG576k5Lit5L2/55SoJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmVudGVycHJpc2VJRCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgZW50ZXJwcmlzZSBwcm9qZWN0IHRvIHdoaWNoIHRoZSBuZXdseSBjcmVhdGVkIGNsb3VkIExvYWRCYWxhbmNlciB3aWxsIGJlbG9uZycsXG4gICAgICAgICAgemg6ICfmjIflrprmlrDliJvlu7rkupHkuIrotJ/ovb3lnYfooaHlmajmiYDlsZ7nmoTkvIHkuJrpobnnm64nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuR29vZ2xlQ2xvdWRHS0VdOiB7XG4gICAgbGFiZWw6ICdHS0UnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2t1YmVybmV0ZXMtZW5naW5lL2RvY3MvY29uY2VwdHMvc2VydmljZS1sb2FkLWJhbGFuY2VyLXBhcmFtZXRlcnMnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnbmV0d29ya2luZy5na2UuaW8vbG9hZC1iYWxhbmNlci10eXBlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB1c2Ugb2YgSW50cmFuZXQnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5L2/55So5YaF572RJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdJbnRlcm5hbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Nsb3VkLmdvb2dsZS5jb20vbDQtcmJzJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdUaGUgZGVmYXVsdCBpcyBwdWJsaWMgbmV0d29yaywgd2hlbiB0aGlzIHBhcmFtZXRlciBpcyBjb25maWd1cmVkLCB0cmFmZmljIHdpbGwgYmUgcm91dGVkIGRpcmVjdGx5IHRvIHRoZSBwb2RzJyxcbiAgICAgICAgICB6aDogJ+m7mOiupOS4uuWFrOe9ke+8jOmFjee9ruatpOWPguaVsOaXtu+8jOa1gemHj+WwhuebtOaOpei3r+eUseiHs+WuueWZqOe7hCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZW5hYmxlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Fubm90YXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gICAgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUsXG4gICAgQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUsXG4gICAgRXJyb3JzTWFwcGVyTW9kdWxlLFxuICAgIEhlbHBEb2N1bWVudE1vZHVsZSxcbiAgICBQdXJlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUFubm90YXRpb25zRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTdHJpbmdNYXBGb3JtQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaXNVcGRhdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY2x1c3RlclR5cGU6IENsdXN0ZXJUeXBlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBiYXNlSHJlZiA9IGluamVjdChUT0tFTl9CQVNFX0hSRUYpO1xuXG4gIC8vIOemgeeUqOaOieWMheWQqyBjcGFhcy5pbyDlj4ogb3ZuLmt1YmVybmV0ZXMuaW8g55qEIGtleVxuICByZWFkb25seSByZWFkb25seVBhcnRpYWxLZXlzID0gWydvdm4ua3ViZXJuZXRlcy5pbycsIHRoaXMuYmFzZURvbWFpbl07XG5cbiAgYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgPSBnZXRLOHNSZXNvdXJjZUFubm90YXRpb25FcnJvck1hcHBlciQoXG4gICAgdGhpcy50cmFuc2xhdGUsXG4gICk7XG5cbiAgS05PV05fQU5OT1RBVElPTlMgPSBLTk9XTl9BTk5PVEFUSU9OUztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChUT0tFTl9CQVNFX0RPTUFJTikgcHJpdmF0ZSByZWFkb25seSBiYXNlRG9tYWluOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMob3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdIHwgdW5kZWZpbmVkLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qga2V5cyA9ICh0aGlzLmZvcm0udmFsdWUgYXMgS2V5VmFsdWVUdXBsZVtdKS5tYXAoKFtrZXldKSA9PiBrZXkpO1xuICAgIHJldHVybiBvcHRpb25zPy5maWx0ZXIobyA9PiB7XG4gICAgICBjb25zdCBrZXlJbmRleCA9IGtleXMuaW5kZXhPZihvLmtleSk7XG4gICAgICByZXR1cm4ga2V5SW5kZXggPT09IC0xIHx8IGtleUluZGV4ID09PSBpbmRleDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ09wdGlvbihvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW10gfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQob3B0aW9uID0+IG9wdGlvbi5rZXkgPT09IGtleSk7XG4gIH1cblxuICBpc1JlYWRvbmx5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNVcGRhdGUgJiYgdGhpcy5yZWFkb25seVBhcnRpYWxLZXlzLnNvbWUoayA9PiBrZXkuaW5jbHVkZXMoaykpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBLZXlWYWx1ZVR1cGxlW10ge1xuICAgIHJldHVybiBbWycnLCAnJ11dO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiBTdHJpbmdNYXApIHtcbiAgICBsZXQgbmV3Rm9ybU1vZGVsID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2UgfHwge30pO1xuICAgIC8vIOaOkuW6j++8jOWFiOaMieWtl+avjeaOkuW6j++8jOWGjeaKiiByZWFkb25seSDnmoTmlL7liY3pnaJcbiAgICBuZXdGb3JtTW9kZWwgPSBzb3J0QnkobmV3Rm9ybU1vZGVsLCAoYXJyOiBbc3RyaW5nLCBzdHJpbmddKSA9PiBhcnJbMF0pO1xuICAgIG5ld0Zvcm1Nb2RlbC5zb3J0KChhcnIxOiBbc3RyaW5nLCBzdHJpbmddLCBhcnIyOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICBjb25zdCBmbGFnMSA9IHRoaXMuaXNSZWFkb25seShhcnIxWzBdKTtcbiAgICAgIGNvbnN0IGZsYWcyID0gdGhpcy5pc1JlYWRvbmx5KGFycjJbMF0pO1xuICAgICAgaWYgKChmbGFnMSAmJiBmbGFnMikgfHwgKCFmbGFnMSAmJiAhZmxhZzIpKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZsYWcxID8gLTEgOiAxO1xuICAgIH0pO1xuXG4gICAgaWYgKG5ld0Zvcm1Nb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIG5ld0Zvcm1Nb2RlbCA9IHRoaXMuZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdGb3JtTW9kZWw7XG4gIH1cblxuICBvdmVycmlkZSBnZXRLZXlWYWxpZGF0b3JzKCkge1xuICAgIHJldHVybiBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3I7XG4gIH1cblxuICBpc0xhYmVsUmVhZG9ubHkoY29udHJvbDogRm9ybUFycmF5PEZvcm1Db250cm9sPHN0cmluZz4+KSB7XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsaWQgJiYgdGhpcy5pc1JlYWRvbmx5KGNvbnRyb2wuZ2V0KCcwJykudmFsdWUpO1xuICB9XG5cbiAgZ2V0QWN0aXZlQ29uZmlnT3B0aW9uKFxuICAgIG9wdGlvbnM6IEFubm90YXRpb25Db25maWdPcHRpb25bXSB8IHVuZGVmaW5lZCxcbiAgICBrZXk6IHN0cmluZyxcbiAgKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQobyA9PiBvLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIG9uS2V5U2VsZWN0ZWQoY29udHJvbDogRm9ybUFycmF5PEZvcm1Db250cm9sPHN0cmluZz4+KSB7XG4gICAgY29uc3Qga2V5Q3RybCA9IGNvbnRyb2wuZ2V0KCcwJyk7XG4gICAga2V5Q3RybC5tYXJrQXNEaXJ0eSgpO1xuICAgIGtleUN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLy8gQW5ub3RhdGlvbkNvbmZpZ09wdGlvbi5kb2Mg6YWN572u5LqG5Lqn5ZOBIO+8iHByb2R1Y3TvvInlsZ7mgKfkuYvlkI7pnIDopoHlvZPliY3op4blm77pmrblsZ7kuo7or6Xkuqflk4Hml7bmiY3lsZXnpLogZG9jIOmTvuaOpe+8jOacqumFjee9rueahOivneS4jeWPl+mZkOWItlxuICBzaG93RG9jTGluayhiYXNlSHJlZjogc3RyaW5nLCBwcm9kdWN0Pzoga2V5b2YgdHlwZW9mIFBST0RVQ1RfQkFTRV9IUkVGX01BUCkge1xuICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFBST0RVQ1RfQkFTRV9IUkVGX01BUFtwcm9kdWN0XSA9PT0gYmFzZUhyZWY7XG4gIH1cbn1cbiIsIjxhY2wtYXJyYXktZm9ybS10YWJsZVxuICBbZm9ybUdyb3VwXT1cIiRhbnkoZm9ybSlcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbiAgKGFkZCk9XCJmb3JtLnB1c2goY3JlYXRlTmV3Q29udHJvbCgpKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlSGVhZGVyPlxuICAgIDx0aCBjbGFzcz1cImNvbHVtblwiPnt7ICdrZXknIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICA8dGggY2xhc3M9XCJjb2x1bW5cIj57eyAndmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cE5hbWVdPVwiaW5kZXhcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGNvbmZpZzogS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdLFxuICAgICAgICByZWFkb25seTogaXNMYWJlbFJlYWRvbmx5KGNvbnRyb2wpXG4gICAgICB9IGFzIF9cIlxuICAgID5cbiAgICAgIDx0ZCBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBbcmVhZG9ubHldPVwiXy5yZWFkb25seVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjBcIlxuICAgICAgICAgIFthdWlBdXRvY29tcGxldGVdPVwia2V5U3VnZ2VzdGlvblwiXG4gICAgICAgICAgKGF1aUF1dG9jb21wbGV0ZVNlbGVjdGVkKT1cIm9uS2V5U2VsZWN0ZWQoY29udHJvbClcIlxuICAgICAgICAvPlxuICAgICAgICA8YXVpLWF1dG9jb21wbGV0ZSAja2V5U3VnZ2VzdGlvbj5cbiAgICAgICAgICA8YXVpLXN1Z2dlc3Rpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIF8ucmVhZG9ubHlcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IGZpbHRlck9wdGlvbnMoXy5jb25maWc/Lm9wdGlvbnMsIGluZGV4KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ua2V5IH19XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLnRpcCB8IHRyYW5zbGF0ZSBhcyB0aXBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpcCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hdWktc3VnZ2VzdGlvbj5cbiAgICAgICAgPC9hdWktYXV0b2NvbXBsZXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgXy5jb25maWc/Lm9wdGlvbnNcbiAgICAgICAgICAgICAgfCBwdXJlOiBnZXRBY3RpdmVDb25maWdPcHRpb246Y29udHJvbC5nZXQoJzAnKS52YWx1ZVxuICAgICAgICAgICAgKT8uZG9jIGFzIGRvY1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImJhc2VIcmVmIHwgcHVyZTogc2hvd0RvY0xpbms6ZG9jLnByb2R1Y3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXMgdHctbXQtNFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvYy50aXBQcmVmaXhcIj5cbiAgICAgICAgICAgICAge3sgZG9jLnRpcFByZWZpeCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbYWNsRG9jc109XCJ7XG4gICAgICAgICAgICAgICAgcGF0aDogZG9jLnBhdGgsXG4gICAgICAgICAgICAgICAgcmF3VXJsOiBkb2MucmF3VXJsLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdwYWdlJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGRvYy50aXAgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtyZWFkb25seV09XCJfLnJlYWRvbmx5XCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMVwiXG4gICAgICAgICAgW2F1aUF1dG9jb21wbGV0ZV09XCJ2YWx1ZVN1Z2dlc3Rpb25cIlxuICAgICAgICAvPlxuICAgICAgICA8YXVpLWF1dG9jb21wbGV0ZSAjdmFsdWVTdWdnZXN0aW9uPlxuICAgICAgICAgIDxhdWktc3VnZ2VzdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgXy5yZWFkb25seVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogKFxuICAgICAgICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICB8IHB1cmU6IGdldENvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICAgICAgICApPy52YWx1ZXNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGlwIHwgdHJhbnNsYXRlIGFzIHRpcFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGlwIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F1aS1zdWdnZXN0aW9uPlxuICAgICAgICA8L2F1aS1hdXRvY29tcGxldGU+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldEFjdGl2ZUNvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICApPy52YWx1ZSBhcyB2YWx1ZUNvbmZpZ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLmdldCgnMScpLnZhbHVlID09PSB2YWx1ZUNvbmZpZy5leGFtcGxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC15ZWxsb3cgdHctbXQtNFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3JlYWRfZmlsbGluZ19pbnN0cnVjdGlvbnNfdGlwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1icmVhay1hbGwgdHctbXktNFwiPlxuICAgICAgICAgICAge3sgdmFsdWVDb25maWcudGlwIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IHZhbHVlQ29uZmlnLmV4YW1wbGUgfSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1wcmltYXJ5IHR3LWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X3R1cm5fdXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbC5nZXQoJzEnKS5zZXRWYWx1ZSh2YWx1ZUNvbmZpZy5leGFtcGxlKVwiXG4gICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW2hyZWZdPVwidmFsdWVDb25maWcuZG9jTGlua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZpbGxpbmdfaW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCcwJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCIoYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgfCBhc3luYykua2V5XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgnMScpLmVycm9yc1wiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgaXRlbTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNMYWJlbFJlYWRvbmx5KGl0ZW0pXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaW5kZXgpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48ZGl2XG4gICpuZ0lmPVwiS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdIGFzIGNvbmZpZ1wiXG4gIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zIHR3LW10LTRcIlxuPlxuICA8bmctY29udGFpbmVyIFthY2xUcmFuc2xhdGVdPVwiJ2RvY3VtZW50YXRpb25fZm9yX2xiX3NlcnZpY2VfYW5ub3RhdGlvbnMnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsVHJhbnNsYXRlVGV4dD1cImxldCB0ZXh0XCI+e3sgdGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmFjbFRyYW5zbGF0ZU1hdGNoPVwiJ3R5cGUnXCI+e3sgY29uZmlnLmxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gICAgPGFcbiAgICAgICphY2xUcmFuc2xhdGVNYXRjaD1cIidkb2N1bWVudGF0aW9uJ1wiXG4gICAgICBbaHJlZl09XCJjb25maWcuZG9jTGlua1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAge3sgJ2RvY3VtZW50YXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPiA8L2FcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
674
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceAnnotationsFormComponent, { className: "ServiceAnnotationsFormComponent", filePath: "lib/components/service-annotations-form/annotations.component.ts", lineNumber: 343 }); })();
675
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUVSLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsSUFBSSxFQUVKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsb0NBQW9DLEVBQ3BDLGlDQUFpQyxHQUNsQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7SUNqQ3hELDZCQUF1QztJQUNyQyw2QkFBbUI7SUFBQSxZQUF1Qjs7SUFBQSxpQkFBSztJQUMvQyw2QkFBbUI7SUFBQSxZQUF5Qjs7SUFBQSxpQkFBSzs7O0lBRDlCLGVBQXVCO0lBQXZCLGlEQUF1QjtJQUN2QixlQUF5QjtJQUF6QixtREFBeUI7OztJQWdDcEMsK0JBR0M7SUFDQyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSx1Q0FDRjs7O0lBZEYsMENBT0M7SUFDQyxZQUNBO0lBQUEsZ0lBR0M7O0lBR0gsaUJBQWlCOzs7SUFUZixxQ0FBb0I7SUFFcEIsY0FDQTtJQURBLDhDQUNBO0lBQ0csY0FBNkI7SUFBN0IsMERBQTZCOzs7SUFtQmhDLDZCQUFvQztJQUNsQyxZQUNGOzs7OztJQURFLGNBQ0Y7SUFERSx1RUFDRjs7O0lBTkYsK0JBR0M7SUFDQyxzSkFBb0M7SUFHcEMsNkJBTUM7SUFDQyxZQUNBOztJQUFBLCtCQUFpQztJQUVyQyxBQURFLGlCQUFJLEVBQ0E7OztJQWJXLGNBQW1CO0lBQW5CLHVDQUFtQjtJQUloQyxjQUlFO0lBSkYsZ0ZBSUU7SUFFRixjQUNBO0lBREEsaUVBQ0E7OztJQXZCTiw2QkFPQztJQUNDLDZIQUdDOzs7Ozs7SUFGRSxjQUE4QztJQUE5QyxnR0FBOEM7OztJQXdDL0MsK0JBR0M7SUFDQyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSx1Q0FDRjs7O0lBakJGLDBDQVVDO0lBQ0MsWUFDQTtJQUFBLGlJQUdDOztJQUdILGlCQUFpQjs7O0lBVGYsdUNBQXNCO0lBRXRCLGNBQ0E7SUFEQSxnREFDQTtJQUNHLGNBQTZCO0lBQTdCLDBEQUE2Qjs7O0lBZ0JsQywrQkFHQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLDhGQUNGOzs7O0lBZEYsK0JBUUM7SUFDQyxzSEFHQztJQUdELCtCQUFrQztJQUNoQyxZQUNBOztJQUFBLG9DQUlDO0lBREMsd1FBQVMsZUFBWSxHQUFHLENBQUMsa0NBQThCLEtBQUM7SUFFNUQsQUFERyxpQkFBVyxFQUNSO0lBQ04sNkJBSUM7SUFDQyxZQUNBOztJQUFBLCtCQUFpQztJQUVyQyxBQURFLGlCQUFJLEVBQ0E7Ozs7SUFyQkQsY0FBb0Q7SUFBcEQsNEVBQW9EO0lBTXJELGVBQ0E7SUFEQSwrSEFDQTtJQU9BLGVBQTRCO0lBQTVCLGdFQUE0QjtJQUk1QixjQUNBO0lBREEscUZBQ0E7Ozs7SUF2SFIsNkJBS0M7SUFFRyxBQURGLDZCQUFtQixnQkFRZjtJQURBLEFBSEEsaU5BQVEsZUFBUSxLQUFDLDBSQUdVLGdDQUFzQixLQUFDO0lBTnBELGlCQU9FO0lBQ0YsaURBQWlDO0lBQy9CLHFJQU9DO0lBU0gsaUJBQW1CO0lBQ25CLGlJQU9DOztJQW9CSCxpQkFBSztJQUVILEFBREYsNkJBQW1CLGdCQU9mO0lBSEEsaU5BQVEsZUFBUSxLQUFDO0lBSG5CLGlCQU1FO0lBQ0Ysa0RBQW1DO0lBQ2pDLHVJQVVDOztJQVNILGlCQUFtQjtJQUNuQixtSEFRQzs7SUF3QkgsaUJBQUs7Ozs7Ozs7Ozs7Ozs7SUFqSEQsZUFBdUI7SUFHdkIsQUFIQSx5Q0FBdUIsc0NBR1U7SUFPMUMsZUFHRDtJQUhDLHFJQUdEO0lBWVcsY0FLTDtJQUxLLG1NQUtMO0lBeUJJLGVBQXVCO0lBR3ZCLEFBSEEseUNBQXVCLHdDQUdZO0lBTTVDLGVBTUQ7SUFOQyw2TkFNRDtJQVlXLGVBSXVCO0lBSnZCLHVNQUl1Qjs7O0lBbkdoQyxnQ0FHQztJQUNDLG9IQUtDOzs7Ozs7SUFQRCx5Q0FBdUI7SUFHcEIsY0FHQztJQUhELG1JQUdDOzs7SUFnSUYsNkJBQW1EO0lBQ2pELFlBQ0Y7Ozs7SUFERSxjQUNGO0lBREUsd0ZBQ0Y7OztJQUVBLDZCQUFxRDtJQUNuRCxZQUNGOzs7O0lBREUsY0FDRjtJQURFLDBGQUNGOzs7SUFYRiw4QkFJQztJQUtDLEFBSkEsdUhBQW1ELDBHQUlFO0lBSXJELHdDQUlxQjs7SUFDckIsd0NBR3FCO0lBQ3ZCLGlCQUFLOzs7O0lBakJZLGNBQWtDO0lBQWxDLDBGQUFrQztJQUlsQyxjQUFvQztJQUFwQyw0RkFBb0M7SUFNakQsY0FBa0M7SUFDbEMsQUFEQSxvREFBa0MsMEVBQ29CO0lBSXRELGVBQWtDO0lBQWxDLG9EQUFrQzs7O0lBckJ4Qyw2QkFBdUQ7SUFDckQsOEZBSUM7Ozs7SUFIRSxjQUFxQjtJQUFyQiwwQ0FBcUI7Ozs7SUF3QjFCLDZCQUF5RTtJQUN2RSxrQ0FPQztJQURDLDZOQUFTLHdCQUFhLEtBQUM7SUFFdkIsK0JBQXlDO0lBQzNDLGlCQUFTOzs7OztJQU5QLGNBQWU7SUFFZixBQURBLEFBREEsNkJBQWUsZUFDRCw4Q0FDb0I7OztJQWVwQyw2QkFBMkM7SUFBQSxZQUFVOzs7O0lBQVYsY0FBVTtJQUFWLDhCQUFVOzs7SUFDckQsNkJBQTBDO0lBQUEsWUFBa0I7Ozs7SUFBbEIsY0FBa0I7SUFBbEIsc0NBQWtCOzs7SUFDNUQsNkJBS0M7SUFDQyxZQUNBOztJQUFBLCtCQUFpQztJQUFDLGlCQUNyQzs7O0lBTkcsMkRBQXVCO0lBSXZCLGNBQ0E7SUFEQSxzRUFDQTs7O0lBZE4sK0JBR0M7SUFDQyxpQ0FBMEU7SUFHeEUsQUFEQSxBQURBLHlHQUEyQyw0RkFDRCxzRUFNekM7O0lBSUwsaUJBQU07O0lBWlUsY0FBMkQ7SUFBM0QseUVBQTJEO0lBRXhELGVBQXlCO0lBQXpCLDBDQUF5QjtJQUVyQyxjQUFrQztJQUFsQyxtREFBa0M7O0FEdEp6QyxJQUFLLHFCQU9KO0FBUEQsV0FBSyxxQkFBcUI7SUFDeEIsb0RBQTJCLENBQUE7SUFDM0IsOENBQXFCLENBQUE7SUFDckIsOENBQXFCLENBQUE7SUFDckIsZ0VBQXVDLENBQUE7SUFDdkMsOENBQXFCLENBQUE7SUFDckIsd0RBQStCLENBQUE7QUFDakMsQ0FBQyxFQVBJLHFCQUFxQixLQUFyQixxQkFBcUIsUUFPekI7QUF1QkQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBUzFCO0lBQ0YsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDdEIsS0FBSyxFQUFFLEtBQUs7UUFDWixPQUFPLEVBQ0wsd0ZBQXdGO1FBQzFGLE9BQU8sRUFBRTtZQUNQO2dCQUNFLEdBQUcsRUFBRSx5REFBeUQ7Z0JBQzlELEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsNENBQTRDO29CQUNoRCxFQUFFLEVBQUUsV0FBVztpQkFDaEI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUsVUFBVTs0QkFDZCxFQUFFLEVBQUUsSUFBSTt5QkFDVDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsS0FBSzt3QkFDWixHQUFHLEVBQUU7NEJBQ0gsRUFBRSxFQUFFLGdCQUFnQjs0QkFDcEIsRUFBRSxFQUFFLElBQUk7eUJBQ1Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN2QixLQUFLLEVBQUUsS0FBSztRQUNaLE9BQU8sRUFDTCxnR0FBZ0c7UUFDbEcsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsR0FBRyxFQUFFLG1EQUFtRDtnQkFDeEQsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSxvREFBb0Q7b0JBQ3hELEVBQUUsRUFBRSwrQkFBK0I7aUJBQ3BDO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUU7d0JBQ0gsRUFBRSxFQUFFLHlCQUF5Qjt3QkFDN0IsRUFBRSxFQUFFLE9BQU87cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFLFVBQVU7b0JBQ25CLElBQUksRUFBRSxvRkFBb0Y7aUJBQzNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTt3QkFDakIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSxnREFBZ0Q7NEJBQ3BELEVBQUUsRUFBRSx3Q0FBd0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsOERBQThEO2dCQUNuRSxHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLGtEQUFrRDtvQkFDdEQsRUFBRSxFQUFFLGNBQWM7aUJBQ25CO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTt3QkFDakIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSwrQ0FBK0M7NEJBQ25ELEVBQUUsRUFBRSxzQkFBc0I7eUJBQzNCO3FCQUNGO29CQUNEO3dCQUNFLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUscUZBQXFGOzRCQUN6RixFQUFFLEVBQUUsa0NBQWtDO3lCQUN2QztxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLHFEQUFxRDtnQkFDMUQsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSw0Q0FBNEM7b0JBQ2hELEVBQUUsRUFBRSxXQUFXO2lCQUNoQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsS0FBSyxFQUFFLFVBQVU7d0JBQ2pCLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUsVUFBVTs0QkFDZCxFQUFFLEVBQUUsSUFBSTt5QkFDVDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixHQUFHLEVBQUU7NEJBQ0gsRUFBRSxFQUFFLGdCQUFnQjs0QkFDcEIsRUFBRSxFQUFFLElBQUk7eUJBQ1Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSw4REFBOEQ7Z0JBQ25FLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUseUNBQXlDO29CQUM3QyxFQUFFLEVBQUUsY0FBYztpQkFDbkI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxNQUFNO3FCQUNkO29CQUNEO3dCQUNFLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjthQUNGO1NBQ0Y7S0FDRjtJQUNELENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQzVCLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUNMLDRFQUE0RTtRQUM5RSxPQUFPLEVBQUU7WUFDUDtnQkFDRSxHQUFHLEVBQUUsc0JBQXNCO2dCQUMzQixHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLGlHQUFpRztvQkFDckcsRUFBRSxFQUFFLDRCQUE0QjtpQkFDakM7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSw4QkFBOEI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsaUNBQWlDO29CQUNyQyxFQUFFLEVBQUUsWUFBWTtpQkFDakI7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE9BQU8sRUFBRSxrUEFBa1A7b0JBQzNQLEdBQUcsRUFBRTt3QkFDSCxFQUFFLEVBQUUsNEJBQTRCO3dCQUNoQyxFQUFFLEVBQUUsa0JBQWtCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQ0wscUZBQXFGO2lCQUN4RjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLDZCQUE2QjtnQkFDbEMsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSxtSUFBbUk7b0JBQ3ZJLEVBQUUsRUFBRSw2REFBNkQ7aUJBQ2xFO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUseUJBQXlCO2dCQUM5QixHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLDBEQUEwRDtvQkFDOUQsRUFBRSxFQUFFLGtCQUFrQjtpQkFDdkI7Z0JBQ0QsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRTt3QkFDSCxFQUFFLEVBQUUseURBQXlEO3dCQUM3RCxFQUFFLEVBQUUsd0JBQXdCO3FCQUM3QjtvQkFDRCxNQUFNLEVBQ0osOEVBQThFO29CQUNoRixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxFQUFFLG9DQUFvQzt3QkFDeEMsRUFBRSxFQUFFLE9BQU87cUJBQ1o7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLEtBQUssRUFBRSxPQUFPO3dCQUNkLEdBQUcsRUFBRTs0QkFDSCxFQUFFLEVBQUUscUJBQXFCOzRCQUN6QixFQUFFLEVBQUUsU0FBUzt5QkFDZDtxQkFDRjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsR0FBRyxFQUFFOzRCQUNILEVBQUUsRUFBRSwrRUFBK0U7NEJBQ25GLEVBQUUsRUFBRSw0Q0FBNEM7eUJBQ2pEO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsZ0NBQWdDO2dCQUNyQyxHQUFHLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLDBGQUEwRjtvQkFDOUYsRUFBRSxFQUFFLHFCQUFxQjtpQkFDMUI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUM1QixLQUFLLEVBQUUsS0FBSztRQUNaLE9BQU8sRUFDTCwyRkFBMkY7UUFDN0YsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsR0FBRyxFQUFFLHNDQUFzQztnQkFDM0MsR0FBRyxFQUFFO29CQUNILEVBQUUsRUFBRSw2QkFBNkI7b0JBQ2pDLEVBQUUsRUFBRSxRQUFRO2lCQUNiO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxLQUFLLEVBQUUsVUFBVTtxQkFDbEI7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSx5QkFBeUI7Z0JBQzlCLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsK0dBQStHO29CQUNuSCxFQUFFLEVBQUUsMEJBQTBCO2lCQUMvQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsS0FBSyxFQUFFLFNBQVM7cUJBQ2pCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQTRCRixNQUFNLE9BQU8sK0JBQWdDLFNBQVEsMEJBQTBCO0lBdUI3RSxZQUNFLFFBQWtCLEVBQzBCLFVBQWtCO1FBRTlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUY0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBZi9DLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXRELDJDQUEyQztRQUNsQyx3QkFBbUIsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0RSw0QkFBdUIsR0FBRyxvQ0FBb0MsQ0FDNUQsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFPdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUE2QyxFQUFFLEtBQWE7UUFDeEUsTUFBTSxJQUFJLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUE2QyxFQUFFLEdBQVc7UUFDeEUsT0FBTyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVRLG1CQUFtQjtRQUMxQixPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVEsa0JBQWtCLENBQUMsUUFBbUI7UUFDN0MsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQTZCO1FBQzdCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBcUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQXNCLEVBQUUsSUFBc0IsRUFBRSxFQUFFO1lBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFUSxnQkFBZ0I7UUFDdkIsT0FBTyxpQ0FBaUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQXVDO1FBQ3JELE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUNuQixPQUE2QyxFQUM3QyxHQUFXO1FBRVgsT0FBTyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQXVDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsT0FBNEM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDckQsQ0FBQztnR0FsR1UsK0JBQStCLDBEQXlCaEMsaUJBQWlCO29FQXpCaEIsK0JBQStCOztZQ3RWNUMsK0NBTUM7WUFGQyxBQURBLHNIQUFPLGNBQVUsc0JBQWtCLENBQUMsSUFBQyxxSEFDM0Isa0JBQWMsSUFBQztZQW9LekIsQUExQkEsQUFsSUEsQUFMQSxrR0FBdUMscUZBUXRDLHFGQStIc0QscUZBMEJrQjtZQVkzRSxpQkFBdUI7WUFFdkIsa0JBQXlCO1lBRXpCLGdGQUdDOztZQXRMQyxBQUhBLEFBREEsb0NBQXdCLDJCQUNGLGtDQUdPO1lBb0w1QixlQUFxQztZQUFyQyw2REFBcUM7NEJEMElwQyxTQUFTO1lBQ1QsSUFBSTtZQUNKLE9BQU87WUFDUCxtQkFBbUIscUlBQ25CLGtCQUFrQiw4RUFDbEIsWUFBWSxzQkFDWixVQUFVLG9CQUNWLFdBQVcscUJBQ1gsdUJBQXVCO1lBQ3ZCLDZCQUE2QjtZQUM3QiwwQkFBMEI7WUFDMUIsaUNBQWlDO1lBQ2pDLCtCQUErQiw0SEFHL0Isa0JBQWtCLG9CQUNsQixRQUFROztpRkFHQywrQkFBK0I7Y0ExQjNDLFNBQVM7MkJBQ0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDtvQkFDUCxTQUFTO29CQUNULElBQUk7b0JBQ0osT0FBTztvQkFDUCxtQkFBbUI7b0JBQ25CLGtCQUFrQjtvQkFDbEIsWUFBWTtvQkFDWixVQUFVO29CQUNWLFdBQVc7b0JBQ1gsdUJBQXVCO29CQUN2Qiw2QkFBNkI7b0JBQzdCLDBCQUEwQjtvQkFDMUIsaUNBQWlDO29CQUNqQywrQkFBK0I7b0JBQy9CLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixrQkFBa0I7b0JBQ2xCLFFBQVE7aUJBQ1Q7O3NCQTJCRSxNQUFNO3VCQUFDLGlCQUFpQjtxQkF2QjNCLFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixZQUFZO2tCQURYLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOztrRkFQZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRvY29tcGxldGVNb2R1bGUsXG4gIEJ1dHRvbk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gIEFycmF5Rm9ybVRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2xEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlUm93RGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLFxuICBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudCxcbiAgS2V5VmFsdWVUdXBsZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIEZBTFNFLFxuICBIZWxwRG9jdW1lbnRNb2R1bGUsXG4gIFB1cmVQaXBlLFxuICBTdHJpbmdNYXAsXG4gIFRPS0VOX0JBU0VfRE9NQUlOLFxuICBUT0tFTl9CQVNFX0hSRUYsXG4gIFRSVUUsXG4gIFRyYW5zbGF0ZUtleSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3IsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NsdXN0ZXItZXhwb3J0cyc7XG5cbmVudW0gUFJPRFVDVF9CQVNFX0hSRUZfTUFQIHtcbiAgZGV2b3BzID0gJy9jb25zb2xlLWRldm9wcy8nLFxuICBhY3AgPSAnL2NvbnNvbGUtYWNwLycsXG4gIGFzbSA9ICcvY29uc29sZS1hc20vJyxcbiAgZGF0YXNlcnZpY2VzID0gJy9jb25zb2xlLWRhdGFzZXJ2aWNlcy8nLFxuICBjZWMgPSAnL2NvbnNvbGUtY2VjLycsXG4gIHBsYXRmb3JtID0gJy9jb25zb2xlLXBsYXRmb3JtLycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkNvbmZpZ09wdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICB0aXA6IFRyYW5zbGF0ZUtleTtcbiAgZG9jPzoge1xuICAgIHRpcDogVHJhbnNsYXRlS2V5O1xuICAgIHRpcFByZWZpeD86IFRyYW5zbGF0ZUtleTtcbiAgICBwYXRoPzogc3RyaW5nOyAvLyDmoIflh4bmlofmoaPpk77mjqUsIOWvueW6lCBEb2NzT3B0aW9uLnBhdGhcbiAgICByYXdVcmw/OiBzdHJpbmc7IC8vIOmdnuagh+WHhuaWh+aho+mTvuaOpSwg5a+55bqUIERvY3NPcHRpb24ucmF3VXJsXG4gICAgcHJvZHVjdD86IGtleW9mIHR5cGVvZiBQUk9EVUNUX0JBU0VfSFJFRl9NQVA7XG4gIH07XG4gIHZhbHVlPzoge1xuICAgIGV4YW1wbGU6IHN0cmluZztcbiAgICB0aXA6IFRyYW5zbGF0ZUtleTtcbiAgICBkb2NMaW5rOiBzdHJpbmc7XG4gIH07XG4gIHZhbHVlcz86IEFycmF5PHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHRpcD86IFRyYW5zbGF0ZUtleTtcbiAgfT47XG59XG5cbmV4cG9ydCBjb25zdCBLTk9XTl9BTk5PVEFUSU9OUzogUGFydGlhbDxcbiAgUmVjb3JkPFxuICAgIENsdXN0ZXJUeXBlLFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBkb2NMaW5rOiBzdHJpbmc7XG4gICAgICBvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW107XG4gICAgfVxuICA+XG4+ID0ge1xuICBbQ2x1c3RlclR5cGUuQXp1cmVBS1NdOiB7XG4gICAgbGFiZWw6ICdBS1MnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9jbG91ZC1wcm92aWRlci1henVyZS5zaWdzLms4cy5pby90b3BpY3MvbG9hZGJhbGFuY2VyLyNsb2FkYmFsYW5jZXItYW5ub3RhdGlvbnMnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXp1cmUtbG9hZC1iYWxhbmNlci1pbnRlcm5hbCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdXNlIG9mIGludHJhbmV0L3B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuS9v+eUqOWGhee9kS/lhaznvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogVFJVRSxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0ludHJhbmV0JyxcbiAgICAgICAgICAgICAgemg6ICflhoXnvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBGQUxTRSxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICAgICAgemg6ICflhaznvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuQW1hem9uRUtTXToge1xuICAgIGxhYmVsOiAnRUtTJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8va3ViZXJuZXRlcy1zaWdzLmdpdGh1Yi5pby9hd3MtbG9hZC1iYWxhbmNlci1jb250cm9sbGVyL3YyLjUvZ3VpZGUvc2VydmljZS9hbm5vdGF0aW9ucy8nLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgTG9hZEJhbGFuY2VyIFNlcnZpY2UgQ29udHJvbGxlciBpbiB1c2UnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5omA5L2/55So55qEIExvYWRCYWxhbmNlciDnsbvlnovlhoXpg6jot6/nlLHmjqfliLblmagnLFxuICAgICAgICB9LFxuICAgICAgICBkb2M6IHtcbiAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgIGVuOiAnQ29udHJvbGxlciBJbnN0YWxsYXRpb24nLFxuICAgICAgICAgICAgemg6ICfmjqfliLblmajlronoo4UnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvZHVjdDogJ3BsYXRmb3JtJyxcbiAgICAgICAgICBwYXRoOiAncGxhdGZvcm0tdXNlcm1hbnVhbC9jbHVzdGVyYWxsLzFjbHVzdGVyL2Nsb3VkaW5pdC9uZXR3b3JrMS9la3NpbmdyZXNzY29udHJvbGxlci8jMicsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnVXNpbmcgdGhlIG9mZmljaWFsIEFXUyBMb2FkQmFsYW5jZXIgQ29udHJvbGxlcicsXG4gICAgICAgICAgICAgIHpoOiAn5L2/55SoIEFXUyDlrpjmlrnnmoQgQVdTIExvYWRCYWxhbmNlciBDb250cm9sbGVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLW5sYi10YXJnZXQtdHlwZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgd2F5IHRyYWZmaWMgaXMgZGVsaXZlcmVkIHRvIHRoZSBwb2RzJyxcbiAgICAgICAgICB6aDogJ+aMh+Wumua1gemHj+mAgei+vuWuueWZqOe7hOeahOaWueW8jycsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW5zdGFuY2UnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnVHJhZmZpYyB3aWxsIGJlIHNlbnQgdG8gdGhlIHBvZHMgdmlhIE5vZGVQb3J0JyxcbiAgICAgICAgICAgICAgemg6ICfmtYHph4/lsIbpgJrov4cgTm9kZVBvcnQg6YCB5b6A5a655Zmo57uEJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2lwJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1RyYWZmaWMgaXMgZGlyZWN0bHkgcm91dGVkIHRvIHRoZSBwb2RzIChBbWF6b24gVlBDIENOSSBpcyByZXF1aXJlZCBmb3IgdGhlIGNsdXN0ZXIpJyxcbiAgICAgICAgICAgICAgemg6ICfmtYHph4/nm7TmjqXot6/nlLHliLDlrrnlmajnu4TvvIjpm4bnvqTpnIDkvb/nlKggQW1hem9uIFZQQyBDTknvvIknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItc2NoZW1lJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB1c2Ugb2YgaW50cmFuZXQvcHVibGljIG5ldHdvcmsnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5L2/55So5YaF572RL+WFrOe9kScsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnSW50cmFuZXQnLFxuICAgICAgICAgICAgICB6aDogJ+WGhee9kScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpbnRlcm5ldC1mYWNpbmcnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnUHVibGljIG5ldHdvcmsnLFxuICAgICAgICAgICAgICB6aDogJ+WFrOe9kScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1pcC1hZGRyZXNzLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHN1cHBvcnRlZCBJUCBwcm90b2NvbCBzdGFjaycsXG4gICAgICAgICAgemg6ICfmjIflrprmlK/mjIHnmoQgSVAg5Y2P6K6u5qCIJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpcHY0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZHVhbHN0YWNrJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuSHVhd2VpQ2xvdWRDQ0VdOiB7XG4gICAgbGFiZWw6ICdDQ0UnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9zdXBwb3J0Lmh1YXdlaWNsb3VkLmNvbS9pbnRsL2VuLXVzL3VzZXJtYW51YWwtY2NlL2NjZV8xMF8wMzg1Lmh0bWwnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuaWQnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1BsZWFzZSBwcm92aWRlIHRoZSBJRCBvZiB0aGUgY2xvdWQgTG9hZEJhbGFuY2VyLCBZb3Ugc2hvdWxkIHVzZSBhbiBleGlzdGluZyBjbG91ZCBMb2FkQmFsYW5jZXIuJyxcbiAgICAgICAgICB6aDogJ+Whq+WGmeS6keS4iui0n+i9veWdh+ihoeWZqOeahCBJRO+8jOmcgOS9v+eUqOW3suacieS6keS4iui0n+i9veWdh+ihoeWZqCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5hdXRvY3JlYXRlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdDcmVhdGUgYSBuZXcgY2xvdWQgTG9hZEJhbGFuY2VyJyxcbiAgICAgICAgICB6aDogJ+aWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZXhhbXBsZTogYHtcInR5cGVcIjpcInB1YmxpY1wiLFwiYmFuZHdpZHRoX25hbWVcIjpcImNjZS1iYW5kd2lkdGgtMTU1MTE2MzM3OTYyN1wiLFwiYmFuZHdpZHRoX2NoYXJnZW1vZGVcIjpcImJhbmR3aWR0aFwiLFwiYmFuZHdpZHRoX3NpemVcIjo1LFwiYmFuZHdpZHRoX3NoYXJldHlwZVwiOlwiUEVSXCIsXCJlaXBfdHlwZVwiOlwiNV9iZ3BcIixcImF2YWlsYWJsZV96b25lXCI6W1wiY24tbm9ydGgtNGJcIl0sXCJsNF9mbGF2b3JfbmFtZVwiOlwiTDRfZmxhdm9yLmVsYi5zMS5zbWFsbFwifWAsXG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0ZvciBleGFtcGxlOiB7eyBleGFtcGxlIH19JyxcbiAgICAgICAgICAgIHpoOiAn5L6L5aaC77yae3sgZXhhbXBsZSB9fScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkb2NMaW5rOlxuICAgICAgICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC9lbi11cy91c2VybWFudWFsLWNjZS9jY2VfMTBfMDM4NS5odG1sI3NlY3Rpb244JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLnN1Ym5ldC1pZCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3VibmV0IElEIG9mIHRoZSBjbHVzdGVyLCB3aGljaCBpcyByZXF1aXJlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGNsb3VkIExvYWRCYWxhbmNlciBhbmQgS3ViZXJuZXRlcyB2ZXJzaW9uIGlzIDEuMTEuNy1yMCBhbmQgYmVsb3cuJyxcbiAgICAgICAgICB6aDogJ+mbhue+pOaJgOWcqOWtkOe9keeahCBJRO+8jOW9kyBLdWJlcm5ldGVzIOeJiOacrOS4uiAxLjExLjctcjAg5Y+K5Lul5LiL77yM5paw5Yib5bu65LqR5LiK6LSf6L295Z2H6KGh5Zmo5pe25b+F6aG75aGr5YaZ5q2k6aG5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmNsYXNzJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB0eXBlIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNsb3VkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgemg6ICfmjIflrprmlrDliJvlu7rnmoTkupHkuIrotJ/ovb3lnYfooaHlmajnmoTnsbvlnosnLFxuICAgICAgICB9LFxuICAgICAgICBkb2M6IHtcbiAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgIGVuOiAnRGlmZmVyZW5jZXMgQmV0d2VlbiBEZWRpY2F0ZWQgYW5kIFNoYXJlZCBMb2FkIEJhbGFuY2VycycsXG4gICAgICAgICAgICB6aDogJ+WFseS6q+Wei+W8ueaAp+i0n+i9veWdh+ihoeS4jueLrOS6q+Wei+i0n+i9veWdh+ihoeeahOWKn+iDveWMuuWIqycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByYXdVcmw6XG4gICAgICAgICAgICAnaHR0cHM6Ly9zdXBwb3J0Lmh1YXdlaWNsb3VkLmNvbS9pbnRsL3poLWNuL3Byb2R1Y3RkZXNjLWVsYi9lbGJfcHJvXzAwMDQuaHRtbCcsXG4gICAgICAgICAgdGlwUHJlZml4OiB7XG4gICAgICAgICAgICBlbjogJ0ZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byAnLFxuICAgICAgICAgICAgemg6ICfor6bmg4Xor7flj4Lop4EnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAndW5pb24nLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnU2hhcmVkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgICAgIHpoOiAn5YWx5Lqr5Z6L6LSf6L295Z2H6KGhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ3BlcmZvcm1hbmNlJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0RlZGljYXRlZCBMb2FkQmFsYW5jZXIsIHdoaWNoIGNhbiBiZSB1c2VkIG9ubHkgaW4gY2x1c3RlcnMgb2YgdjEuMTcgYW5kIGxhdGVyJyxcbiAgICAgICAgICAgICAgemg6ICfni6zkuqvlnovotJ/ovb3lnYfooaHvvIzku4XmlK/mjIHlnKggS3ViZXJuZXRlcyDniYjmnKzkuLogMS4xNyDlj4rku6XkuIrnmoTpm4bnvqTkuK3kvb/nlKgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuZW50ZXJwcmlzZUlEJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSBlbnRlcnByaXNlIHByb2plY3QgdG8gd2hpY2ggdGhlIG5ld2x5IGNyZWF0ZWQgY2xvdWQgTG9hZEJhbGFuY2VyIHdpbGwgYmVsb25nJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuaWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqOaJgOWxnueahOS8geS4mumhueebricsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIFtDbHVzdGVyVHlwZS5Hb29nbGVDbG91ZEdLRV06IHtcbiAgICBsYWJlbDogJ0dLRScsXG4gICAgZG9jTGluazpcbiAgICAgICdodHRwczovL2Nsb3VkLmdvb2dsZS5jb20va3ViZXJuZXRlcy1lbmdpbmUvZG9jcy9jb25jZXB0cy9zZXJ2aWNlLWxvYWQtYmFsYW5jZXItcGFyYW1ldGVycycsXG4gICAgb3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6ICduZXR3b3JraW5nLmdrZS5pby9sb2FkLWJhbGFuY2VyLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHVzZSBvZiBJbnRyYW5ldCcsXG4gICAgICAgICAgemg6ICfmjIflrprkvb/nlKjlhoXnvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ0ludGVybmFsJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnY2xvdWQuZ29vZ2xlLmNvbS9sNC1yYnMnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1RoZSBkZWZhdWx0IGlzIHB1YmxpYyBuZXR3b3JrLCB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGNvbmZpZ3VyZWQsIHRyYWZmaWMgd2lsbCBiZSByb3V0ZWQgZGlyZWN0bHkgdG8gdGhlIHBvZHMnLFxuICAgICAgICAgIHpoOiAn6buY6K6k5Li65YWs572R77yM6YWN572u5q2k5Y+C5pWw5pe277yM5rWB6YeP5bCG55u05o6l6Lev55Sx6Iez5a655Zmo57uEJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdlbmFibGVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXNlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYW5ub3RhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIEFycmF5Rm9ybVRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93RGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSxcbiAgICBBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgSGVscERvY3VtZW50TW9kdWxlLFxuICAgIFB1cmVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQW5ub3RhdGlvbnNGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0cmluZ01hcEZvcm1Db21wb25lbnQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBpc1VwZGF0ZTogYm9vbGVhbjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhc2VIcmVmID0gaW5qZWN0KFRPS0VOX0JBU0VfSFJFRik7XG5cbiAgLy8g56aB55So5o6J5YyF5ZCrIGNwYWFzLmlvIOWPiiBvdm4ua3ViZXJuZXRlcy5pbyDnmoQga2V5XG4gIHJlYWRvbmx5IHJlYWRvbmx5UGFydGlhbEtleXMgPSBbJ292bi5rdWJlcm5ldGVzLmlvJywgdGhpcy5iYXNlRG9tYWluXTtcblxuICBhbm5vdGF0aW9uc0Vycm9yc01hcHBlciA9IGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJChcbiAgICB0aGlzLnRyYW5zbGF0ZSxcbiAgKTtcblxuICBLTk9XTl9BTk5PVEFUSU9OUyA9IEtOT1dOX0FOTk9UQVRJT05TO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFRPS0VOX0JBU0VfRE9NQUlOKSBwcml2YXRlIHJlYWRvbmx5IGJhc2VEb21haW46IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZmlsdGVyT3B0aW9ucyhvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW10gfCB1bmRlZmluZWQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlzID0gKHRoaXMuZm9ybS52YWx1ZSBhcyBLZXlWYWx1ZVR1cGxlW10pLm1hcCgoW2tleV0pID0+IGtleSk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbHRlcihvID0+IHtcbiAgICAgIGNvbnN0IGtleUluZGV4ID0ga2V5cy5pbmRleE9mKG8ua2V5KTtcbiAgICAgIHJldHVybiBrZXlJbmRleCA9PT0gLTEgfHwga2V5SW5kZXggPT09IGluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlnT3B0aW9uKG9wdGlvbnM6IEFubm90YXRpb25Db25maWdPcHRpb25bXSB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uZmluZChvcHRpb24gPT4gb3B0aW9uLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIGlzUmVhZG9ubHkoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pc1VwZGF0ZSAmJiB0aGlzLnJlYWRvbmx5UGFydGlhbEtleXMuc29tZShrID0+IGtleS5pbmNsdWRlcyhrKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXREZWZhdWx0Rm9ybU1vZGVsKCk6IEtleVZhbHVlVHVwbGVbXSB7XG4gICAgcmV0dXJuIFtbJycsICcnXV07XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocmVzb3VyY2U6IFN0cmluZ01hcCkge1xuICAgIGxldCBuZXdGb3JtTW9kZWwgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZSB8fCB7fSk7XG4gICAgLy8g5o6S5bqP77yM5YWI5oyJ5a2X5q+N5o6S5bqP77yM5YaN5oqKIHJlYWRvbmx5IOeahOaUvuWJjemdolxuICAgIG5ld0Zvcm1Nb2RlbCA9IHNvcnRCeShuZXdGb3JtTW9kZWwsIChhcnI6IFtzdHJpbmcsIHN0cmluZ10pID0+IGFyclswXSk7XG4gICAgbmV3Rm9ybU1vZGVsLnNvcnQoKGFycjE6IFtzdHJpbmcsIHN0cmluZ10sIGFycjI6IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgIGNvbnN0IGZsYWcxID0gdGhpcy5pc1JlYWRvbmx5KGFycjFbMF0pO1xuICAgICAgY29uc3QgZmxhZzIgPSB0aGlzLmlzUmVhZG9ubHkoYXJyMlswXSk7XG4gICAgICBpZiAoKGZsYWcxICYmIGZsYWcyKSB8fCAoIWZsYWcxICYmICFmbGFnMikpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmxhZzEgPyAtMSA6IDE7XG4gICAgfSk7XG5cbiAgICBpZiAobmV3Rm9ybU1vZGVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbmV3Rm9ybU1vZGVsID0gdGhpcy5nZXREZWZhdWx0Rm9ybU1vZGVsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0Zvcm1Nb2RlbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEtleVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIGs4c1Jlc291cmNlQW5ub3RhdGlvbktleVZhbGlkYXRvcjtcbiAgfVxuXG4gIGlzTGFiZWxSZWFkb25seShjb250cm9sOiBGb3JtQXJyYXk8Rm9ybUNvbnRyb2w8c3RyaW5nPj4pIHtcbiAgICByZXR1cm4gY29udHJvbC52YWxpZCAmJiB0aGlzLmlzUmVhZG9ubHkoY29udHJvbC5nZXQoJzAnKS52YWx1ZSk7XG4gIH1cblxuICBnZXRBY3RpdmVDb25maWdPcHRpb24oXG4gICAgb3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdIHwgdW5kZWZpbmVkLFxuICAgIGtleTogc3RyaW5nLFxuICApIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uZmluZChvID0+IG8ua2V5ID09PSBrZXkpO1xuICB9XG5cbiAgb25LZXlTZWxlY3RlZChjb250cm9sOiBGb3JtQXJyYXk8Rm9ybUNvbnRyb2w8c3RyaW5nPj4pIHtcbiAgICBjb25zdCBrZXlDdHJsID0gY29udHJvbC5nZXQoJzAnKTtcbiAgICBrZXlDdHJsLm1hcmtBc0RpcnR5KCk7XG4gICAga2V5Q3RybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvLyBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uLmRvYyDphY3nva7kuobkuqflk4Eg77yIcHJvZHVjdO+8ieWxnuaAp+S5i+WQjumcgOimgeW9k+WJjeinhuWbvumatuWxnuS6juivpeS6p+WTgeaXtuaJjeWxleekuiBkb2Mg6ZO+5o6l77yM5pyq6YWN572u55qE6K+d5LiN5Y+X6ZmQ5Yi2XG4gIHNob3dEb2NMaW5rKGJhc2VIcmVmOiBzdHJpbmcsIHByb2R1Y3Q/OiBrZXlvZiB0eXBlb2YgUFJPRFVDVF9CQVNFX0hSRUZfTUFQKSB7XG4gICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gUFJPRFVDVF9CQVNFX0hSRUZfTUFQW3Byb2R1Y3RdID09PSBiYXNlSHJlZjtcbiAgfVxufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtmb3JtR3JvdXBdPVwiJGFueShmb3JtKVwiXG4gIFtyb3dzXT1cImZvcm0uY29udHJvbHNcIlxuICAoYWRkKT1cImZvcm0ucHVzaChjcmVhdGVOZXdDb250cm9sKCkpXCJcbiAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50KVwiXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVIZWFkZXI+XG4gICAgPHRoIGNsYXNzPVwiY29sdW1uXCI+e3sgJ2tleScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgIDx0aCBjbGFzcz1cImNvbHVtblwiPnt7ICd2YWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICBbZm9ybUdyb3VwTmFtZV09XCJpbmRleFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgY29uZmlnOiBLTk9XTl9BTk5PVEFUSU9OU1tjbHVzdGVyVHlwZV0sXG4gICAgICAgIHJlYWRvbmx5OiBpc0xhYmVsUmVhZG9ubHkoY29udHJvbClcbiAgICAgIH0gYXMgX1wiXG4gICAgPlxuICAgICAgPHRkIGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtyZWFkb25seV09XCJfLnJlYWRvbmx5XCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMFwiXG4gICAgICAgICAgW2F1aUF1dG9jb21wbGV0ZV09XCJrZXlTdWdnZXN0aW9uXCJcbiAgICAgICAgICAoYXVpQXV0b2NvbXBsZXRlU2VsZWN0ZWQpPVwib25LZXlTZWxlY3RlZChjb250cm9sKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxhdWktYXV0b2NvbXBsZXRlICNrZXlTdWdnZXN0aW9uPlxuICAgICAgICAgIDxhdWktc3VnZ2VzdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgXy5yZWFkb25seVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9ucyhfLmNvbmZpZz8ub3B0aW9ucywgaW5kZXgpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5rZXlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGlwIHwgdHJhbnNsYXRlIGFzIHRpcFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGlwIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F1aS1zdWdnZXN0aW9uPlxuICAgICAgICA8L2F1aS1hdXRvY29tcGxldGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldEFjdGl2ZUNvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICApPy5kb2MgYXMgZG9jXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYmFzZUhyZWYgfCBwdXJlOiBzaG93RG9jTGluazpkb2MucHJvZHVjdFwiXG4gICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtcyB0dy1tdC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jLnRpcFByZWZpeFwiPlxuICAgICAgICAgICAgICB7eyBkb2MudGlwUHJlZml4IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFthY2xEb2NzXT1cIntcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2MucGF0aCxcbiAgICAgICAgICAgICAgICByYXdVcmw6IGRvYy5yYXdVcmwsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3BhZ2UnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZG9jLnRpcCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgW3JlYWRvbmx5XT1cIl8ucmVhZG9ubHlcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCIxXCJcbiAgICAgICAgICBbYXVpQXV0b2NvbXBsZXRlXT1cInZhbHVlU3VnZ2VzdGlvblwiXG4gICAgICAgIC8+XG4gICAgICAgIDxhdWktYXV0b2NvbXBsZXRlICN2YWx1ZVN1Z2dlc3Rpb24+XG4gICAgICAgICAgPGF1aS1zdWdnZXN0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBfLnJlYWRvbmx5XG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiAoXG4gICAgICAgICAgICAgICAgICAgIF8uY29uZmlnPy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIHwgcHVyZTogZ2V0Q29uZmlnT3B0aW9uOmNvbnRyb2wuZ2V0KCcwJykudmFsdWVcbiAgICAgICAgICAgICAgICAgICk/LnZhbHVlc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB9fVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi50aXAgfCB0cmFuc2xhdGUgYXMgdGlwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0aXAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXVpLXN1Z2dlc3Rpb24+XG4gICAgICAgIDwvYXVpLWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIF8uY29uZmlnPy5vcHRpb25zXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0QWN0aXZlQ29uZmlnT3B0aW9uOmNvbnRyb2wuZ2V0KCcwJykudmFsdWVcbiAgICAgICAgICAgICk/LnZhbHVlIGFzIHZhbHVlQ29uZmlnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wuZ2V0KCcxJykudmFsdWUgPT09IHZhbHVlQ29uZmlnLmV4YW1wbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LXllbGxvdyB0dy1tdC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnbmV0d29yay5yZWFkX2ZpbGxpbmdfaW5zdHJ1Y3Rpb25zX3RpcCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctYnJlYWstYWxsIHR3LW15LTRcIj5cbiAgICAgICAgICAgIHt7IHZhbHVlQ29uZmlnLnRpcCB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiB2YWx1ZUNvbmZpZy5leGFtcGxlIH0gfX1cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtcHJpbWFyeSB0dy1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIGljb249XCJhcnJvd190dXJuX3VwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2wuZ2V0KCcxJykuc2V0VmFsdWUodmFsdWVDb25maWcuZXhhbXBsZSlcIlxuICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtocmVmXT1cInZhbHVlQ29uZmlnLmRvY0xpbmtcIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICduZXR3b3JrLmZpbGxpbmdfaW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCcwJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCIoYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgfCBhc3luYykua2V5XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgnMScpLmVycm9yc1wiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgaXRlbTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNMYWJlbFJlYWRvbmx5KGl0ZW0pXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaW5kZXgpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48ZGl2XG4gICpuZ0lmPVwiS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdIGFzIGNvbmZpZ1wiXG4gIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zIHR3LW10LTRcIlxuPlxuICA8bmctY29udGFpbmVyIFthY2xUcmFuc2xhdGVdPVwiJ2RvY3VtZW50YXRpb25fZm9yX2xiX3NlcnZpY2VfYW5ub3RhdGlvbnMnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsVHJhbnNsYXRlVGV4dD1cImxldCB0ZXh0XCI+e3sgdGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmFjbFRyYW5zbGF0ZU1hdGNoPVwiJ3R5cGUnXCI+e3sgY29uZmlnLmxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gICAgPGFcbiAgICAgICphY2xUcmFuc2xhdGVNYXRjaD1cIidkb2N1bWVudGF0aW9uJ1wiXG4gICAgICBbaHJlZl09XCJjb25maWcuZG9jTGlua1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAge3sgJ2RvY3VtZW50YXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPiA8L2FcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=