@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 { FormModule } from '@alauda/ui';
2
- import { FoldableBlockComponent, PurePipe, TranslateModule, } from '@alauda-fe/common';
2
+ import { FoldableBlockComponent, PurePipe, TRANSLATE_MODULE, } from '@alauda-fe/common';
3
3
  import { NgIf, NgTemplateOutlet } from '@angular/common';
4
4
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
5
5
  import { ReactiveFormsModule } from '@angular/forms';
@@ -10,6 +10,7 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/forms";
11
11
  import * as i2 from "@alauda/ui";
12
12
  import * as i3 from "@alauda-fe/common";
13
+ const _c0 = ["*"];
13
14
  function ServiceAnnotationsFormItemComponent_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
14
15
  i0.ɵɵelementContainer(0);
15
16
  } }
@@ -19,9 +20,9 @@ function ServiceAnnotationsFormItemComponent_ng_container_0_Template(rf, ctx) {
19
20
  i0.ɵɵelementContainerEnd();
20
21
  } if (rf & 2) {
21
22
  i0.ɵɵnextContext();
22
- const _r3 = i0.ɵɵreference(5);
23
- i0.ɵɵadvance(1);
24
- i0.ɵɵproperty("ngTemplateOutlet", _r3);
23
+ const innerFormItem_r1 = i0.ɵɵreference(5);
24
+ i0.ɵɵadvance();
25
+ i0.ɵɵproperty("ngTemplateOutlet", innerFormItem_r1);
25
26
  } }
26
27
  function ServiceAnnotationsFormItemComponent_ng_template_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
27
28
  i0.ɵɵelementContainer(0);
@@ -32,11 +33,11 @@ function ServiceAnnotationsFormItemComponent_ng_template_2_Template(rf, ctx) { i
32
33
  i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_ng_container_2_Template, 1, 0, "ng-container", 3);
33
34
  i0.ɵɵelementEnd();
34
35
  } if (rf & 2) {
35
- const ctx_r2 = i0.ɵɵnextContext();
36
- const _r3 = i0.ɵɵreference(5);
37
- i0.ɵɵproperty("expandHint", i0.ɵɵpipeBind1(1, 2, ctx_r2.resourceName));
36
+ const ctx_r1 = i0.ɵɵnextContext();
37
+ const innerFormItem_r1 = i0.ɵɵreference(5);
38
+ i0.ɵɵproperty("expandHint", i0.ɵɵpipeBind1(1, 2, ctx_r1.resourceName));
38
39
  i0.ɵɵadvance(2);
39
- i0.ɵɵproperty("ngTemplateOutlet", _r3);
40
+ i0.ɵɵproperty("ngTemplateOutlet", innerFormItem_r1);
40
41
  } }
41
42
  function ServiceAnnotationsFormItemComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
42
43
  i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 5);
@@ -47,42 +48,39 @@ function ServiceAnnotationsFormItemComponent_ng_template_4_Template(rf, ctx) { i
47
48
  i0.ɵɵprojection(5);
48
49
  i0.ɵɵelementEnd()();
49
50
  } if (rf & 2) {
50
- const ctx_r4 = i0.ɵɵnextContext();
51
+ const ctx_r1 = i0.ɵɵnextContext();
51
52
  i0.ɵɵadvance(2);
52
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx_r4.resourceName));
53
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx_r1.resourceName));
53
54
  i0.ɵɵadvance(2);
54
- i0.ɵɵproperty("formControl", ctx_r4.form)("isUpdate", ctx_r4.isUpdate)("clusterType", ctx_r4.clusterType)("resourceName", ctx_r4.resourceName);
55
+ i0.ɵɵproperty("formControl", ctx_r1.form)("isUpdate", ctx_r1.isUpdate)("clusterType", ctx_r1.clusterType)("resourceName", ctx_r1.resourceName);
55
56
  } }
56
- const _c0 = ["*"];
57
57
  export class ServiceAnnotationsFormItemComponent extends BaseResourceFormComponent {
58
58
  constructor() {
59
59
  super(...arguments);
60
60
  this.isPublicCloud = isPublicCloud;
61
61
  }
62
62
  get resourceName() {
63
- return this.inService ? 'annotation' : 'service_annotations';
63
+ return this.inService ? 'annotation' : 'network.service_annotations';
64
64
  }
65
65
  createForm() {
66
66
  return this.fb.control({});
67
67
  }
68
- static { this.ɵfac = /*@__PURE__*/ function () { let ɵServiceAnnotationsFormItemComponent_BaseFactory; return function ServiceAnnotationsFormItemComponent_Factory(t) { return (ɵServiceAnnotationsFormItemComponent_BaseFactory || (ɵServiceAnnotationsFormItemComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ServiceAnnotationsFormItemComponent)))(t || ServiceAnnotationsFormItemComponent); }; }(); }
69
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormItemComponent, selectors: [["acl-service-annotations-form-item"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", inService: "inService" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 6, vars: 5, consts: [[4, "ngIf", "ngIfElse"], ["nonPublicCloud", ""], ["innerFormItem", ""], [4, "ngTemplateOutlet"], [3, "expandHint"], ["auiFormItemLabel", ""], ["auiFormItemControl", "", 3, "formControl", "isUpdate", "clusterType", "resourceName"]], template: function ServiceAnnotationsFormItemComponent_Template(rf, ctx) { if (rf & 1) {
68
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵServiceAnnotationsFormItemComponent_BaseFactory; return function ServiceAnnotationsFormItemComponent_Factory(t) { return (ɵServiceAnnotationsFormItemComponent_BaseFactory || (ɵServiceAnnotationsFormItemComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ServiceAnnotationsFormItemComponent)))(t || ServiceAnnotationsFormItemComponent); }; })(); }
69
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormItemComponent, selectors: [["acl-service-annotations-form-item"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", inService: "inService" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 6, vars: 5, consts: [["nonPublicCloud", ""], ["innerFormItem", ""], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet"], [3, "expandHint"], ["auiFormItemLabel", ""], ["auiFormItemControl", "", 3, "formControl", "isUpdate", "clusterType", "resourceName"]], template: function ServiceAnnotationsFormItemComponent_Template(rf, ctx) { if (rf & 1) {
70
70
  i0.ɵɵprojectionDef();
71
- i0.ɵɵtemplate(0, ServiceAnnotationsFormItemComponent_ng_container_0_Template, 2, 1, "ng-container", 0);
71
+ i0.ɵɵtemplate(0, ServiceAnnotationsFormItemComponent_ng_container_0_Template, 2, 1, "ng-container", 2);
72
72
  i0.ɵɵpipe(1, "pure");
73
- i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
74
- i0.ɵɵtemplate(4, ServiceAnnotationsFormItemComponent_ng_template_4_Template, 6, 7, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
73
+ i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_Template, 3, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(4, ServiceAnnotationsFormItemComponent_ng_template_4_Template, 6, 7, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
75
74
  } if (rf & 2) {
76
- const _r1 = i0.ɵɵreference(3);
77
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(1, 2, ctx.clusterType, ctx.isPublicCloud))("ngIfElse", _r1);
75
+ const nonPublicCloud_r3 = i0.ɵɵreference(3);
76
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(1, 2, ctx.clusterType, ctx.isPublicCloud))("ngIfElse", nonPublicCloud_r3);
78
77
  } }, dependencies: [ReactiveFormsModule, i1.NgControlStatus, i1.FormControlDirective, NgIf,
79
78
  NgTemplateOutlet,
80
79
  PurePipe,
81
80
  FormModule, i2.FormItemComponent, i2.FormItemLabelDirective, i2.FormItemControlDirective, FoldableBlockComponent,
82
- ServiceAnnotationsFormComponent,
83
- TranslateModule, i3.TranslatePipe], styles: ["acl-foldable-block[_ngcontent-%COMP%] .foldable{margin-bottom:20px}acl-foldable-block[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}"], changeDetection: 0 }); }
81
+ ServiceAnnotationsFormComponent, i3.TranslatePipe], styles: ["acl-foldable-block[_ngcontent-%COMP%] .foldable{margin-bottom:20px}acl-foldable-block[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}"], changeDetection: 0 }); }
84
82
  }
85
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormItemComponent, [{
83
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormItemComponent, [{
86
84
  type: Component,
87
85
  args: [{ selector: 'acl-service-annotations-form-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
88
86
  ReactiveFormsModule,
@@ -92,7 +90,7 @@ export class ServiceAnnotationsFormItemComponent extends BaseResourceFormCompone
92
90
  FormModule,
93
91
  FoldableBlockComponent,
94
92
  ServiceAnnotationsFormComponent,
95
- TranslateModule,
93
+ TRANSLATE_MODULE,
96
94
  ], template: "<ng-container *ngIf=\"clusterType | pure: isPublicCloud; else nonPublicCloud\">\n <ng-container *ngTemplateOutlet=\"innerFormItem\"></ng-container>\n</ng-container>\n\n<ng-template #nonPublicCloud>\n <acl-foldable-block [expandHint]=\"resourceName | translate\">\n <ng-container *ngTemplateOutlet=\"innerFormItem\"></ng-container>\n </acl-foldable-block>\n</ng-template>\n\n<ng-template #innerFormItem>\n <aui-form-item>\n <label auiFormItemLabel>{{ resourceName | translate }}</label>\n <acl-service-annotations-form\n auiFormItemControl\n [formControl]=\"form\"\n [isUpdate]=\"isUpdate\"\n [clusterType]=\"clusterType\"\n [resourceName]=\"resourceName\"\n >\n <ng-content></ng-content>\n </acl-service-annotations-form>\n </aui-form-item>\n</ng-template>\n", styles: ["acl-foldable-block ::ng-deep .foldable{margin-bottom:20px}acl-foldable-block ::ng-deep .aui-form-item{margin-bottom:0}\n"] }]
97
95
  }], null, { isUpdate: [{
98
96
  type: Input,
@@ -103,4 +101,5 @@ export class ServiceAnnotationsFormItemComponent extends BaseResourceFormCompone
103
101
  }], inService: [{
104
102
  type: Input
105
103
  }] }); })();
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0taXRlbS9hbm5vdGF0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybS1pdGVtL2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsZUFBZSxHQUNoQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7SUNabEcsd0JBQStEOzs7SUFEakUsNkJBQTZFO0lBQzNFLHFIQUErRDtJQUNqRSwwQkFBZTs7OztJQURFLGVBQStCO0lBQS9CLHNDQUErQjs7O0lBSzVDLHdCQUErRDs7O0lBRGpFLDZDQUE0RDs7SUFDMUQsb0hBQStEO0lBQ2pFLGlCQUFxQjs7OztJQUZELHNFQUF1QztJQUMxQyxlQUErQjtJQUEvQixzQ0FBK0I7OztJQUtoRCxxQ0FBZSxlQUFBO0lBQ1csWUFBOEI7O0lBQUEsaUJBQVE7SUFDOUQsdURBTUM7SUFDQyxrQkFBeUI7SUFDM0IsaUJBQStCLEVBQUE7OztJQVRQLGVBQThCO0lBQTlCLCtEQUE4QjtJQUdwRCxlQUFvQjtJQUFwQix5Q0FBb0IsNkJBQUEsbUNBQUEscUNBQUE7OztBRGlCMUIsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLHlCQUFvQztJQWpCN0Y7O1FBK0JFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBSy9CO0lBVEMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQy9ELENBQUM7SUFJUSxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztxVEFsQlUsbUNBQW1DLFNBQW5DLG1DQUFtQztvRUFBbkMsbUNBQW1DOztZQ2hDaEQsc0dBRWU7O1lBRWYscUlBSWM7WUFFZCxxSUFhYzs7O1lBdkJDLCtFQUF5QyxpQkFBQTs0QkRzQnBELG1CQUFtQiwrQ0FDbkIsSUFBSTtZQUNKLGdCQUFnQjtZQUNoQixRQUFRO1lBQ1IsVUFBVSxnRkFDVixzQkFBc0I7WUFDdEIsK0JBQStCO1lBQy9CLGVBQWU7O3VGQUdOLG1DQUFtQztjQWpCL0MsU0FBUzsyQkFDRSxtQ0FBbUMsbUJBRzVCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO29CQUNQLG1CQUFtQjtvQkFDbkIsSUFBSTtvQkFDSixnQkFBZ0I7b0JBQ2hCLFFBQVE7b0JBQ1IsVUFBVTtvQkFDVixzQkFBc0I7b0JBQ3RCLCtCQUErQjtvQkFDL0IsZUFBZTtpQkFDaEI7Z0JBSUQsUUFBUTtrQkFEUCxLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixXQUFXO2tCQURWLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFNBQVM7a0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gIFB1cmVQaXBlLFxuICBTdHJpbmdNYXAsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQgeyBDbHVzdGVyVHlwZSwgaXNQdWJsaWNDbG91ZCB9IGZyb20gJy4uLy4uL3V0aWxzL2NsdXN0ZXItZXhwb3J0cyc7XG5pbXBvcnQgeyBTZXJ2aWNlQW5ub3RhdGlvbnNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtL2Fubm90YXRpb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0taXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYW5ub3RhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBQdXJlUGlwZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gICAgU2VydmljZUFubm90YXRpb25zRm9ybUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VBbm5vdGF0aW9uc0Zvcm1JdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUNvbXBvbmVudDxTdHJpbmdNYXA+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaXNVcGRhdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY2x1c3RlclR5cGU6IENsdXN0ZXJUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGluU2VydmljZTogYm9vbGVhbjtcblxuICBnZXQgcmVzb3VyY2VOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmluU2VydmljZSA/ICdhbm5vdGF0aW9uJyA6ICdzZXJ2aWNlX2Fubm90YXRpb25zJztcbiAgfVxuXG4gIGlzUHVibGljQ2xvdWQgPSBpc1B1YmxpY0Nsb3VkO1xuXG4gIG92ZXJyaWRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbCh7fSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjbHVzdGVyVHlwZSB8IHB1cmU6IGlzUHVibGljQ2xvdWQ7IGVsc2Ugbm9uUHVibGljQ2xvdWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyRm9ybUl0ZW1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI25vblB1YmxpY0Nsb3VkPlxuICA8YWNsLWZvbGRhYmxlLWJsb2NrIFtleHBhbmRIaW50XT1cInJlc291cmNlTmFtZSB8IHRyYW5zbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lckZvcm1JdGVtXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYWNsLWZvbGRhYmxlLWJsb2NrPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbm5lckZvcm1JdGVtPlxuICA8YXVpLWZvcm0taXRlbT5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyByZXNvdXJjZU5hbWUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhY2wtc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtXCJcbiAgICAgIFtpc1VwZGF0ZV09XCJpc1VwZGF0ZVwiXG4gICAgICBbY2x1c3RlclR5cGVdPVwiY2x1c3RlclR5cGVcIlxuICAgICAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2FjbC1zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
104
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceAnnotationsFormItemComponent, { className: "ServiceAnnotationsFormItemComponent", filePath: "lib/components/service-annotations-form-item/annotations.component.ts", lineNumber: 33 }); })();
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0taXRlbS9hbm5vdGF0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybS1pdGVtL2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsZ0JBQWdCLEdBQ2pCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7SUNabEcsd0JBQStEOzs7SUFEakUsNkJBQTZFO0lBQzNFLHFIQUFnRDs7Ozs7SUFBakMsY0FBK0I7SUFBL0IsbURBQStCOzs7SUFLNUMsd0JBQStEOzs7SUFEakUsNkNBQTREOztJQUMxRCxvSEFBZ0Q7SUFDbEQsaUJBQXFCOzs7O0lBRkQsc0VBQXVDO0lBQzFDLGVBQStCO0lBQS9CLG1EQUErQjs7O0lBTTlDLEFBREYscUNBQWUsZUFDVztJQUFBLFlBQThCOztJQUFBLGlCQUFRO0lBQzlELHVEQU1DO0lBQ0Msa0JBQXlCO0lBRTdCLEFBREUsaUJBQStCLEVBQ2pCOzs7SUFWVSxlQUE4QjtJQUE5QiwrREFBOEI7SUFHcEQsZUFBb0I7SUFHcEIsQUFEQSxBQURBLEFBREEseUNBQW9CLDZCQUNDLG1DQUNNLHFDQUNFOztBRGNuQyxNQUFNLE9BQU8sbUNBQW9DLFNBQVEseUJBQW9DO0lBakI3Rjs7UUErQkUsa0JBQWEsR0FBRyxhQUFhLENBQUM7S0FLL0I7SUFUQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDdkUsQ0FBQztJQUlRLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO2dUQWxCVSxtQ0FBbUMsU0FBbkMsbUNBQW1DO29FQUFuQyxtQ0FBbUM7O1lDaENoRCxzR0FBNkU7O1lBVTdFLEFBTkEscUlBQTZCLHdIQU1EOzs7WUFWNEIsQUFBekMsK0VBQXlDLCtCQUFtQjs0QkRzQnZFLG1CQUFtQiwrQ0FDbkIsSUFBSTtZQUNKLGdCQUFnQjtZQUNoQixRQUFRO1lBQ1IsVUFBVSxnRkFDVixzQkFBc0I7WUFDdEIsK0JBQStCOztpRkFJdEIsbUNBQW1DO2NBakIvQyxTQUFTOzJCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsbUJBQW1CO29CQUNuQixJQUFJO29CQUNKLGdCQUFnQjtvQkFDaEIsUUFBUTtvQkFDUixVQUFVO29CQUNWLHNCQUFzQjtvQkFDdEIsK0JBQStCO29CQUMvQixnQkFBZ0I7aUJBQ2pCO2dCQUlELFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixTQUFTO2tCQURSLEtBQUs7O2tGQVBLLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gIFB1cmVQaXBlLFxuICBTdHJpbmdNYXAsXG4gIFRSQU5TTEFURV9NT0RVTEUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcblxuaW1wb3J0IHsgQ2x1c3RlclR5cGUsIGlzUHVibGljQ2xvdWQgfSBmcm9tICcuLi8uLi91dGlscy9jbHVzdGVyLWV4cG9ydHMnO1xuaW1wb3J0IHsgU2VydmljZUFubm90YXRpb25zRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3NlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybS9hbm5vdGF0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJ2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Fubm90YXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUHVyZVBpcGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICAgIFNlcnZpY2VBbm5vdGF0aW9uc0Zvcm1Db21wb25lbnQsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUFubm90YXRpb25zRm9ybUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtQ29tcG9uZW50PFN0cmluZ01hcD4ge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBpc1VwZGF0ZTogYm9vbGVhbjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGU7XG5cbiAgQElucHV0KClcbiAgaW5TZXJ2aWNlOiBib29sZWFuO1xuXG4gIGdldCByZXNvdXJjZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5TZXJ2aWNlID8gJ2Fubm90YXRpb24nIDogJ25ldHdvcmsuc2VydmljZV9hbm5vdGF0aW9ucyc7XG4gIH1cblxuICBpc1B1YmxpY0Nsb3VkID0gaXNQdWJsaWNDbG91ZDtcblxuICBvdmVycmlkZSBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woe30pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY2x1c3RlclR5cGUgfCBwdXJlOiBpc1B1YmxpY0Nsb3VkOyBlbHNlIG5vblB1YmxpY0Nsb3VkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lckZvcm1JdGVtXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNub25QdWJsaWNDbG91ZD5cbiAgPGFjbC1mb2xkYWJsZS1ibG9jayBbZXhwYW5kSGludF09XCJyZXNvdXJjZU5hbWUgfCB0cmFuc2xhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJGb3JtSXRlbVwiPjwvbmctY29udGFpbmVyPlxuICA8L2FjbC1mb2xkYWJsZS1ibG9jaz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJGb3JtSXRlbT5cbiAgPGF1aS1mb3JtLWl0ZW0+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgcmVzb3VyY2VOYW1lIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YWNsLXNlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybVxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybVwiXG4gICAgICBbaXNVcGRhdGVdPVwiaXNVcGRhdGVcIlxuICAgICAgW2NsdXN0ZXJUeXBlXT1cImNsdXN0ZXJUeXBlXCJcbiAgICAgIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9hY2wtc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtPlxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { FormModule, IconModule, InputModule, RadioModule, SwitchModule, TooltipModule, } from '@alauda/ui';
3
- import { DISPLAY_NAME, SERVICE_TYPES, FeatureGateService, K8sUtilService, ObservableInput, publishRef, TranslateModule, ReadonlyFieldDirective, ErrorsMapperModule, DisabledDirective, K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY, DOMAIN_PATTERN, ServiceTypeMeta, } from '@alauda-fe/common';
3
+ import { DISPLAY_NAME, SERVICE_TYPES, FeatureGateService, K8sUtilService, ObservableInput, publishRef, TRANSLATE_MODULE, ReadonlyFieldDirective, ERRORS_MAPPER_MODULE, DisabledDirective, K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY, DOMAIN_PATTERN, ServiceTypeMeta, } from '@alauda-fe/common';
4
4
  import { AsyncPipe, NgFor, NgIf } from '@angular/common';
5
5
  import { ChangeDetectionStrategy, Component, Injector, Input, } from '@angular/core';
6
6
  import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
@@ -11,15 +11,20 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "@alauda-fe/common";
12
12
  import * as i2 from "@alauda/ui";
13
13
  import * as i3 from "@angular/forms";
14
+ const _c0 = ["*"];
15
+ const _c1 = () => ["metadata", "name"];
16
+ const _c2 = a0 => ({ pattern: a0 });
17
+ const _c3 = () => ["spec", "type"];
18
+ const _c4 = () => ["spec", "externalName"];
14
19
  function K8sServiceFormComponent_aui_radio_button_20_Template(rf, ctx) { if (rf & 1) {
15
20
  i0.ɵɵelementStart(0, "aui-radio-button", 21);
16
21
  i0.ɵɵtext(1);
17
22
  i0.ɵɵelementEnd();
18
23
  } if (rf & 2) {
19
- const option_r2 = ctx.$implicit;
20
- i0.ɵɵproperty("value", option_r2);
21
- i0.ɵɵadvance(1);
22
- i0.ɵɵtextInterpolate1(" ", option_r2, " ");
24
+ const option_r1 = ctx.$implicit;
25
+ i0.ɵɵproperty("value", option_r1);
26
+ i0.ɵɵadvance();
27
+ i0.ɵɵtextInterpolate1(" ", option_r1, " ");
23
28
  } }
24
29
  function K8sServiceFormComponent_div_22_Template(rf, ctx) { if (rf & 1) {
25
30
  i0.ɵɵelementStart(0, "div", 22);
@@ -27,14 +32,9 @@ function K8sServiceFormComponent_div_22_Template(rf, ctx) { if (rf & 1) {
27
32
  i0.ɵɵpipe(2, "translate");
28
33
  i0.ɵɵelementEnd();
29
34
  } if (rf & 2) {
30
- i0.ɵɵadvance(1);
31
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "service_external_name_hint"), " ");
35
+ i0.ɵɵadvance();
36
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "network.service_external_name_hint"), " ");
32
37
  } }
33
- const _c0 = function () { return ["metadata", "name"]; };
34
- const _c1 = function (a0) { return { pattern: a0 }; };
35
- const _c2 = function () { return ["spec", "type"]; };
36
- const _c3 = function () { return ["spec", "externalName"]; };
37
- const _c4 = ["*"];
38
38
  const NON_LB_SERVICE_TYPES = SERVICE_TYPES.filter(op => op !== 'LoadBalancer');
39
39
  // K8s base service form
40
40
  export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
@@ -157,7 +157,7 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
157
157
  }
158
158
  }
159
159
  static { this.ɵfac = function K8sServiceFormComponent_Factory(t) { return new (t || K8sServiceFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.K8sUtilService), i0.ɵɵdirectiveInject(i1.FeatureGateService)); }; }
160
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8sServiceFormComponent, selectors: [["acl-k8s-service-form"]], inputs: { cluster: "cluster", isUpdate: "isUpdate", containerPortSuggestions: "containerPortSuggestions", targetComponent: "targetComponent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c4, decls: 51, vars: 69, consts: [["auiForm", "", 3, "formGroup"], ["formGroupName", "metadata"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "required", "", "name", "name", "formControlName", "name", 3, "aclReadonlyField", "placeholder"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["width", "large", "formGroupName", "annotations"], ["auiFormItemControl", "", "aui-input", "", 3, "formControlName"], ["formGroupName", "spec"], ["formControlName", "type"], [3, "value", 4, "ngFor", "ngForOf"], ["auiFormItemHint", "", 4, "ngIf"], ["formGroupName", "spec", "width", "large", 1, "last-form-item-no-margin", 3, "hidden"], ["type", "text", "aui-input", "", "auiFormItemControl", "", "formControlName", "externalName", 3, "aclDisabled", "required", "pattern", "placeholder"], [3, "hidden"], ["formControlName", "virtualIp", 3, "valueChange"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], ["auiFormItemControl", "", "name", "ports", "formControlName", "ports", 1, "tw-w-full", 3, "required", "aclDisabled", "serviceType", "containerPortSuggestions", "targetComponent"], [1, "last-form-item-no-margin"], ["formControlName", "sessionPersistence"], [3, "value"], ["auiFormItemHint", ""]], template: function K8sServiceFormComponent_Template(rf, ctx) { if (rf & 1) {
160
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8sServiceFormComponent, selectors: [["acl-k8s-service-form"]], inputs: { cluster: "cluster", isUpdate: "isUpdate", containerPortSuggestions: "containerPortSuggestions", targetComponent: "targetComponent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 51, vars: 69, consts: [["auiForm", "", 3, "formGroup"], ["formGroupName", "metadata"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "required", "", "name", "name", "formControlName", "name", 3, "aclReadonlyField", "placeholder"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["width", "large", "formGroupName", "annotations"], ["auiFormItemControl", "", "aui-input", "", 3, "formControlName"], ["formGroupName", "spec"], ["formControlName", "type"], [3, "value", 4, "ngFor", "ngForOf"], ["auiFormItemHint", "", 4, "ngIf"], ["formGroupName", "spec", "width", "large", 1, "last-form-item-no-margin", 3, "hidden"], ["type", "text", "aui-input", "", "auiFormItemControl", "", "formControlName", "externalName", 3, "aclDisabled", "required", "pattern", "placeholder"], [3, "hidden"], ["formControlName", "virtualIp", 3, "valueChange"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], ["auiFormItemControl", "", "name", "ports", "formControlName", "ports", 1, "tw-w-full", 3, "required", "aclDisabled", "serviceType", "containerPortSuggestions", "targetComponent"], [1, "last-form-item-no-margin"], ["formControlName", "sessionPersistence"], [3, "value"], ["auiFormItemHint", ""]], template: function K8sServiceFormComponent_Template(rf, ctx) { if (rf & 1) {
161
161
  i0.ɵɵprojectionDef();
162
162
  i0.ɵɵelementStart(0, "form", 0);
163
163
  i0.ɵɵelementContainerStart(1, 1);
@@ -227,7 +227,7 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
227
227
  i0.ɵɵadvance(2);
228
228
  i0.ɵɵproperty("aclReadonlyField", ctx.isUpdate)("placeholder", i0.ɵɵpipeBind1(7, 32, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip));
229
229
  i0.ɵɵadvance(2);
230
- i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(56, _c0)).errors)("errorsMapper", i0.ɵɵpureFunction1(57, _c1, i0.ɵɵpipeBind1(9, 34, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip)));
230
+ i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(56, _c1)).errors)("errorsMapper", i0.ɵɵpureFunction1(57, _c2, i0.ɵɵpipeBind1(9, 34, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip)));
231
231
  i0.ɵɵadvance(4);
232
232
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 36, "display_name"));
233
233
  i0.ɵɵadvance(2);
@@ -237,31 +237,31 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
237
237
  i0.ɵɵadvance(3);
238
238
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(21, 40, ctx.types$));
239
239
  i0.ɵɵadvance(2);
240
- i0.ɵɵproperty("ngIf", ctx.form.get(i0.ɵɵpureFunction0(59, _c2)).value === "ExternalName");
241
- i0.ɵɵadvance(1);
242
- i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(60, _c2)).value !== "ExternalName");
240
+ i0.ɵɵproperty("ngIf", ctx.form.get(i0.ɵɵpureFunction0(59, _c3)).value === "ExternalName");
241
+ i0.ɵɵadvance();
242
+ i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(60, _c3)).value !== "ExternalName");
243
243
  i0.ɵɵadvance(2);
244
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 42, "service_external_name_mapping_domain"), " ");
244
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 42, "network.service_external_name_mapping_domain"), " ");
245
245
  i0.ɵɵadvance(2);
246
- i0.ɵɵproperty("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(61, _c2)).value !== "ExternalName")("required", ctx.form.get(i0.ɵɵpureFunction0(62, _c2)).value === "ExternalName")("pattern", ctx.DOMAIN_PATTERN.pattern)("placeholder", i0.ɵɵpipeBind1(28, 44, "service_external_name_domain_placeholder"));
246
+ i0.ɵɵproperty("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(61, _c3)).value !== "ExternalName")("required", ctx.form.get(i0.ɵɵpureFunction0(62, _c3)).value === "ExternalName")("pattern", ctx.DOMAIN_PATTERN.pattern)("placeholder", i0.ɵɵpipeBind1(28, 44, "network.service_external_name_domain_placeholder"));
247
247
  i0.ɵɵadvance(2);
248
- i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(63, _c3)).errors)("errorsMapper", i0.ɵɵpureFunction1(64, _c1, i0.ɵɵpipeBind1(30, 46, ctx.DOMAIN_PATTERN.tip)));
248
+ i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(63, _c4)).errors)("errorsMapper", i0.ɵɵpureFunction1(64, _c2, i0.ɵɵpipeBind1(30, 46, ctx.DOMAIN_PATTERN.tip)));
249
249
  i0.ɵɵadvance(2);
250
- i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(66, _c2)).value === "ExternalName");
250
+ i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(66, _c3)).value === "ExternalName");
251
251
  i0.ɵɵadvance(3);
252
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(35, 48, "virtual_ip"));
252
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(35, 48, "network.virtual_ip"));
253
253
  i0.ɵɵadvance(4);
254
- i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(39, 50, "virtual_ip_hint"))("auiTooltipPosition", "top center");
254
+ i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(39, 50, "network.virtual_ip_hint"))("auiTooltipPosition", "top center");
255
255
  i0.ɵɵadvance(5);
256
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(44, 52, "ports"));
256
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(44, 52, "network.port"));
257
257
  i0.ɵɵadvance(2);
258
- i0.ɵɵproperty("required", !!ctx.form.get("virtualIp").value)("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(67, _c2)).value === "ExternalName")("serviceType", ctx.form.get(i0.ɵɵpureFunction0(68, _c2)).value)("containerPortSuggestions", ctx.containerPortSuggestions)("targetComponent", ctx.targetComponent);
258
+ i0.ɵɵproperty("required", !!ctx.form.get("virtualIp").value)("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(67, _c3)).value === "ExternalName")("serviceType", ctx.form.get(i0.ɵɵpureFunction0(68, _c3)).value)("containerPortSuggestions", ctx.containerPortSuggestions)("targetComponent", ctx.targetComponent);
259
259
  i0.ɵɵadvance(3);
260
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 54, "session_affinity"));
260
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 54, "network.session_affinity"));
261
261
  } }, dependencies: [AsyncPipe,
262
262
  FormModule, i2.FormDirective, i2.FormItemComponent, i2.FormItemAddonDirective, i2.FormItemErrorDirective, i2.FormItemHintDirective, i2.FormItemLabelDirective, i2.FormItemControlDirective, InputModule, i2.InputComponent, NgIf,
263
263
  NgFor,
264
- FormsModule, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.PatternValidator, ReactiveFormsModule, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, SwitchModule, i2.SwitchComponent, IconModule, i2.IconComponent, TranslateModule, i1.TranslatePipe, RadioModule, i2.RadioGroupComponent, i2.RadioButtonComponent, TooltipModule, i2.TooltipDirective, ErrorsMapperModule, i1.ErrorsMapperComponent, ServicePortsFieldsetComponent,
264
+ FormsModule, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.PatternValidator, ReactiveFormsModule, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, SwitchModule, i2.SwitchComponent, IconModule, i2.IconComponent, i1.TranslatePipe, RadioModule, i2.RadioGroupComponent, i2.RadioButtonComponent, TooltipModule, i2.TooltipDirective, i1.ErrorsMapperComponent, ServicePortsFieldsetComponent,
265
265
  ReadonlyFieldDirective,
266
266
  DisabledDirective], encapsulation: 2, changeDetection: 0 }); }
267
267
  }
@@ -273,7 +273,7 @@ __decorate([
273
273
  ObservableInput(),
274
274
  __metadata("design:type", Observable)
275
275
  ], K8sServiceFormComponent.prototype, "isUpdate$", void 0);
276
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sServiceFormComponent, [{
276
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sServiceFormComponent, [{
277
277
  type: Component,
278
278
  args: [{ standalone: true, selector: 'acl-k8s-service-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
279
279
  AsyncPipe,
@@ -285,15 +285,15 @@ __decorate([
285
285
  ReactiveFormsModule,
286
286
  SwitchModule,
287
287
  IconModule,
288
- TranslateModule,
288
+ TRANSLATE_MODULE,
289
289
  RadioModule,
290
290
  TooltipModule,
291
- ErrorsMapperModule,
291
+ ERRORS_MAPPER_MODULE,
292
292
  ServicePortsFieldsetComponent,
293
293
  ReadonlyFieldDirective,
294
294
  DisabledDirective,
295
- ], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"'service_external_name_domain_placeholder' | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'ports' | translate }}</label>\n <acl-service-ports-fieldset\n class=\"tw-w-full\"\n auiFormItemControl\n [required]=\"!!form.get('virtualIp').value\"\n [aclDisabled]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n name=\"ports\"\n formControlName=\"ports\"\n [serviceType]=\"form.get(['spec', 'type']).value\"\n [containerPortSuggestions]=\"containerPortSuggestions\"\n [targetComponent]=\"targetComponent\"\n ></acl-service-ports-fieldset>\n </aui-form-item>\n\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>{{ 'session_affinity' | translate }}</label>\n <aui-switch formControlName=\"sessionPersistence\"></aui-switch>\n </aui-form-item>\n </div>\n</form>\n" }]
296
- }], function () { return [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.FeatureGateService }]; }, { cluster: [{
295
+ ], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'network.service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'network.service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"\n 'network.service_external_name_domain_placeholder' | translate\n \"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'network.virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'network.virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'network.port' | translate }}</label>\n <acl-service-ports-fieldset\n class=\"tw-w-full\"\n auiFormItemControl\n [required]=\"!!form.get('virtualIp').value\"\n [aclDisabled]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n name=\"ports\"\n formControlName=\"ports\"\n [serviceType]=\"form.get(['spec', 'type']).value\"\n [containerPortSuggestions]=\"containerPortSuggestions\"\n [targetComponent]=\"targetComponent\"\n ></acl-service-ports-fieldset>\n </aui-form-item>\n\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>{{\n 'network.session_affinity' | translate\n }}</label>\n <aui-switch formControlName=\"sessionPersistence\"></aui-switch>\n </aui-form-item>\n </div>\n</form>\n" }]
296
+ }], () => [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.FeatureGateService }], { cluster: [{
297
297
  type: Input,
298
298
  args: [{ required: true }]
299
299
  }], cluster$: [], isUpdate: [{
@@ -304,4 +304,5 @@ __decorate([
304
304
  }], targetComponent: [{
305
305
  type: Input
306
306
  }] }); })();
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNCQUFz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Q25CLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixlQUFlO29CQUNmLFdBQVc7b0JBQ1gsYUFBYTtvQkFDYixrQkFBa0I7b0JBQ2xCLDZCQUE2QjtvQkFDN0Isc0JBQXNCO29CQUN0QixpQkFBaUI7aUJBQ2xCO3lIQU9ELE9BQU87a0JBRE4sS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsUUFBUSxNQUdSLFFBQVE7a0JBRFAsS0FBSztZQUlOLFNBQVMsTUFHVCx3QkFBd0I7a0JBRHZCLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLGVBQWU7a0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZvcm1Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxuICBSYWRpb01vZHVsZSxcbiAgU3dpdGNoTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENvbnRhaW5lclBvcnQsXG4gIERJU1BMQVlfTkFNRSxcbiAgU0VSVklDRV9UWVBFUyxcbiAgRmVhdHVyZUdhdGVTZXJ2aWNlLFxuICBLOHNVdGlsU2VydmljZSxcbiAgT2JzZXJ2YWJsZUlucHV0LFxuICBwdWJsaXNoUmVmLFxuICBTZXJ2aWNlLFxuICBUcmFuc2xhdGVNb2R1bGUsXG4gIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIEVycm9yc01hcHBlck1vZHVsZSxcbiAgRGlzYWJsZWREaXJlY3RpdmUsXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSxcbiAgRE9NQUlOX1BBVFRFUk4sXG4gIFNlcnZpY2VUeXBlTWV0YSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkc2V0L2NvbXBvbmVudCc7XG5cbmNvbnN0IE5PTl9MQl9TRVJWSUNFX1RZUEVTID0gU0VSVklDRV9UWVBFUy5maWx0ZXIob3AgPT4gb3AgIT09ICdMb2FkQmFsYW5jZXInKTtcbmludGVyZmFjZSBTZXJ2aWNlRm9ybU1vZGVsIGV4dGVuZHMgU2VydmljZSB7XG4gIHZpcnR1YWxJcD86IGJvb2xlYW47IC8vIOiZmuaLnyBpcO+8jOS4uiBmYWxzZSDml7bpnIDopoHorr7nva4gc3BlYy5jbHVzdGVySXA6IE5vbmVcbiAgc2Vzc2lvblBlcnNpc3RlbmNlPzogYm9vbGVhbjsgLy8g5Lya6K+d5L+d5oyB77yM5a+55bqUIHNwZWMuc2Vzc2lvbkFmZmluaXR5OiBDbGllbnRJUC9Ob25lXG59XG5cbi8vIEs4cyBiYXNlIHNlcnZpY2UgZm9ybVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLWs4cy1zZXJ2aWNlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFN3aXRjaE1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSYWRpb01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEVycm9yc01hcHBlck1vZHVsZSxcbiAgICBTZXJ2aWNlUG9ydHNGaWVsZHNldENvbXBvbmVudCxcbiAgICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICAgIERpc2FibGVkRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNTZXJ2aWNlRm9ybUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Hcm91cENvbXBvbmVudDxTZXJ2aWNlLCBTZXJ2aWNlRm9ybU1vZGVsPlxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXRcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY2x1c3Rlcjogc3RyaW5nO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBjbHVzdGVyJCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBASW5wdXQoKVxuICBpc1VwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBpc1VwZGF0ZSQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNvbnRhaW5lclBvcnRTdWdnZXN0aW9uczogQ29udGFpbmVyUG9ydFtdO1xuXG4gIEBJbnB1dCgpXG4gIHRhcmdldENvbXBvbmVudDogJ3dvcmtsb2FkJyB8ICd2bScgfCAnbGFiZWwtc2VsZWN0b3JzJyA9ICd3b3JrbG9hZCc7XG5cbiAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZID1cbiAgICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFk7XG5cbiAgRE9NQUlOX1BBVFRFUk4gPSBET01BSU5fUEFUVEVSTjtcbiAgZGlzcGxheU5hbWVLZXkgPSB0aGlzLms4c1V0aWwubm9ybWFsaXplVHlwZShESVNQTEFZX05BTUUpO1xuXG4gIGlzTGJFbmFibGVkJCA9IHRoaXMuY2x1c3RlciQucGlwZShcbiAgICBzd2l0Y2hNYXAoY2x1c3RlciA9PlxuICAgICAgdGhpcy5mZWF0dXJlR2F0ZS5pc0VuYWJsZWQoJ2xvYWRiYWxhbmNlci1zZXJ2aWNlJywgY2x1c3RlciksXG4gICAgKSxcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHR5cGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaXNVcGRhdGUkLFxuICAgIHRoaXMuaXNMYkVuYWJsZWQkLFxuICAgIHRoaXMucmVzb3VyY2UkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2lzVXBkYXRlLCBpc0xiRW5hYmxlZCwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICByZXR1cm4gaXNMYkVuYWJsZWQgfHxcbiAgICAgICAgKGlzVXBkYXRlICYmIHJlc291cmNlPy5zcGVjPy50eXBlID09PSAnTG9hZEJhbGFuY2VyJylcbiAgICAgICAgPyBTRVJWSUNFX1RZUEVTXG4gICAgICAgIDogTk9OX0xCX1NFUlZJQ0VfVFlQRVM7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgY29uc3QgdHlwZUN0cmwgPSB0aGlzLmZvcm0uZ2V0KCdzcGVjLnR5cGUnKTtcbiAgICB0eXBlQ3RybC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgc3RhcnRXaXRoKHR5cGVDdHJsLnZhbHVlKSlcbiAgICAgIC5zdWJzY3JpYmUodHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxJcEN0cmwgPSB0aGlzLmZvcm0uZ2V0KCd2aXJ0dWFsSXAnKTtcblxuICAgICAgICBpZiAodGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuZGlzYWJsZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ05vZGVQb3J0JywgJ0xvYWRCYWxhbmNlciddLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmVuYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgIT09ICdFeHRlcm5hbE5hbWUnKSB7XG4gICAgICAgICAgdGhpcy5vblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXBDdHJsLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXREZWZhdWx0Rm9ybU1vZGVsKCk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiAnU2VydmljZScsXG4gICAgICB2aXJ0dWFsSXA6IHRydWUsXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgc3BlYzoge1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IFtdLFxuICAgICAgICBleHRlcm5hbE5hbWU6ICcnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICB2aXJ0dWFsSXA6IHRoaXMuZmIuY29udHJvbCh0cnVlKSxcbiAgICAgIHNlc3Npb25QZXJzaXN0ZW5jZTogZmFsc2UsXG4gICAgICBtZXRhZGF0YTogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpLFxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkucGF0dGVybiksXG4gICAgICAgIF0pLFxuICAgICAgICBsYWJlbHM6IHRoaXMuZmIuY29udHJvbCh7fSksXG4gICAgICAgIGFubm90YXRpb25zOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBbdGhpcy5kaXNwbGF5TmFtZUtleV06ICcnLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAgc3BlYzogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIHR5cGU6ICdDbHVzdGVySVAnLFxuICAgICAgICBwb3J0czogbnVsbCxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRGb3JtTW9kZWwoe1xuICAgIHZpcnR1YWxJcCxcbiAgICBzZXNzaW9uUGVyc2lzdGVuY2UsXG4gICAgLi4ucmVzb3VyY2VcbiAgfTogU2VydmljZUZvcm1Nb2RlbCk6IFNlcnZpY2Uge1xuICAgIGNvbnN0IHNlcnZpY2UgPSB7IC4uLlNlcnZpY2VUeXBlTWV0YSwgLi4ucmVzb3VyY2UgfTtcbiAgICAvLyBgRXh0ZXJuYWxOYW1lYCB0eXBlIGp1c3QgbmVlZCBleHRlcm5hbE5hbWVcbiAgICBpZiAocmVzb3VyY2Uuc3BlYy50eXBlID09PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgc2VydmljZS5zcGVjID0ge1xuICAgICAgICB0eXBlOiAnRXh0ZXJuYWxOYW1lJyxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiByZXNvdXJjZS5zcGVjLmV4dGVybmFsTmFtZSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gc2VydmljZTtcbiAgICB9XG4gICAgLy8gSXQgbXVzdCBiZSBub24gSGVhZGxlc3MgaWYgYHZpcnR1YWxJcGAgaXMgZW5hYmxlZFxuICAgIGlmICh2aXJ0dWFsSXApIHtcbiAgICAgIGlmIChzZXJ2aWNlLnNwZWMuY2x1c3RlcklQID09PSAnTm9uZScpIHtcbiAgICAgICAgZGVsZXRlIHNlcnZpY2Uuc3BlYy5jbHVzdGVySVA7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZpcnR1YWxJcCDooqvnpoHnlKjlkI7kuLogdW5kZWZpbmVk77yMIOatpOaXtuS4jeWBmuWkhOeQhlxuICAgIGVsc2UgaWYgKHZpcnR1YWxJcCA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIEhlYWRsZXNzXG4gICAgICBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQID0gJ05vbmUnO1xuICAgIH1cblxuICAgIHNlcnZpY2Uuc3BlYy5zZXNzaW9uQWZmaW5pdHkgPSBzZXNzaW9uUGVyc2lzdGVuY2UgPyAnQ2xpZW50SVAnIDogJ05vbmUnO1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiBTZXJ2aWNlKTogU2VydmljZUZvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc291cmNlLFxuICAgICAgdmlydHVhbElwOiByZXNvdXJjZT8uc3BlYz8uY2x1c3RlcklQICE9PSAnTm9uZScsXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IHJlc291cmNlPy5zcGVjPy5zZXNzaW9uQWZmaW5pdHkgPT09ICdDbGllbnRJUCcsXG4gICAgfTtcbiAgfVxuXG4gIG9uVmlydHVhbElwQ2hhbmdlKHZpcnR1YWxJcDogYm9vbGVhbikge1xuICAgIGlmICghdmlydHVhbElwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydHNDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy5wb3J0cycpO1xuXG4gICAgaWYgKCFwb3J0c0N0cmwudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgcG9ydHNDdHJsLnBhdGNoVmFsdWUoW3t9XSk7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybVxuICBhdWlGb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4+XG4gIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cIm1ldGFkYXRhXCI+XG4gICAgPGF1aS1mb3JtLWl0ZW0gd2lkdGg9XCJsYXJnZVwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc1VwZGF0ZVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIks4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWS50aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgLz5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoWydtZXRhZGF0YScsICduYW1lJ10pLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIHBhdHRlcm46IEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWS50aXAgfCB0cmFuc2xhdGVcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbVxuICAgICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwiYW5ub3RhdGlvbnNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdkaXNwbGF5X25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGlzcGxheU5hbWVLZXlcIlxuICAgICAgLz5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3R5cGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YXVpLXJhZGlvLWdyb3VwIGZvcm1Db250cm9sTmFtZT1cInR5cGVcIj5cbiAgICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdHlwZXMkIHwgYXN5bmNcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gICAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gICAgPGRpdlxuICAgICAgYXVpRm9ybUl0ZW1IaW50XG4gICAgICAqbmdJZj1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgPlxuICAgICAge3sgJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgIFtoaWRkZW5dPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgIT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9tYXBwaW5nX2RvbWFpbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgYXVpLWlucHV0XG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIFthY2xEaXNhYmxlZF09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSAhPT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlcm5hbE5hbWVcIlxuICAgICAgW3BhdHRlcm5dPVwiRE9NQUlOX1BBVFRFUk4ucGF0dGVyblwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9kb21haW5fcGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgW2Vycm9yc109XCJmb3JtLmdldChbJ3NwZWMnLCAnZXh0ZXJuYWxOYW1lJ10pLmVycm9yc1wiXG4gICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgcGF0dGVybjogRE9NQUlOX1BBVFRFUk4udGlwIHwgdHJhbnNsYXRlXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgPC9hdWktZm9ybS1pdGVtPlxuXG4gIDwhLS0gRXh0ZXJuYWxOYW1lIOexu+Wei+aXtumakOiXj+WFtuS7luWxnuaApyAtLT5cbiAgPGRpdiBbaGlkZGVuXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiPlxuICAgIDxhdWktZm9ybS1pdGVtPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3ZpcnR1YWxfaXAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZpcnR1YWxJcFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpcnR1YWxJcENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zd2l0Y2g+XG4gICAgICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIid2aXJ0dWFsX2lwX2hpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXVpVG9vbHRpcFBvc2l0aW9uXT1cIid0b3AgY2VudGVyJ1wiXG4gICAgICAgICAgaWNvbj1cInF1ZXN0aW9uX2NpcmNsZVwiXG4gICAgICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8IS0tIOiHquWumuS5iSBDb250cm9scyAtLT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwic3BlY1wiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3BvcnRzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLXNlcnZpY2UtcG9ydHMtZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3JlcXVpcmVkXT1cIiEhZm9ybS5nZXQoJ3ZpcnR1YWxJcCcpLnZhbHVlXCJcbiAgICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICAgIG5hbWU9XCJwb3J0c1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvcnRzXCJcbiAgICAgICAgW3NlcnZpY2VUeXBlXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlXCJcbiAgICAgICAgW2NvbnRhaW5lclBvcnRTdWdnZXN0aW9uc109XCJjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcIlxuICAgICAgICBbdGFyZ2V0Q29tcG9uZW50XT1cInRhcmdldENvbXBvbmVudFwiXG4gICAgICA+PC9hY2wtc2VydmljZS1wb3J0cy1maWVsZHNldD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBjbGFzcz1cImxhc3QtZm9ybS1pdGVtLW5vLW1hcmdpblwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3Nlc3Npb25fYWZmaW5pdHknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInNlc3Npb25QZXJzaXN0ZW5jZVwiPjwvYXVpLXN3aXRjaD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
307
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8sServiceFormComponent, { className: "K8sServiceFormComponent", filePath: "lib/components/service-form/component.ts", lineNumber: 78 }); })();
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztJQ0gvRCw0Q0FHQztJQUNDLFlBQ0Y7SUFBQSxpQkFBbUI7OztJQUhqQixpQ0FBZ0I7SUFFaEIsY0FDRjtJQURFLDBDQUNGOzs7SUFFRiwrQkFHQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLDJGQUNGOztBRFBKLE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsQ0FBQztBQU0vRSx3QkFBd0I7QUF5QnhCLE1BQU0sT0FBTyx1QkFDWCxTQUFRLDhCQUF5RDtJQWlEakUsWUFDRSxRQUFrQixFQUNELE9BQXVCLEVBQ3ZCLFdBQStCO1FBRWhELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQTFDbEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVMxQixvQkFBZSxHQUEwQyxVQUFVLENBQUM7UUFFcEUsNENBQXVDLEdBQ3JDLHVDQUF1QyxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUQsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUM1RCxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixVQUFVLEVBQUUsQ0FDYixDQUFDO1FBRUYsV0FBTSxHQUFHLGFBQWEsQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxZQUFZO1lBQ2pCLElBQUksQ0FBQyxTQUFTO1NBQ2YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxPQUFPLFdBQVc7Z0JBQ2hCLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQztnQkFDckQsQ0FBQyxDQUFDLGFBQWE7Z0JBQ2YsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLFVBQVUsRUFBRSxDQUNiLENBQUM7SUFRRixDQUFDO0lBRVEsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsUUFBUSxDQUFDLFlBQVk7YUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsSUFBSSxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLG1CQUFtQjtRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxZQUFZLEVBQUUsRUFBRTthQUNqQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQyxrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtvQkFDeEIsVUFBVSxDQUFDLFFBQVE7b0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN4QixVQUFVLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQztpQkFDcEUsQ0FBQztnQkFDRixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQ3pCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUU7aUJBQzFCLENBQUM7YUFDSCxDQUFDO1lBQ0YsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNsQixJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsWUFBWSxFQUFFLEVBQUU7YUFDakIsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxjQUFjLENBQUMsRUFDdEIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixHQUFHLFFBQVEsRUFDTTtRQUNqQixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDcEQsNkNBQTZDO1FBQzdDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLElBQUksR0FBRztnQkFDYixJQUFJLEVBQUUsY0FBYztnQkFDcEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWTthQUN6QyxDQUFDO1lBQ0YsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELG9DQUFvQzthQUMvQixJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM3QixXQUFXO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDeEUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVRLGtCQUFrQixDQUFDLFFBQWlCO1FBQzNDLE9BQU87WUFDTCxHQUFHLFFBQVE7WUFDWCxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEtBQUssTUFBTTtZQUMvQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsS0FBSyxVQUFVO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBa0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzt3RkF6S1UsdUJBQXVCO29FQUF2Qix1QkFBdUI7O1lDN0VwQywrQkFHQztZQUNDLGdDQUF1QztZQUVuQyxBQURGLHdDQUE2QixlQUNIO1lBQUEsWUFBd0I7O1lBQUEsaUJBQVE7WUFDeEQsMkJBUUU7O1lBQ0YsdUNBTXFCOztZQUN2QixpQkFBZ0I7WUFNZCxBQUpGLHlDQUdDLGdCQUN5QjtZQUFBLGFBQWdDOztZQUFBLGlCQUFRO1lBQ2hFLDRCQUlFO1lBQ0osaUJBQWdCOztZQUloQixBQURGLHlDQUFvQyxnQkFDVjtZQUFBLGFBQXdCOztZQUFBLGlCQUFRO1lBQ3hELDJDQUF3QztZQUN0QyxxR0FHQzs7WUFHSCxpQkFBa0I7WUFDbEIsMkVBR0M7WUFHSCxpQkFBZ0I7WUFRZCxBQU5GLDBDQUtDLGdCQUN5QjtZQUN0QixhQUNGOztZQUFBLGlCQUFRO1lBQ1IsNkJBV0U7O1lBQ0Ysd0NBT29COztZQUN0QixpQkFBZ0I7WUFLWixBQURGLEFBREYsZ0NBQW9FLHFCQUNuRCxnQkFDVztZQUFBLGFBQXNDOztZQUFBLGlCQUFRO1lBQ3RFLHVDQUdDO1lBREMsMkhBQWUsNkJBQXlCLElBQUM7WUFDMUMsaUJBQWE7WUFDZCxnQ0FBc0I7WUFDcEIsZ0NBS1k7O1lBRWhCLEFBREUsaUJBQU0sRUFDUTtZQUdoQixtQkFBeUI7WUFHdkIsQUFERix5Q0FBb0MsZ0JBQ1Y7WUFBQSxhQUFnQzs7WUFBQSxpQkFBUTtZQUNoRSxrREFVOEI7WUFDaEMsaUJBQWdCO1lBR2QsQUFERiwwQ0FBZ0QsZ0JBQ3RCO1lBQUEsYUFFdEI7O1lBQUEsaUJBQVE7WUFDVixrQ0FBOEQ7WUFHcEUsQUFERSxBQURFLGlCQUFnQixFQUNaLEVBQ0Q7O1lBaElMLG9DQUFrQjtZQUlVLGVBQXdCO1lBQXhCLG1EQUF3QjtZQUU5QyxlQUE2QjtZQU03QixBQU5BLCtDQUE2Qix1RkFNMEM7WUFJdkUsZUFBZ0Q7WUFDaEQsQUFEQSx5RUFBZ0QscUhBRzlDO1lBUW9CLGVBQWdDO1lBQWhDLDREQUFnQztZQUl0RCxlQUFrQztZQUFsQyxvREFBa0M7WUFNZCxlQUF3QjtZQUF4QixvREFBd0I7WUFHekIsZUFBaUI7WUFBakIsNERBQWlCO1lBUXJDLGVBQXlEO1lBQXpELHlGQUF5RDtZQVU1RCxjQUE4RDtZQUE5RCwyRkFBOEQ7WUFHNUQsZUFDRjtZQURFLHVHQUNGO1lBS0UsZUFBbUU7WUFJbkUsQUFEQSxBQUZBLEFBREEsZ0dBQW1FLGdGQUNILHVDQUU5QiwyRkFHakM7WUFJRCxlQUFvRDtZQUNwRCxBQURBLHlFQUFvRCw2RkFHbEQ7WUFNRCxlQUE4RDtZQUE5RCwyRkFBOEQ7WUFFdkMsZUFBc0M7WUFBdEMsa0VBQXNDO1lBTzFELGVBQW9EO1lBQ3BELEFBREEsOEVBQW9ELG9DQUNqQjtZQVdmLGVBQWdDO1lBQWhDLDREQUFnQztZQUl0RCxlQUEwQztZQU0xQyxBQURBLEFBREEsQUFIQSxBQURBLDREQUEwQyxtRkFDeUIsZ0VBR25CLDBEQUNLLHdDQUNsQjtZQUtiLGVBRXRCO1lBRnNCLHdFQUV0Qjs0QkRuRUosU0FBUztZQUNULFVBQVUsa0xBQ1YsV0FBVyxxQkFDWCxJQUFJO1lBQ0osS0FBSztZQUNMLFdBQVcscUlBQ1gsbUJBQW1CLCtEQUNuQixZQUFZLHNCQUNaLFVBQVUsc0NBRVYsV0FBVyxtREFDWCxhQUFhLGlEQUViLDZCQUE2QjtZQUM3QixzQkFBc0I7WUFDdEIsaUJBQWlCOztBQVduQjtJQURDLGVBQWUsRUFBRTs4QkFDUCxVQUFVO3lEQUFTO0FBTTlCO0lBREMsZUFBZSxFQUFFOzhCQUNOLFVBQVU7MERBQVU7aUZBZHJCLHVCQUF1QjtjQXhCbkMsU0FBUzs2QkFDSSxJQUFJLFlBQ04sc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsU0FBUztvQkFDVCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixLQUFLO29CQUNMLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsZ0JBQWdCO29CQUNoQixXQUFXO29CQUNYLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQiw2QkFBNkI7b0JBQzdCLHNCQUFzQjtvQkFDdEIsaUJBQWlCO2lCQUNsQjt1R0FPRCxPQUFPO2tCQUROLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFFBQVEsTUFHUixRQUFRO2tCQURQLEtBQUs7WUFJTixTQUFTLE1BR1Qsd0JBQXdCO2tCQUR2QixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixlQUFlO2tCQURkLEtBQUs7O2tGQW5CSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFN3aXRjaE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDb250YWluZXJQb3J0LFxuICBESVNQTEFZX05BTUUsXG4gIFNFUlZJQ0VfVFlQRVMsXG4gIEZlYXR1cmVHYXRlU2VydmljZSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgU2VydmljZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIERpc2FibGVkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIERPTUFJTl9QQVRURVJOLFxuICBTZXJ2aWNlVHlwZU1ldGEsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNlcnZpY2VQb3J0c0ZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHNldC9jb21wb25lbnQnO1xuXG5jb25zdCBOT05fTEJfU0VSVklDRV9UWVBFUyA9IFNFUlZJQ0VfVFlQRVMuZmlsdGVyKG9wID0+IG9wICE9PSAnTG9hZEJhbGFuY2VyJyk7XG5pbnRlcmZhY2UgU2VydmljZUZvcm1Nb2RlbCBleHRlbmRzIFNlcnZpY2Uge1xuICB2aXJ0dWFsSXA/OiBib29sZWFuOyAvLyDomZrmi58gaXDvvIzkuLogZmFsc2Ug5pe26ZyA6KaB6K6+572uIHNwZWMuY2x1c3RlcklwOiBOb25lXG4gIHNlc3Npb25QZXJzaXN0ZW5jZT86IGJvb2xlYW47IC8vIOS8muivneS/neaMge+8jOWvueW6lCBzcGVjLnNlc3Npb25BZmZpbml0eTogQ2xpZW50SVAvTm9uZVxufVxuXG4vLyBLOHMgYmFzZSBzZXJ2aWNlIGZvcm1cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1rOHMtc2VydmljZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTd2l0Y2hNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBEaXNhYmxlZERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSzhzU2VydmljZUZvcm1Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQ8U2VydmljZSwgU2VydmljZUZvcm1Nb2RlbD5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNsdXN0ZXI6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgY2x1c3RlciQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQElucHV0KClcbiAgaXNVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgaXNVcGRhdGUkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM6IENvbnRhaW5lclBvcnRbXTtcblxuICBASW5wdXQoKVxuICB0YXJnZXRDb21wb25lbnQ6ICd3b3JrbG9hZCcgfCAndm0nIHwgJ2xhYmVsLXNlbGVjdG9ycycgPSAnd29ya2xvYWQnO1xuXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSA9XG4gICAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIERPTUFJTl9QQVRURVJOID0gRE9NQUlOX1BBVFRFUk47XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcblxuICBpc0xiRW5hYmxlZCQgPSB0aGlzLmNsdXN0ZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNsdXN0ZXIgPT5cbiAgICAgIHRoaXMuZmVhdHVyZUdhdGUuaXNFbmFibGVkKCdsb2FkYmFsYW5jZXItc2VydmljZScsIGNsdXN0ZXIpLFxuICAgICksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB0eXBlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlzVXBkYXRlJCxcbiAgICB0aGlzLmlzTGJFbmFibGVkJCxcbiAgICB0aGlzLnJlc291cmNlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpc1VwZGF0ZSwgaXNMYkVuYWJsZWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIGlzTGJFbmFibGVkIHx8XG4gICAgICAgIChpc1VwZGF0ZSAmJiByZXNvdXJjZT8uc3BlYz8udHlwZSA9PT0gJ0xvYWRCYWxhbmNlcicpXG4gICAgICAgID8gU0VSVklDRV9UWVBFU1xuICAgICAgICA6IE5PTl9MQl9TRVJWSUNFX1RZUEVTO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHR5cGVDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy50eXBlJyk7XG4gICAgdHlwZUN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIHN0YXJ0V2l0aCh0eXBlQ3RybC52YWx1ZSkpXG4gICAgICAuc3Vic2NyaWJlKHR5cGUgPT4ge1xuICAgICAgICBjb25zdCB2aXJ0dWFsSXBDdHJsID0gdGhpcy5mb3JtLmdldCgndmlydHVhbElwJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydOb2RlUG9ydCcsICdMb2FkQmFsYW5jZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5lbmFibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlICE9PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgICAgIHRoaXMub25WaXJ0dWFsSXBDaGFuZ2UodmlydHVhbElwQ3RybC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBTZXJ2aWNlRm9ybU1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ1NlcnZpY2UnLFxuICAgICAgdmlydHVhbElwOiB0cnVlLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiBmYWxzZSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgdHlwZTogJ0NsdXN0ZXJJUCcsXG4gICAgICAgIHBvcnRzOiBbXSxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdmlydHVhbElwOiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSksXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2woJycsIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgICBdKSxcbiAgICAgICAgbGFiZWxzOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgW3RoaXMuZGlzcGxheU5hbWVLZXldOiAnJyxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIHNwZWM6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IG51bGwsXG4gICAgICAgIGV4dGVybmFsTmFtZTogJycsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0Rm9ybU1vZGVsKHtcbiAgICB2aXJ0dWFsSXAsXG4gICAgc2Vzc2lvblBlcnNpc3RlbmNlLFxuICAgIC4uLnJlc291cmNlXG4gIH06IFNlcnZpY2VGb3JtTW9kZWwpOiBTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlID0geyAuLi5TZXJ2aWNlVHlwZU1ldGEsIC4uLnJlc291cmNlIH07XG4gICAgLy8gYEV4dGVybmFsTmFtZWAgdHlwZSBqdXN0IG5lZWQgZXh0ZXJuYWxOYW1lXG4gICAgaWYgKHJlc291cmNlLnNwZWMudHlwZSA9PT0gJ0V4dGVybmFsTmFtZScpIHtcbiAgICAgIHNlcnZpY2Uuc3BlYyA9IHtcbiAgICAgICAgdHlwZTogJ0V4dGVybmFsTmFtZScsXG4gICAgICAgIGV4dGVybmFsTmFtZTogcmVzb3VyY2Uuc3BlYy5leHRlcm5hbE5hbWUsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNlcnZpY2U7XG4gICAgfVxuICAgIC8vIEl0IG11c3QgYmUgbm9uIEhlYWRsZXNzIGlmIGB2aXJ0dWFsSXBgIGlzIGVuYWJsZWRcbiAgICBpZiAodmlydHVhbElwKSB7XG4gICAgICBpZiAoc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9PT0gJ05vbmUnKSB7XG4gICAgICAgIGRlbGV0ZSBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB2aXJ0dWFsSXAg6KKr56aB55So5ZCO5Li6IHVuZGVmaW5lZO+8jCDmraTml7bkuI3lgZrlpITnkIZcbiAgICBlbHNlIGlmICh2aXJ0dWFsSXAgPT09IGZhbHNlKSB7XG4gICAgICAvLyBIZWFkbGVzc1xuICAgICAgc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9ICdOb25lJztcbiAgICB9XG5cbiAgICBzZXJ2aWNlLnNwZWMuc2Vzc2lvbkFmZmluaXR5ID0gc2Vzc2lvblBlcnNpc3RlbmNlID8gJ0NsaWVudElQJyA6ICdOb25lJztcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogU2VydmljZSk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICAgIHZpcnR1YWxJcDogcmVzb3VyY2U/LnNwZWM/LmNsdXN0ZXJJUCAhPT0gJ05vbmUnLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiByZXNvdXJjZT8uc3BlYz8uc2Vzc2lvbkFmZmluaXR5ID09PSAnQ2xpZW50SVAnLFxuICAgIH07XG4gIH1cblxuICBvblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXA6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXZpcnR1YWxJcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRzQ3RybCA9IHRoaXMuZm9ybS5nZXQoJ3NwZWMucG9ydHMnKTtcblxuICAgIGlmICghcG9ydHNDdHJsLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHBvcnRzQ3RybC5wYXRjaFZhbHVlKFt7fV0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm1cbiAgYXVpRm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuPlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiPlxuICAgIDxhdWktZm9ybS1pdGVtIHdpZHRoPVwibGFyZ2VcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNVcGRhdGVcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KFsnbWV0YWRhdGEnLCAnbmFtZSddKS5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBwYXR0ZXJuOiBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuXG4gICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgIHdpZHRoPVwibGFyZ2VcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cImFubm90YXRpb25zXCJcbiAgICA+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnZGlzcGxheV9uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRpc3BsYXlOYW1lS2V5XCJcbiAgICAgIC8+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwic3BlY1wiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICd0eXBlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGF1aS1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCI+XG4gICAgICA8YXVpLXJhZGlvLWJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHR5cGVzJCB8IGFzeW5jXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgIDwvYXVpLXJhZGlvLWdyb3VwPlxuICAgIDxkaXZcbiAgICAgIGF1aUZvcm1JdGVtSGludFxuICAgICAgKm5nSWY9XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgID5cbiAgICAgIHt7ICduZXR3b3JrLnNlcnZpY2VfZXh0ZXJuYWxfbmFtZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgIFtoaWRkZW5dPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgIT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX21hcHBpbmdfZG9tYWluJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBhdWktaW5wdXRcbiAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlICE9PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgPT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsTmFtZVwiXG4gICAgICBbcGF0dGVybl09XCJET01BSU5fUEFUVEVSTi5wYXR0ZXJuXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX2RvbWFpbl9wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoWydzcGVjJywgJ2V4dGVybmFsTmFtZSddKS5lcnJvcnNcIlxuICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgIHBhdHRlcm46IERPTUFJTl9QQVRURVJOLnRpcCB8IHRyYW5zbGF0ZVxuICAgICAgfVwiXG4gICAgPlxuICAgIDwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDwvYXVpLWZvcm0taXRlbT5cblxuICA8IS0tIEV4dGVybmFsTmFtZSDnsbvlnovml7bpmpDol4/lhbbku5blsZ7mgKcgLS0+XG4gIDxkaXYgW2hpZGRlbl09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIj5cbiAgICA8YXVpLWZvcm0taXRlbT5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduZXR3b3JrLnZpcnR1YWxfaXAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZpcnR1YWxJcFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpcnR1YWxJcENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zd2l0Y2g+XG4gICAgICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIiduZXR3b3JrLnZpcnR1YWxfaXBfaGludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgICAgICBpY29uPVwicXVlc3Rpb25fY2lyY2xlXCJcbiAgICAgICAgICBjbGFzcz1cImljb24tLWhlbHBcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDwhLS0g6Ieq5a6a5LmJIENvbnRyb2xzIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnbmV0d29yay5wb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLXNlcnZpY2UtcG9ydHMtZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3JlcXVpcmVkXT1cIiEhZm9ybS5nZXQoJ3ZpcnR1YWxJcCcpLnZhbHVlXCJcbiAgICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICAgIG5hbWU9XCJwb3J0c1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvcnRzXCJcbiAgICAgICAgW3NlcnZpY2VUeXBlXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlXCJcbiAgICAgICAgW2NvbnRhaW5lclBvcnRTdWdnZXN0aW9uc109XCJjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcIlxuICAgICAgICBbdGFyZ2V0Q29tcG9uZW50XT1cInRhcmdldENvbXBvbmVudFwiXG4gICAgICA+PC9hY2wtc2VydmljZS1wb3J0cy1maWVsZHNldD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBjbGFzcz1cImxhc3QtZm9ybS1pdGVtLW5vLW1hcmdpblwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3tcbiAgICAgICAgJ25ldHdvcmsuc2Vzc2lvbl9hZmZpbml0eScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInNlc3Npb25QZXJzaXN0ZW5jZVwiPjwvYXVpLXN3aXRjaD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19