@alauda-fe/network 1.0.5 → 1.0.7
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.
- package/esm2022/index.mjs +2 -14
- package/esm2022/lib/types/k8s-exports.mjs +29 -2
- package/esm2022/lib/types/resource-definition.mjs +11 -1
- package/esm2022/lib/utils/domain-exports.mjs +16 -0
- package/esm2022/lib/utils/validators-exports.mjs +1 -1
- package/index.d.ts +1 -13
- package/lib/types/k8s-exports.d.ts +248 -1
- package/lib/types/resource-definition.d.ts +24 -0
- package/package.json +1 -1
- package/styles.css +1 -1
- package/esm2022/lib/components/loadbalancer-spec-form/component.mjs +0 -251
- package/esm2022/lib/components/service-annotations-form/annotations.component.mjs +0 -675
- package/esm2022/lib/components/service-annotations-form-item/annotations.component.mjs +0 -105
- package/esm2022/lib/features/network-policy/components/add-peer-rule-handler/component.mjs +0 -69
- package/esm2022/lib/features/network-policy/components/ip-block-display/component.mjs +0 -54
- package/esm2022/lib/features/network-policy/components/label-selector-display/component.mjs +0 -117
- package/esm2022/lib/features/network-policy/components/peer-container/component.mjs +0 -81
- package/esm2022/lib/features/network-policy/components/pod-review/component.mjs +0 -250
- package/esm2022/lib/features/network-policy/components/rule-table/component.mjs +0 -269
- package/esm2022/lib/features/network-policy/form/network-policy/component.mjs +0 -429
- package/esm2022/lib/features/network-policy/form/network-policy-ip-block/component.mjs +0 -102
- package/esm2022/lib/features/network-policy/form/network-policy-peer/component.mjs +0 -247
- package/esm2022/lib/features/network-policy/form/network-policy-ports/component.mjs +0 -161
- package/esm2022/lib/features/network-policy/form/network-policy-remote-except-input/component.mjs +0 -128
- package/esm2022/lib/features/network-policy/form/network-policy-rule/component.mjs +0 -142
- package/esm2022/lib/services/alb-api.service.mjs +0 -68
- package/esm2022/lib/services/subnet-util.service.mjs +0 -118
- package/esm2022/lib/types/alb-exports.mjs +0 -14
- package/esm2022/lib/types/metallb-exports.mjs +0 -2
- package/esm2022/lib/utils/alb-exports.mjs +0 -108
- package/esm2022/lib/utils/alb-internals.mjs +0 -2
- package/esm2022/lib/utils/common-exports.mjs +0 -22
- package/lib/components/loadbalancer-spec-form/component.d.ts +0 -34
- package/lib/components/service-annotations-form/annotations.component.d.ts +0 -74
- package/lib/components/service-annotations-form-item/annotations.component.d.ts +0 -14
- package/lib/features/network-policy/components/add-peer-rule-handler/component.d.ts +0 -8
- package/lib/features/network-policy/components/ip-block-display/component.d.ts +0 -7
- package/lib/features/network-policy/components/label-selector-display/component.d.ts +0 -13
- package/lib/features/network-policy/components/peer-container/component.d.ts +0 -18
- package/lib/features/network-policy/components/pod-review/component.d.ts +0 -37
- package/lib/features/network-policy/components/rule-table/component.d.ts +0 -21
- package/lib/features/network-policy/form/network-policy/component.d.ts +0 -70
- package/lib/features/network-policy/form/network-policy-ip-block/component.d.ts +0 -23
- package/lib/features/network-policy/form/network-policy-peer/component.d.ts +0 -43
- package/lib/features/network-policy/form/network-policy-ports/component.d.ts +0 -17
- package/lib/features/network-policy/form/network-policy-remote-except-input/component.d.ts +0 -23
- package/lib/features/network-policy/form/network-policy-rule/component.d.ts +0 -28
- package/lib/services/alb-api.service.d.ts +0 -18
- package/lib/services/subnet-util.service.d.ts +0 -26
- package/lib/types/alb-exports.d.ts +0 -52
- package/lib/types/metallb-exports.d.ts +0 -65
- package/lib/utils/alb-exports.d.ts +0 -16
- package/lib/utils/alb-internals.d.ts +0 -10
- /package/lib/utils/{common-exports.d.ts → domain-exports.d.ts} +0 -0
|
@@ -1,429 +0,0 @@
|
|
|
1
|
-
import { ButtonModule, CheckboxModule, ConfirmType, DialogService, FormModule, IconModule, InputModule, TabsModule, } from '@alauda/ui';
|
|
2
|
-
import { DISPLAY_NAME, DeclareDirective, ERRORS_MAPPER_MODULE, EffectDirectiveModule, K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY, K8sUtilService, KeyValueFormTableComponent, ReadonlyFieldDirective, SPEC, TRANSLATE_MODULE, TranslateService, getK8sResourceLabelErrorMapper$, k8sResourceLabelValidator, } from '@alauda-fe/common';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { ChangeDetectionStrategy, Component, Injector, Input, } from '@angular/core';
|
|
5
|
-
import { Validators, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
-
import { has, uniq } from 'lodash-es';
|
|
7
|
-
import { BaseResourceFormGroupComponent } from 'ng-resource-form-util';
|
|
8
|
-
import { PodPreviewComponent } from '../../components/pod-review/component';
|
|
9
|
-
import { NetworkPolicyRuleFormComponent } from '../network-policy-rule/component';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@alauda-fe/common";
|
|
12
|
-
import * as i2 from "@alauda/ui";
|
|
13
|
-
import * as i3 from "@angular/common";
|
|
14
|
-
import * as i4 from "@angular/forms";
|
|
15
|
-
const _c0 = a0 => ({ pattern: a0 });
|
|
16
|
-
const _c1 = () => ["spec", "podSelector", "matchLabels"];
|
|
17
|
-
const _c2 = a0 => ({ xxx: a0 });
|
|
18
|
-
const _c3 = a0 => ["spec", a0];
|
|
19
|
-
const _c4 = (a0, a1) => ({ policyType: a0, ruleDisabled: a1 });
|
|
20
|
-
function NetworkPolicyFormComponent_ng_template_29_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
-
i0.ɵɵelementStart(0, "span", 17);
|
|
22
|
-
i0.ɵɵtext(1);
|
|
23
|
-
i0.ɵɵpipe(2, "translate");
|
|
24
|
-
i0.ɵɵelementEnd();
|
|
25
|
-
} if (rf & 2) {
|
|
26
|
-
i0.ɵɵadvance();
|
|
27
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "network.target_pod_selector_no_data_tip"));
|
|
28
|
-
} }
|
|
29
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_ng_container_1_aui_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
i0.ɵɵelement(0, "aui-icon", 31);
|
|
31
|
-
} }
|
|
32
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
i0.ɵɵelementContainerStart(0);
|
|
34
|
-
i0.ɵɵtemplate(1, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_ng_container_1_aui_icon_1_Template, 1, 0, "aui-icon", 30);
|
|
35
|
-
i0.ɵɵelementStart(2, "span");
|
|
36
|
-
i0.ɵɵtext(3);
|
|
37
|
-
i0.ɵɵpipe(4, "translate");
|
|
38
|
-
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵelementContainerEnd();
|
|
40
|
-
} if (rf & 2) {
|
|
41
|
-
const control_r6 = i0.ɵɵnextContext().ngIf;
|
|
42
|
-
const policyType_r2 = i0.ɵɵnextContext(4).$implicit;
|
|
43
|
-
i0.ɵɵadvance();
|
|
44
|
-
i0.ɵɵproperty("ngIf", control_r6.invalid && control_r6.dirty);
|
|
45
|
-
i0.ɵɵadvance(2);
|
|
46
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 2, policyType_r2), " ");
|
|
47
|
-
} }
|
|
48
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
-
i0.ɵɵelementContainerStart(0);
|
|
50
|
-
i0.ɵɵtemplate(1, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_ng_container_1_Template, 5, 4, "ng-container", 28);
|
|
51
|
-
i0.ɵɵelement(2, "acl-network-policy-rule-form", 29);
|
|
52
|
-
i0.ɵɵelementContainerEnd();
|
|
53
|
-
} if (rf & 2) {
|
|
54
|
-
const control_r6 = ctx.ngIf;
|
|
55
|
-
const policyType_r2 = i0.ɵɵnextContext(4).$implicit;
|
|
56
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
57
|
-
i0.ɵɵadvance(2);
|
|
58
|
-
i0.ɵɵproperty("formControl", control_r6)("baseParams", ctx_r2.baseParams)("policyType", policyType_r2);
|
|
59
|
-
} }
|
|
60
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
62
|
-
i0.ɵɵelementStart(0, "aui-tab", 27);
|
|
63
|
-
i0.ɵɵlistener("close", function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_Template_aui_tab_close_0_listener() { const index_r5 = i0.ɵɵrestoreView(_r4).index; const policyType_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.removeRule(index_r5, policyType_r2)); });
|
|
64
|
-
i0.ɵɵtemplate(1, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_ng_container_1_Template, 3, 3, "ng-container", 24);
|
|
65
|
-
i0.ɵɵelementEnd();
|
|
66
|
-
} if (rf & 2) {
|
|
67
|
-
const item_r7 = ctx.$implicit;
|
|
68
|
-
i0.ɵɵproperty("closeable", true);
|
|
69
|
-
i0.ɵɵadvance();
|
|
70
|
-
i0.ɵɵproperty("ngIf", item_r7);
|
|
71
|
-
} }
|
|
72
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
-
i0.ɵɵelementContainerStart(0);
|
|
74
|
-
i0.ɵɵelementStart(1, "aui-tab-group", 25);
|
|
75
|
-
i0.ɵɵtemplate(2, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_aui_tab_2_Template, 2, 2, "aui-tab", 26);
|
|
76
|
-
i0.ɵɵelementEnd();
|
|
77
|
-
i0.ɵɵelementContainerEnd();
|
|
78
|
-
} if (rf & 2) {
|
|
79
|
-
const ruleControls_r8 = i0.ɵɵnextContext().declare;
|
|
80
|
-
i0.ɵɵadvance(2);
|
|
81
|
-
i0.ɵɵproperty("ngForOf", ruleControls_r8);
|
|
82
|
-
} }
|
|
83
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
-
i0.ɵɵelementContainerStart(0);
|
|
85
|
-
i0.ɵɵelementContainer(1, 32);
|
|
86
|
-
i0.ɵɵelementContainerEnd();
|
|
87
|
-
} if (rf & 2) {
|
|
88
|
-
const policyType_r2 = i0.ɵɵnextContext(2).$implicit;
|
|
89
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
90
|
-
const emptyTemplate_r9 = i0.ɵɵreference(33);
|
|
91
|
-
i0.ɵɵadvance();
|
|
92
|
-
i0.ɵɵproperty("ngTemplateOutlet", emptyTemplate_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c4, policyType_r2, ctx_r2.ruleDisabledStateMap[policyType_r2]));
|
|
93
|
-
} }
|
|
94
|
-
function NetworkPolicyFormComponent_ng_container_31_ng_container_14_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
-
i0.ɵɵelementContainerStart(0);
|
|
96
|
-
i0.ɵɵtemplate(1, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_1_Template, 3, 1, "ng-container", 24)(2, NetworkPolicyFormComponent_ng_container_31_ng_container_14_ng_container_2_Template, 2, 5, "ng-container", 24);
|
|
97
|
-
i0.ɵɵelementContainerEnd();
|
|
98
|
-
} if (rf & 2) {
|
|
99
|
-
const ruleControls_r8 = ctx.declare;
|
|
100
|
-
const policyType_r2 = i0.ɵɵnextContext().$implicit;
|
|
101
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
102
|
-
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.ruleDisabledStateMap[policyType_r2] && ruleControls_r8.length);
|
|
104
|
-
i0.ɵɵadvance();
|
|
105
|
-
i0.ɵɵproperty("ngIf", !ruleControls_r8.length || ctx_r2.ruleDisabledStateMap[policyType_r2]);
|
|
106
|
-
} }
|
|
107
|
-
function NetworkPolicyFormComponent_ng_container_31_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
109
|
-
i0.ɵɵelementContainerStart(0);
|
|
110
|
-
i0.ɵɵelementStart(1, "div", 18)(2, "div", 10);
|
|
111
|
-
i0.ɵɵtext(3);
|
|
112
|
-
i0.ɵɵpipe(4, "translate");
|
|
113
|
-
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(5, "div", 19)(6, "button", 20);
|
|
115
|
-
i0.ɵɵlistener("click", function NetworkPolicyFormComponent_ng_container_31_Template_button_click_6_listener() { const policyType_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.addRule(policyType_r2)); });
|
|
116
|
-
i0.ɵɵelement(7, "aui-icon", 21);
|
|
117
|
-
i0.ɵɵtext(8);
|
|
118
|
-
i0.ɵɵpipe(9, "translate");
|
|
119
|
-
i0.ɵɵpipe(10, "translate");
|
|
120
|
-
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵelementStart(11, "aui-checkbox", 22);
|
|
122
|
-
i0.ɵɵlistener("valueChange", function NetworkPolicyFormComponent_ng_container_31_Template_aui_checkbox_valueChange_11_listener($event) { const policyType_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ruleDisabledChanged($event, policyType_r2)); });
|
|
123
|
-
i0.ɵɵtext(12);
|
|
124
|
-
i0.ɵɵpipe(13, "translate");
|
|
125
|
-
i0.ɵɵelementEnd()()();
|
|
126
|
-
i0.ɵɵtemplate(14, NetworkPolicyFormComponent_ng_container_31_ng_container_14_Template, 3, 2, "ng-container", 23);
|
|
127
|
-
i0.ɵɵelementContainerEnd();
|
|
128
|
-
} if (rf & 2) {
|
|
129
|
-
const policyType_r2 = ctx.$implicit;
|
|
130
|
-
const i_r10 = ctx.index;
|
|
131
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
132
|
-
i0.ɵɵadvance();
|
|
133
|
-
i0.ɵɵclassMap(i_r10 === 1 ? "tw-mt-16" : "");
|
|
134
|
-
i0.ɵɵadvance(2);
|
|
135
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 9, "network.direction_" + policyType_r2), " ");
|
|
136
|
-
i0.ɵɵadvance(3);
|
|
137
|
-
i0.ɵɵproperty("plain", true)("disabled", ctx_r2.ruleDisabledStateMap[policyType_r2]);
|
|
138
|
-
i0.ɵɵadvance(2);
|
|
139
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(10, 13, "add_xxx", i0.ɵɵpureFunction1(18, _c2, i0.ɵɵpipeBind1(9, 11, policyType_r2))), " ");
|
|
140
|
-
i0.ɵɵadvance(3);
|
|
141
|
-
i0.ɵɵproperty("value", ctx_r2.ruleDisabledStateMap[policyType_r2]);
|
|
142
|
-
i0.ɵɵadvance();
|
|
143
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 16, "network.block_all_" + policyType_r2 + "_traffic"));
|
|
144
|
-
i0.ɵɵadvance(2);
|
|
145
|
-
i0.ɵɵproperty("declare", ctx_r2.form.get(i0.ɵɵpureFunction1(20, _c3, policyType_r2)).controls);
|
|
146
|
-
} }
|
|
147
|
-
function NetworkPolicyFormComponent_ng_template_32_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
-
i0.ɵɵelementStart(0, "span", 35);
|
|
149
|
-
i0.ɵɵtext(1);
|
|
150
|
-
i0.ɵɵpipe(2, "translate");
|
|
151
|
-
i0.ɵɵelementEnd();
|
|
152
|
-
} if (rf & 2) {
|
|
153
|
-
const policyType_r11 = i0.ɵɵnextContext().policyType;
|
|
154
|
-
i0.ɵɵadvance();
|
|
155
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "network." + policyType_r11 + "_rule_no_data_tip"), " ");
|
|
156
|
-
} }
|
|
157
|
-
function NetworkPolicyFormComponent_ng_template_32_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
-
i0.ɵɵelementStart(0, "span");
|
|
159
|
-
i0.ɵɵtext(1);
|
|
160
|
-
i0.ɵɵpipe(2, "translate");
|
|
161
|
-
i0.ɵɵelementEnd();
|
|
162
|
-
} if (rf & 2) {
|
|
163
|
-
const policyType_r11 = i0.ɵɵnextContext().policyType;
|
|
164
|
-
i0.ɵɵadvance();
|
|
165
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "network.block_all_" + policyType_r11 + "_tip"));
|
|
166
|
-
} }
|
|
167
|
-
function NetworkPolicyFormComponent_ng_template_32_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
-
i0.ɵɵelementStart(0, "div", 33);
|
|
169
|
-
i0.ɵɵtemplate(1, NetworkPolicyFormComponent_ng_template_32_span_1_Template, 3, 3, "span", 34)(2, NetworkPolicyFormComponent_ng_template_32_span_2_Template, 3, 3, "span", 24);
|
|
170
|
-
i0.ɵɵelementEnd();
|
|
171
|
-
} if (rf & 2) {
|
|
172
|
-
const ruleDisabled_r12 = ctx.ruleDisabled;
|
|
173
|
-
i0.ɵɵadvance();
|
|
174
|
-
i0.ɵɵproperty("ngIf", !ruleDisabled_r12);
|
|
175
|
-
i0.ɵɵadvance();
|
|
176
|
-
i0.ɵɵproperty("ngIf", ruleDisabled_r12);
|
|
177
|
-
} }
|
|
178
|
-
const PolicyTypes = ['ingress', 'egress'];
|
|
179
|
-
export class NetworkPolicyFormComponent extends BaseResourceFormGroupComponent {
|
|
180
|
-
get ingressRuleFormArray() {
|
|
181
|
-
return this.form.get([SPEC, 'ingress']);
|
|
182
|
-
}
|
|
183
|
-
get ingressRuleControls() {
|
|
184
|
-
return this.ingressRuleFormArray.controls ?? [];
|
|
185
|
-
}
|
|
186
|
-
get egressRuleFormArray() {
|
|
187
|
-
return this.form.get([SPEC, 'egress']);
|
|
188
|
-
}
|
|
189
|
-
get egressRuleControls() {
|
|
190
|
-
return [...(this.egressRuleFormArray.controls ?? [])];
|
|
191
|
-
}
|
|
192
|
-
constructor(injector, k8sUtil, translate, dialog) {
|
|
193
|
-
super(injector);
|
|
194
|
-
this.k8sUtil = k8sUtil;
|
|
195
|
-
this.translate = translate;
|
|
196
|
-
this.dialog = dialog;
|
|
197
|
-
this.isUpdate = false;
|
|
198
|
-
this.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY = K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY;
|
|
199
|
-
this.labelValidator = k8sResourceLabelValidator;
|
|
200
|
-
this.labelErrorMapper$ = getK8sResourceLabelErrorMapper$(this.translate);
|
|
201
|
-
this.PolicyTypes = PolicyTypes;
|
|
202
|
-
this.displayNameKey = this.k8sUtil.normalizeType(DISPLAY_NAME);
|
|
203
|
-
this.ruleDisabledStateMap = {
|
|
204
|
-
ingress: false,
|
|
205
|
-
egress: false,
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
createForm() {
|
|
209
|
-
const metadataForm = this.fb.group({
|
|
210
|
-
name: this.fb.control('', [
|
|
211
|
-
Validators.required,
|
|
212
|
-
Validators.pattern(K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.pattern),
|
|
213
|
-
]),
|
|
214
|
-
namespace: this.fb.control(''),
|
|
215
|
-
annotations: this.fb.group({
|
|
216
|
-
[this.displayNameKey]: this.fb.control(''),
|
|
217
|
-
}),
|
|
218
|
-
});
|
|
219
|
-
const specForm = this.fb.group({
|
|
220
|
-
podSelector: this.fb.group({
|
|
221
|
-
matchLabels: this.fb.control(null),
|
|
222
|
-
}),
|
|
223
|
-
ingress: this.fb.array([]),
|
|
224
|
-
egress: this.fb.array([]),
|
|
225
|
-
policyTypes: this.fb.control([]),
|
|
226
|
-
});
|
|
227
|
-
return this.fb.group({
|
|
228
|
-
metadata: metadataForm,
|
|
229
|
-
spec: specForm,
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
getOnFormArrayResizeFn() {
|
|
233
|
-
return () => {
|
|
234
|
-
return this.fb.control({});
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
adaptResourceModel(resource) {
|
|
238
|
-
if (!resource) {
|
|
239
|
-
return resource;
|
|
240
|
-
}
|
|
241
|
-
this.updateRuleDisabledStateMap(resource);
|
|
242
|
-
if (this.ruleDisabledStateMap.ingress) {
|
|
243
|
-
resource.spec.policyTypes = ['Ingress'];
|
|
244
|
-
}
|
|
245
|
-
if (this.ruleDisabledStateMap.egress) {
|
|
246
|
-
resource.spec.policyTypes = uniq([
|
|
247
|
-
...(resource.spec.policyTypes ?? []),
|
|
248
|
-
'Egress',
|
|
249
|
-
]);
|
|
250
|
-
}
|
|
251
|
-
return resource;
|
|
252
|
-
}
|
|
253
|
-
async ruleDisabledChanged(disabled, policyType) {
|
|
254
|
-
const ruleFormArray = this.form.get([SPEC, policyType]);
|
|
255
|
-
if (disabled) {
|
|
256
|
-
if (ruleFormArray.length > 0) {
|
|
257
|
-
const result = await this.ruleDisabledConfirm(policyType);
|
|
258
|
-
if (result !== 'ok') {
|
|
259
|
-
this.ruleDisabledStateMap[policyType] = false;
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
ruleFormArray.clear();
|
|
263
|
-
}
|
|
264
|
-
this.addPolicyType(policyType);
|
|
265
|
-
this.ruleDisabledStateMap[policyType] = true;
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
this.removePolicyType(policyType);
|
|
269
|
-
this.ruleDisabledStateMap[policyType] = false;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
addRule(policyType) {
|
|
273
|
-
this.form.get([SPEC, policyType]).push(this.fb.control({
|
|
274
|
-
ports: [],
|
|
275
|
-
[policyType === 'ingress' ? 'from' : 'to']: [],
|
|
276
|
-
}));
|
|
277
|
-
this.addPolicyType(policyType);
|
|
278
|
-
}
|
|
279
|
-
removeRule(index, policyType) {
|
|
280
|
-
const ruleFormArray = this?.[policyType === 'ingress'
|
|
281
|
-
? 'ingressRuleFormArray'
|
|
282
|
-
: 'egressRuleFormArray'];
|
|
283
|
-
ruleFormArray.removeAt(index);
|
|
284
|
-
this.removePolicyType(policyType);
|
|
285
|
-
}
|
|
286
|
-
async ruleDisabledConfirm(policyType) {
|
|
287
|
-
return await this.dialog
|
|
288
|
-
.confirm({
|
|
289
|
-
title: this.translate.get('network.disabled_rule_confirm', {
|
|
290
|
-
direction: this.translate.get(`network.direction_${policyType}`),
|
|
291
|
-
}),
|
|
292
|
-
confirmType: ConfirmType.Warning,
|
|
293
|
-
confirmText: this.translate.get('network.block'),
|
|
294
|
-
cancelText: this.translate.get('cancel'),
|
|
295
|
-
})
|
|
296
|
-
.then(() => 'ok')
|
|
297
|
-
.catch(() => 'cancel');
|
|
298
|
-
}
|
|
299
|
-
addPolicyType(policyType) {
|
|
300
|
-
const policyTypesCtrl = this.form.get([SPEC, 'policyTypes']);
|
|
301
|
-
const updatedPolicyTypes = uniq([
|
|
302
|
-
...policyTypesCtrl.value,
|
|
303
|
-
policyType === 'ingress' ? 'Ingress' : 'Egress',
|
|
304
|
-
]);
|
|
305
|
-
policyTypesCtrl.setValue(updatedPolicyTypes);
|
|
306
|
-
}
|
|
307
|
-
removePolicyType(policyType) {
|
|
308
|
-
const policyTypesCtrl = this.form.get([SPEC, 'policyTypes']);
|
|
309
|
-
const policyTypes = policyTypesCtrl.value;
|
|
310
|
-
const ruleFormArray = this?.[policyType === 'ingress'
|
|
311
|
-
? 'ingressRuleFormArray'
|
|
312
|
-
: 'egressRuleFormArray'];
|
|
313
|
-
if (ruleFormArray.length === 0) {
|
|
314
|
-
const policyTypeToRemove = policyType === 'ingress' ? 'Ingress' : 'Egress';
|
|
315
|
-
const updatedPolicyTypes = policyTypes.filter(type => type !== policyTypeToRemove);
|
|
316
|
-
policyTypesCtrl.setValue(updatedPolicyTypes);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
updateRuleDisabledStateMap(resource) {
|
|
320
|
-
const policyTypes = resource?.spec?.policyTypes;
|
|
321
|
-
const ruleTypes = ['ingress', 'egress'];
|
|
322
|
-
if (!policyTypes?.length &&
|
|
323
|
-
!ruleTypes.some(type => has(resource.spec, type))) {
|
|
324
|
-
this.ruleDisabledStateMap.ingress = true;
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
policyTypes?.forEach(policyType => {
|
|
328
|
-
const type = policyType.toLowerCase();
|
|
329
|
-
this.ruleDisabledStateMap[type] = !resource.spec[type]?.length;
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
static { this.ɵfac = function NetworkPolicyFormComponent_Factory(t) { return new (t || NetworkPolicyFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.K8sUtilService), i0.ɵɵdirectiveInject(i1.TranslateService), i0.ɵɵdirectiveInject(i2.DialogService)); }; }
|
|
333
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NetworkPolicyFormComponent, selectors: [["acl-network-policy-form"]], inputs: { baseParams: "baseParams", isUpdate: "isUpdate" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 34, vars: 36, consts: [["zeroStateTemplate", ""], ["emptyTemplate", ""], ["auiForm", "", "aclScrollToFirstInvalid", "", 3, "formGroup"], ["formGroupName", "metadata"], ["width", "large"], ["auiFormItemLabel", ""], ["type", "text", "aui-input", "", "required", "", "auiFormItemControl", "", "formControlName", "name", "maxlength", "63", 3, "placeholder", "aclReadonlyField"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["formGroupName", "annotations"], ["auiFormItemControl", "", "type", "text", "aui-input", "", 3, "formControlName"], [1, "rc-secondary-title"], ["formGroupName", "spec"], ["formGroupName", "podSelector"], ["auiFormItemControl", "", "formControlName", "matchLabels", 3, "zeroStateTemplate", "validator", "errorMapper"], ["auiFormItemHint", ""], [3, "hint", "baseParams", "podLabelSelector"], [4, "ngFor", "ngForOf"], [1, "empty-placeholder", "!tw-border-0", "!tw-min-h-[48px]", "!tw-py-14"], [1, "tw-flex", "tw-w-full", "tw-items-center"], [1, "tw-flex", "tw-mb-16", "tw-ml-16", "tw-justify-between", "tw-flex-1"], ["aui-button", "primary", "type", "button", 3, "click", "plain", "disabled"], ["icon", "plus_circle_s"], [3, "valueChange", "value"], [4, "declare"], [4, "ngIf"], ["formGroupName", "spec", "type", "card"], [3, "closeable", "close", 4, "ngFor", "ngForOf"], [3, "close", "closeable"], [4, "auiTabLabel"], [3, "formControl", "baseParams", "policyType"], ["class", "icon--error", "icon", "xmark_circle_s", "size", "16", 4, "ngIf"], ["icon", "xmark_circle_s", "size", "16", 1, "icon--error"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "tw-pt-[40px]", "tw-text-center", "tw-pb-[40px]", "tw-bg-n-9"], ["class", "tw-text-n-4", 4, "ngIf"], [1, "tw-text-n-4"]], template: function NetworkPolicyFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
-
i0.ɵɵelementStart(0, "form", 2);
|
|
335
|
-
i0.ɵɵelementContainerStart(1, 3);
|
|
336
|
-
i0.ɵɵelementStart(2, "aui-form-item", 4)(3, "label", 5);
|
|
337
|
-
i0.ɵɵtext(4);
|
|
338
|
-
i0.ɵɵpipe(5, "translate");
|
|
339
|
-
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelement(6, "input", 6);
|
|
341
|
-
i0.ɵɵpipe(7, "translate");
|
|
342
|
-
i0.ɵɵelement(8, "acl-errors-mapper", 7);
|
|
343
|
-
i0.ɵɵpipe(9, "translate");
|
|
344
|
-
i0.ɵɵelementEnd();
|
|
345
|
-
i0.ɵɵelementContainerStart(10, 8);
|
|
346
|
-
i0.ɵɵelementStart(11, "aui-form-item", 4)(12, "label", 5);
|
|
347
|
-
i0.ɵɵtext(13);
|
|
348
|
-
i0.ɵɵpipe(14, "translate");
|
|
349
|
-
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelement(15, "input", 9);
|
|
351
|
-
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵelementContainerEnd()();
|
|
353
|
-
i0.ɵɵelementStart(16, "div", 10);
|
|
354
|
-
i0.ɵɵtext(17);
|
|
355
|
-
i0.ɵɵpipe(18, "translate");
|
|
356
|
-
i0.ɵɵelementEnd();
|
|
357
|
-
i0.ɵɵelementContainerStart(19, 11);
|
|
358
|
-
i0.ɵɵelementStart(20, "aui-form-item", 12)(21, "label", 5);
|
|
359
|
-
i0.ɵɵtext(22);
|
|
360
|
-
i0.ɵɵpipe(23, "translate");
|
|
361
|
-
i0.ɵɵelementEnd();
|
|
362
|
-
i0.ɵɵelement(24, "acl-key-value-form-table", 13);
|
|
363
|
-
i0.ɵɵpipe(25, "async");
|
|
364
|
-
i0.ɵɵelementStart(26, "div", 14);
|
|
365
|
-
i0.ɵɵelement(27, "acl-pod-preview", 15);
|
|
366
|
-
i0.ɵɵpipe(28, "translate");
|
|
367
|
-
i0.ɵɵelementEnd();
|
|
368
|
-
i0.ɵɵtemplate(29, NetworkPolicyFormComponent_ng_template_29_Template, 3, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
369
|
-
i0.ɵɵelementEnd();
|
|
370
|
-
i0.ɵɵelementContainerEnd();
|
|
371
|
-
i0.ɵɵtemplate(31, NetworkPolicyFormComponent_ng_container_31_Template, 15, 22, "ng-container", 16)(32, NetworkPolicyFormComponent_ng_template_32_Template, 3, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
372
|
-
i0.ɵɵelementEnd();
|
|
373
|
-
} if (rf & 2) {
|
|
374
|
-
const zeroStateTemplate_r13 = i0.ɵɵreference(30);
|
|
375
|
-
i0.ɵɵproperty("formGroup", ctx.form);
|
|
376
|
-
i0.ɵɵadvance(4);
|
|
377
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 17, "name"), " ");
|
|
378
|
-
i0.ɵɵadvance(2);
|
|
379
|
-
i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(7, 19, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip))("aclReadonlyField", ctx.isUpdate);
|
|
380
|
-
i0.ɵɵadvance(2);
|
|
381
|
-
i0.ɵɵproperty("errors", ctx.form.get("metadata.name").errors)("errorsMapper", i0.ɵɵpureFunction1(33, _c0, i0.ɵɵpipeBind1(9, 21, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip)));
|
|
382
|
-
i0.ɵɵadvance(5);
|
|
383
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 23, "display_name"));
|
|
384
|
-
i0.ɵɵadvance(2);
|
|
385
|
-
i0.ɵɵproperty("formControlName", ctx.displayNameKey);
|
|
386
|
-
i0.ɵɵadvance(2);
|
|
387
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 25, "network.target_pod"), " ");
|
|
388
|
-
i0.ɵɵadvance(5);
|
|
389
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 27, "network.pod_selector"), " ");
|
|
390
|
-
i0.ɵɵadvance(2);
|
|
391
|
-
i0.ɵɵproperty("zeroStateTemplate", zeroStateTemplate_r13)("validator", ctx.labelValidator)("errorMapper", i0.ɵɵpipeBind1(25, 29, ctx.labelErrorMapper$));
|
|
392
|
-
i0.ɵɵadvance(3);
|
|
393
|
-
i0.ɵɵproperty("hint", i0.ɵɵpipeBind1(28, 31, "network.target_pod_affected_by_strategy_hint"))("baseParams", ctx.baseParams)("podLabelSelector", ctx.form.get(i0.ɵɵpureFunction0(35, _c1)).value);
|
|
394
|
-
i0.ɵɵadvance(4);
|
|
395
|
-
i0.ɵɵproperty("ngForOf", ctx.PolicyTypes);
|
|
396
|
-
} }, dependencies: [EffectDirectiveModule, i1.E2eAttributeBindingDirective, i1.ValidatorsDirective, CommonModule, i3.NgForOf, i3.NgIf, i3.NgTemplateOutlet, i3.AsyncPipe, ReactiveFormsModule, i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.RequiredValidator, i4.MaxLengthValidator, i4.FormControlDirective, i4.FormGroupDirective, i4.FormControlName, i4.FormGroupName, FormModule, i2.FormDirective, i2.FormItemComponent, i2.FormItemErrorDirective, i2.FormItemHintDirective, i2.FormItemLabelDirective, i2.FormItemControlDirective, KeyValueFormTableComponent,
|
|
397
|
-
PodPreviewComponent,
|
|
398
|
-
TabsModule, i2.TabGroupComponent, i2.TabComponent, i2.TabLabelDirective, ButtonModule, i2.ButtonComponent, IconModule, i2.IconComponent, InputModule, i2.InputComponent, CheckboxModule, i2.CheckboxComponent, i1.TranslatePipe, i1.ErrorsMapperComponent, DeclareDirective,
|
|
399
|
-
NetworkPolicyRuleFormComponent,
|
|
400
|
-
ReadonlyFieldDirective], encapsulation: 2, changeDetection: 0 }); }
|
|
401
|
-
}
|
|
402
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NetworkPolicyFormComponent, [{
|
|
403
|
-
type: Component,
|
|
404
|
-
args: [{ standalone: true, selector: 'acl-network-policy-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
405
|
-
EffectDirectiveModule,
|
|
406
|
-
CommonModule,
|
|
407
|
-
ReactiveFormsModule,
|
|
408
|
-
FormModule,
|
|
409
|
-
KeyValueFormTableComponent,
|
|
410
|
-
PodPreviewComponent,
|
|
411
|
-
TabsModule,
|
|
412
|
-
ButtonModule,
|
|
413
|
-
IconModule,
|
|
414
|
-
InputModule,
|
|
415
|
-
CheckboxModule,
|
|
416
|
-
TRANSLATE_MODULE,
|
|
417
|
-
ERRORS_MAPPER_MODULE,
|
|
418
|
-
DeclareDirective,
|
|
419
|
-
NetworkPolicyRuleFormComponent,
|
|
420
|
-
ReadonlyFieldDirective,
|
|
421
|
-
], template: "<form\n [formGroup]=\"form\"\n auiForm\n aclScrollToFirstInvalid\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n required\n auiFormItemControl\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n formControlName=\"name\"\n maxlength=\"63\"\n [aclReadonlyField]=\"isUpdate\"\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 <ng-container formGroupName=\"annotations\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n type=\"text\"\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n </ng-container>\n\n <div class=\"rc-secondary-title\">\n {{ 'network.target_pod' | translate }}\n </div>\n <ng-container formGroupName=\"spec\">\n <aui-form-item formGroupName=\"podSelector\">\n <label auiFormItemLabel>\n {{ 'network.pod_selector' | translate }}\n </label>\n <acl-key-value-form-table\n auiFormItemControl\n [zeroStateTemplate]=\"zeroStateTemplate\"\n formControlName=\"matchLabels\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <div auiFormItemHint>\n <acl-pod-preview\n [hint]=\"'network.target_pod_affected_by_strategy_hint' | translate\"\n [baseParams]=\"baseParams\"\n [podLabelSelector]=\"\n form.get(['spec', 'podSelector', 'matchLabels']).value\n \"\n ></acl-pod-preview>\n </div>\n <ng-template #zeroStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{ 'network.target_pod_selector_no_data_tip' | translate }}</span\n >\n </ng-template>\n </aui-form-item>\n </ng-container>\n\n <ng-container *ngFor=\"let policyType of PolicyTypes; let i = index\">\n <div\n class=\"tw-flex tw-w-full tw-items-center\"\n [class]=\"i === 1 ? 'tw-mt-16' : ''\"\n >\n <div class=\"rc-secondary-title\">\n {{ 'network.direction_' + policyType | translate }}\n </div>\n <div class=\"tw-flex tw-mb-16 tw-ml-16 tw-justify-between tw-flex-1\">\n <button\n aui-button=\"primary\"\n [plain]=\"true\"\n type=\"button\"\n [disabled]=\"ruleDisabledStateMap[policyType]\"\n (click)=\"addRule(policyType)\"\n >\n <aui-icon icon=\"plus_circle_s\"></aui-icon>\n {{ 'add_xxx' | translate: { xxx: (policyType | translate) } }}\n </button>\n <aui-checkbox\n [value]=\"ruleDisabledStateMap[policyType]\"\n (valueChange)=\"ruleDisabledChanged($event, policyType)\"\n >{{\n 'network.block_all_' + policyType + '_traffic' | translate\n }}</aui-checkbox\n >\n </div>\n </div>\n <ng-container\n *declare=\"\n $any(this.form.get(['spec', policyType])).controls as ruleControls\n \"\n >\n <ng-container\n *ngIf=\"!ruleDisabledStateMap[policyType] && ruleControls.length\"\n >\n <aui-tab-group\n formGroupName=\"spec\"\n type=\"card\"\n >\n <aui-tab\n *ngFor=\"let item of ruleControls; index as index\"\n [closeable]=\"true\"\n (close)=\"removeRule(index, policyType)\"\n >\n <ng-container *ngIf=\"item as control\">\n <ng-container *auiTabLabel>\n <aui-icon\n *ngIf=\"control.invalid && control.dirty\"\n class=\"icon--error\"\n icon=\"xmark_circle_s\"\n size=\"16\"\n ></aui-icon>\n <span>\n {{ policyType | translate }}\n </span>\n </ng-container>\n\n <acl-network-policy-rule-form\n [formControl]=\"$any(control)\"\n [baseParams]=\"baseParams\"\n [policyType]=\"policyType\"\n ></acl-network-policy-rule-form>\n </ng-container>\n </aui-tab>\n </aui-tab-group>\n </ng-container>\n <ng-container\n *ngIf=\"!ruleControls.length || ruleDisabledStateMap[policyType]\"\n >\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate\"\n [ngTemplateOutletContext]=\"{\n policyType: policyType,\n ruleDisabled: ruleDisabledStateMap[policyType],\n }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template\n #emptyTemplate\n let-policyType=\"policyType\"\n let-ruleDisabled=\"ruleDisabled\"\n >\n <div class=\"tw-pt-[40px] tw-text-center tw-pb-[40px] tw-bg-n-9\">\n <span\n class=\"tw-text-n-4\"\n *ngIf=\"!ruleDisabled\"\n >\n {{ 'network.' + policyType + '_rule_no_data_tip' | translate }}\n </span>\n <span *ngIf=\"ruleDisabled\">{{\n 'network.block_all_' + policyType + '_tip' | translate\n }}</span>\n </div>\n </ng-template>\n</form>\n" }]
|
|
422
|
-
}], () => [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.TranslateService }, { type: i2.DialogService }], { baseParams: [{
|
|
423
|
-
type: Input,
|
|
424
|
-
args: [{ required: true }]
|
|
425
|
-
}], isUpdate: [{
|
|
426
|
-
type: Input
|
|
427
|
-
}] }); })();
|
|
428
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyFormComponent, { className: "NetworkPolicyFormComponent", filePath: "lib/features/network-policy/form/network-policy/component.ts", lineNumber: 68 }); })();
|
|
429
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9mZWF0dXJlcy9uZXR3b3JrLXBvbGljeS9mb3JtL25ldHdvcmstcG9saWN5L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix1Q0FBdUMsRUFDdkMsY0FBYyxFQUNkLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsK0JBQStCLEVBQy9CLHlCQUF5QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0lDNEIxRSxnQ0FFRztJQUFBLFlBQTJEOztJQUFBLGlCQUM3RDs7SUFERSxjQUEyRDtJQUEzRCxxRkFBMkQ7OztJQXFEdEQsK0JBS1k7OztJQU5kLDZCQUEyQjtJQUN6Qiw2S0FLQztJQUNELDRCQUFNO0lBQ0osWUFDRjs7SUFBQSxpQkFBTzs7Ozs7SUFQSixjQUFzQztJQUF0Qyw2REFBc0M7SUFNdkMsZUFDRjtJQURFLG9FQUNGOzs7SUFWSiw2QkFBc0M7SUFDcEMsc0tBQTJCO0lBWTNCLG1EQUlnQzs7Ozs7O0lBSDlCLGVBQTZCO0lBRTdCLEFBREEsQUFEQSx3Q0FBNkIsaUNBQ0osNkJBQ0E7Ozs7SUFyQi9CLG1DQUlDO0lBREMsc1RBQVMsMENBQTZCLEtBQUM7SUFFdkMsdUpBQXNDO0lBbUJ4QyxpQkFBVTs7O0lBdEJSLGdDQUFrQjtJQUdILGNBQVc7SUFBWCw4QkFBVzs7O0lBWmhDLDZCQUVDO0lBQ0MseUNBR0M7SUFDQyxtSUFJQztJQXFCSCxpQkFBZ0I7Ozs7SUF4QkssZUFBaUI7SUFBakIseUNBQWlCOzs7SUEwQnhDLDZCQUVDO0lBQ0MsNEJBTWdCOzs7Ozs7SUFMZCxjQUFrQztJQUNsQyxBQURBLG1EQUFrQyxrSEFJaEM7OztJQS9DUiw2QkFJQztJQW1DQyxBQWxDQSw4SEFFQyxpSEFrQ0E7Ozs7OztJQW5DRSxjQUE4RDtJQUE5RCw0RkFBOEQ7SUFrQzlELGNBQThEO0lBQTlELDRGQUE4RDs7OztJQXBFckUsNkJBQW9FO0lBS2hFLEFBSkYsK0JBR0MsY0FDaUM7SUFDOUIsWUFDRjs7SUFBQSxpQkFBTTtJQUVKLEFBREYsK0JBQW9FLGlCQU9qRTtJQURDLGdPQUFTLDZCQUFtQixLQUFDO0lBRTdCLCtCQUEwQztJQUMxQyxZQUNGOzs7SUFBQSxpQkFBUztJQUNULHlDQUdHO0lBREQseVBBQWUsaURBQXVDLEtBQUM7SUFDdEQsYUFFQzs7SUFHUixBQURFLEFBRk0saUJBQ0gsRUFDRyxFQUNGO0lBQ04sZ0hBSUM7Ozs7OztJQTdCQyxjQUFtQztJQUFuQyw0Q0FBbUM7SUFHakMsZUFDRjtJQURFLDJGQUNGO0lBSUksZUFBYztJQUVkLEFBRkEsNEJBQWMsd0RBRStCO0lBSTdDLGVBQ0Y7SUFERSxxSUFDRjtJQUVFLGVBQTBDO0lBQTFDLGtFQUEwQztJQUV6QyxjQUVDO0lBRkQsK0ZBRUM7SUFLTCxlQUM2RDtJQUQ3RCw4RkFDNkQ7OztJQXlEOUQsZ0NBR0M7SUFDQyxZQUNGOztJQUFBLGlCQUFPOzs7SUFETCxjQUNGO0lBREUsd0dBQ0Y7OztJQUNBLDRCQUEyQjtJQUFBLFlBRXpCOztJQUFBLGlCQUFPOzs7SUFGa0IsY0FFekI7SUFGeUIsMEZBRXpCOzs7SUFUSiwrQkFBZ0U7SUFPOUQsQUFOQSw2RkFHQyxnRkFHMEI7SUFHN0IsaUJBQU07OztJQVBELGNBQW1CO0lBQW5CLHdDQUFtQjtJQUlmLGNBQWtCO0lBQWxCLHVDQUFrQjs7QUQvSC9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBMEJuRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsOEJBQTZDO0lBTzNGLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQWMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBY0QsWUFDRSxRQUFrQixFQUNELE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQzNCLE1BQXFCO1FBRXRDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFsQ3hDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFrQmpCLDRDQUF1QyxHQUNyQyx1Q0FBdUMsQ0FBQztRQUUxQyxtQkFBYyxHQUFHLHlCQUF5QixDQUFDO1FBQzNDLHNCQUFpQixHQUFHLCtCQUErQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELHlCQUFvQixHQUEwQztZQUM1RCxPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztJQVNGLENBQUM7SUFFUSxVQUFVO1FBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLFVBQVUsQ0FBQyxRQUFRO2dCQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQzthQUNwRSxDQUFDO1lBQ0YsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUMzQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0IsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2FBQ25DLENBQUM7WUFDRixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLHNCQUFzQjtRQUM3QixPQUFPLEdBQUcsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVRLGtCQUFrQixDQUFDLFFBQXVCO1FBQ2pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUNwQyxRQUFRO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLFFBQWlCLEVBQ2pCLFVBQWlDO1FBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFjLENBQUM7UUFFckUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFELElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM5QyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUFpQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBZSxDQUFDLElBQUksQ0FDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDZCxLQUFLLEVBQUUsRUFBRTtZQUNULENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1NBQy9DLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxVQUFpQztRQUN6RCxNQUFNLGFBQWEsR0FDakIsSUFBSSxFQUFFLENBQ0osVUFBVSxLQUFLLFNBQVM7WUFDdEIsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMscUJBQXFCLENBQzFCLENBQUM7UUFFSixhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQWlDO1FBQ2pFLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTTthQUNyQixPQUFPLENBQUM7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUU7Z0JBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsVUFBVSxFQUFFLENBQUM7YUFDakUsQ0FBQztZQUNGLFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTztZQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDekMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxhQUFhLENBQUMsVUFBaUM7UUFDckQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUU3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUM5QixHQUFHLGVBQWUsQ0FBQyxLQUFLO1lBQ3hCLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUTtTQUNoRCxDQUFDLENBQUM7UUFFSCxlQUFlLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFVBQWlDO1FBQ3hELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEtBQXFCLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQ2pCLElBQUksRUFBRSxDQUNKLFVBQVUsS0FBSyxTQUFTO1lBQ3RCLENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLHFCQUFxQixDQUMxQixDQUFDO1FBRUosSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sa0JBQWtCLEdBQ3RCLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2xELE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQ3BDLENBQUM7WUFDRixlQUFlLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxRQUF1QjtRQUN4RCxNQUFNLFdBQVcsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV4QyxJQUNFLENBQUMsV0FBVyxFQUFFLE1BQU07WUFDcEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDakQsQ0FBQztZQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLE9BQU87UUFDVCxDQUFDO1FBRUQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxFQUEyQixDQUFDO1lBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsyRkE5TVUsMEJBQTBCO29FQUExQiwwQkFBMEI7WUNuRXZDLCtCQUlDO1lBQ0MsZ0NBQXVDO1lBRW5DLEFBREYsd0NBQTZCLGVBQ0g7WUFDdEIsWUFDRjs7WUFBQSxpQkFBUTtZQUNSLDJCQVNFOztZQUNGLHVDQU1xQjs7WUFDdkIsaUJBQWdCO1lBRWhCLGlDQUEwQztZQUV0QyxBQURGLHlDQUE2QixnQkFDSDtZQUFBLGFBQWdDOztZQUFBLGlCQUFRO1lBQ2hFLDRCQUtFO1lBQ0osaUJBQWdCOztZQUlwQixnQ0FBZ0M7WUFDOUIsYUFDRjs7WUFBQSxpQkFBTTtZQUNOLGtDQUFtQztZQUUvQixBQURGLDBDQUEyQyxnQkFDakI7WUFDdEIsYUFDRjs7WUFBQSxpQkFBUTtZQUNSLGdEQU00Qjs7WUFDNUIsZ0NBQXFCO1lBQ25CLHVDQU1tQjs7WUFDckIsaUJBQU07WUFDTiw4SEFBZ0M7WUFNbEMsaUJBQWdCOztZQW9GbEIsQUFqRkEsa0dBQW9FLGlIQXFGbkU7WUFhSCxpQkFBTzs7O1lBNUtMLG9DQUFrQjtZQU9aLGVBQ0Y7WUFERSw4REFDRjtZQU1FLGVBQXVFO1lBR3ZFLEFBSEEsb0dBQXVFLGtDQUcxQztZQUk3QixlQUEyQztZQUMzQyxBQURBLDZEQUEyQyxxSEFHekM7WUFNc0IsZUFBZ0M7WUFBaEMsNERBQWdDO1lBS3RELGVBQWtDO1lBQWxDLG9EQUFrQztZQU94QyxlQUNGO1lBREUsNkVBQ0Y7WUFJTSxlQUNGO1lBREUsK0VBQ0Y7WUFHRSxlQUF1QztZQUd2QyxBQURBLEFBRkEseURBQXVDLGlDQUVYLDhEQUNhO1lBSXZDLGVBQW1FO1lBRW5FLEFBREEsQUFEQSw2RkFBbUUsOEJBQzFDLHFFQUd4QjtZQVk0QixlQUFnQjtZQUFoQix5Q0FBZ0I7NEJEMUJuRCxxQkFBcUIsMkRBQ3JCLFlBQVksMERBQ1osbUJBQW1CLDZOQUNuQixVQUFVLHVKQUNWLDBCQUEwQjtZQUMxQixtQkFBbUI7WUFDbkIsVUFBVSwrREFDVixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsV0FBVyxxQkFDWCxjQUFjLG9FQUdkLGdCQUFnQjtZQUNoQiw4QkFBOEI7WUFDOUIsc0JBQXNCOztpRkFHYiwwQkFBMEI7Y0F4QnRDLFNBQVM7NkJBQ0ksSUFBSSxZQUNOLHlCQUF5QixtQkFFbEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QztvQkFDUCxxQkFBcUI7b0JBQ3JCLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixVQUFVO29CQUNWLDBCQUEwQjtvQkFDMUIsbUJBQW1CO29CQUNuQixVQUFVO29CQUNWLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsZ0JBQWdCO29CQUNoQixvQkFBb0I7b0JBQ3BCLGdCQUFnQjtvQkFDaEIsOEJBQThCO29CQUM5QixzQkFBc0I7aUJBQ3ZCO2lJQUlELFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsUUFBUTtrQkFEUCxLQUFLOztrRkFKSywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIENoZWNrYm94TW9kdWxlLFxuICBDb25maXJtVHlwZSxcbiAgRGlhbG9nU2VydmljZSxcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFRhYnNNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgRElTUExBWV9OQU1FLFxuICBEZWNsYXJlRGlyZWN0aXZlLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgU1BFQyxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgV29ya3NwYWNlLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgVmFsaWRhdG9ycywgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGhhcywgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQgeyBOZXR3b3JrUG9saWN5LCBQb2xpY3lUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgUG9kUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcG9kLXJldmlldy9jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmV0d29yay1wb2xpY3ktcnVsZS9jb21wb25lbnQnO1xuXG5jb25zdCBQb2xpY3lUeXBlcyA9IFsnaW5ncmVzcycsICdlZ3Jlc3MnXSBhcyBjb25zdDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLW5ldHdvcmstcG9saWN5LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEVmZmVjdERpcmVjdGl2ZU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIFBvZFByZXZpZXdDb21wb25lbnQsXG4gICAgVGFic01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICAgIERlY2xhcmVEaXJlY3RpdmUsXG4gICAgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50LFxuICAgIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50PE5ldHdvcmtQb2xpY3k+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgYmFzZVBhcmFtczogV29ya3NwYWNlO1xuXG4gIEBJbnB1dCgpXG4gIGlzVXBkYXRlID0gZmFsc2U7XG5cbiAgZ2V0IGluZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnaW5ncmVzcyddKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBnZXQgaW5ncmVzc1J1bGVDb250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZXNzUnVsZUZvcm1BcnJheS5jb250cm9scyA/PyBbXTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnZWdyZXNzJ10pIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlQ29udHJvbHMoKSB7XG4gICAgcmV0dXJuIFsuLi4odGhpcy5lZ3Jlc3NSdWxlRm9ybUFycmF5LmNvbnRyb2xzID8/IFtdKV07XG4gIH1cblxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkgPVxuICAgIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWTtcblxuICBsYWJlbFZhbGlkYXRvciA9IGs4c1Jlc291cmNlTGFiZWxWYWxpZGF0b3I7XG4gIGxhYmVsRXJyb3JNYXBwZXIkID0gZ2V0SzhzUmVzb3VyY2VMYWJlbEVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG4gIFBvbGljeVR5cGVzID0gUG9saWN5VHlwZXM7XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcbiAgcnVsZURpc2FibGVkU3RhdGVNYXA6IFJlY29yZDwnaW5ncmVzcycgfCAnZWdyZXNzJywgYm9vbGVhbj4gPSB7XG4gICAgaW5ncmVzczogZmFsc2UsXG4gICAgZWdyZXNzOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogRGlhbG9nU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRm9ybSgpIHtcbiAgICBjb25zdCBtZXRhZGF0YUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgXSksXG4gICAgICBuYW1lc3BhY2U6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIFt0aGlzLmRpc3BsYXlOYW1lS2V5XTogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IHNwZWNGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwb2RTZWxlY3RvcjogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG1hdGNoTGFiZWxzOiB0aGlzLmZiLmNvbnRyb2wobnVsbCksXG4gICAgICB9KSxcbiAgICAgIGluZ3Jlc3M6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgZWdyZXNzOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAgIHBvbGljeVR5cGVzOiB0aGlzLmZiLmNvbnRyb2woW10pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhRm9ybSxcbiAgICAgIHNwZWM6IHNwZWNGb3JtLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0T25Gb3JtQXJyYXlSZXNpemVGbigpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbCh7fSk7XG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogTmV0d29ya1BvbGljeSk6IE5ldHdvcmtQb2xpY3kge1xuICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVJ1bGVEaXNhYmxlZFN0YXRlTWFwKHJlc291cmNlKTtcblxuICAgIGlmICh0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwLmluZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSBbJ0luZ3Jlc3MnXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5lZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSB1bmlxKFtcbiAgICAgICAgLi4uKHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPz8gW10pLFxuICAgICAgICAnRWdyZXNzJyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGFzeW5jIHJ1bGVEaXNhYmxlZENoYW5nZWQoXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+LFxuICApIHtcbiAgICBjb25zdCBydWxlRm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldChbU1BFQywgcG9saWN5VHlwZV0pIGFzIEZvcm1BcnJheTtcblxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgaWYgKHJ1bGVGb3JtQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZSk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGVGb3JtQXJyYXkuY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgICAgIHRoaXMucnVsZURpc2FibGVkU3RhdGVNYXBbcG9saWN5VHlwZV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhZGRSdWxlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgICh0aGlzLmZvcm0uZ2V0KFtTUEVDLCBwb2xpY3lUeXBlXSkgYXMgRm9ybUFycmF5KS5wdXNoKFxuICAgICAgdGhpcy5mYi5jb250cm9sKHtcbiAgICAgICAgcG9ydHM6IFtdLFxuICAgICAgICBbcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ2Zyb20nIDogJ3RvJ106IFtdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgfVxuXG4gIHJlbW92ZVJ1bGUoaW5kZXg6IG51bWJlciwgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgY29uc3QgcnVsZUZvcm1BcnJheSA9XG4gICAgICB0aGlzPy5bXG4gICAgICAgIHBvbGljeVR5cGUgPT09ICdpbmdyZXNzJ1xuICAgICAgICAgID8gJ2luZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgICAgIDogJ2VncmVzc1J1bGVGb3JtQXJyYXknXG4gICAgICBdO1xuXG4gICAgcnVsZUZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG5cbiAgICB0aGlzLnJlbW92ZVBvbGljeVR5cGUocG9saWN5VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGlhbG9nXG4gICAgICAuY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ25ldHdvcmsuZGlzYWJsZWRfcnVsZV9jb25maXJtJywge1xuICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy50cmFuc2xhdGUuZ2V0KGBuZXR3b3JrLmRpcmVjdGlvbl8ke3BvbGljeVR5cGV9YCksXG4gICAgICAgIH0pLFxuICAgICAgICBjb25maXJtVHlwZTogQ29uZmlybVR5cGUuV2FybmluZyxcbiAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlLmdldCgnbmV0d29yay5ibG9jaycpLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NhbmNlbCcpLFxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+ICdvaycpXG4gICAgICAuY2F0Y2goKCkgPT4gJ2NhbmNlbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQb2xpY3lUeXBlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgIGNvbnN0IHBvbGljeVR5cGVzQ3RybCA9IHRoaXMuZm9ybS5nZXQoW1NQRUMsICdwb2xpY3lUeXBlcyddKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRQb2xpY3lUeXBlcyA9IHVuaXEoW1xuICAgICAgLi4ucG9saWN5VHlwZXNDdHJsLnZhbHVlLFxuICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcycsXG4gICAgXSk7XG5cbiAgICBwb2xpY3lUeXBlc0N0cmwuc2V0VmFsdWUodXBkYXRlZFBvbGljeVR5cGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlOiBMb3dlcmNhc2U8UG9saWN5VHlwZT4pIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlc0N0cmwgPSB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAncG9saWN5VHlwZXMnXSk7XG4gICAgY29uc3QgcG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlc0N0cmwudmFsdWUgYXMgUG9saWN5VHlwZVtdO1xuICAgIGNvbnN0IHJ1bGVGb3JtQXJyYXkgPVxuICAgICAgdGhpcz8uW1xuICAgICAgICBwb2xpY3lUeXBlID09PSAnaW5ncmVzcydcbiAgICAgICAgICA/ICdpbmdyZXNzUnVsZUZvcm1BcnJheSdcbiAgICAgICAgICA6ICdlZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgXTtcblxuICAgIGlmIChydWxlRm9ybUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgcG9saWN5VHlwZVRvUmVtb3ZlID1cbiAgICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcyc7XG4gICAgICBjb25zdCB1cGRhdGVkUG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlcy5maWx0ZXIoXG4gICAgICAgIHR5cGUgPT4gdHlwZSAhPT0gcG9saWN5VHlwZVRvUmVtb3ZlLFxuICAgICAgKTtcbiAgICAgIHBvbGljeVR5cGVzQ3RybC5zZXRWYWx1ZSh1cGRhdGVkUG9saWN5VHlwZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUnVsZURpc2FibGVkU3RhdGVNYXAocmVzb3VyY2U6IE5ldHdvcmtQb2xpY3kpIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlcyA9IHJlc291cmNlPy5zcGVjPy5wb2xpY3lUeXBlcztcbiAgICBjb25zdCBydWxlVHlwZXMgPSBbJ2luZ3Jlc3MnLCAnZWdyZXNzJ107XG5cbiAgICBpZiAoXG4gICAgICAhcG9saWN5VHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgIXJ1bGVUeXBlcy5zb21lKHR5cGUgPT4gaGFzKHJlc291cmNlLnNwZWMsIHR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5pbmdyZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwb2xpY3lUeXBlcz8uZm9yRWFjaChwb2xpY3lUeXBlID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBwb2xpY3lUeXBlLnRvTG93ZXJDYXNlKCkgYXMgTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFt0eXBlXSA9ICFyZXNvdXJjZS5zcGVjW3R5cGVdPy5sZW5ndGg7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGF1aUZvcm1cbiAgYWNsU2Nyb2xsVG9GaXJzdEludmFsaWRcbj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIj5cbiAgICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cImxhcmdlXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAge3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICBtYXhsZW5ndGg9XCI2M1wiXG4gICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzVXBkYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KCdtZXRhZGF0YS5uYW1lJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgICAgcGF0dGVybjogSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgPGF1aS1mb3JtLWl0ZW0gd2lkdGg9XCJsYXJnZVwiPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnZGlzcGxheV9uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRpc3BsYXlOYW1lS2V5XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cInJjLXNlY29uZGFyeS10aXRsZVwiPlxuICAgIHt7ICduZXR3b3JrLnRhcmdldF9wb2QnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgPGF1aS1mb3JtLWl0ZW0gZm9ybUdyb3VwTmFtZT1cInBvZFNlbGVjdG9yXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAge3sgJ25ldHdvcmsucG9kX3NlbGVjdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIFt6ZXJvU3RhdGVUZW1wbGF0ZV09XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoTGFiZWxzXCJcbiAgICAgICAgW3ZhbGlkYXRvcl09XCJsYWJlbFZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJsYWJlbEVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICAgIDxkaXYgYXVpRm9ybUl0ZW1IaW50PlxuICAgICAgICA8YWNsLXBvZC1wcmV2aWV3XG4gICAgICAgICAgW2hpbnRdPVwiJ25ldHdvcmsudGFyZ2V0X3BvZF9hZmZlY3RlZF9ieV9zdHJhdGVneV9oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Jhc2VQYXJhbXNdPVwiYmFzZVBhcmFtc1wiXG4gICAgICAgICAgW3BvZExhYmVsU2VsZWN0b3JdPVwiXG4gICAgICAgICAgICBmb3JtLmdldChbJ3NwZWMnLCAncG9kU2VsZWN0b3InLCAnbWF0Y2hMYWJlbHMnXSkudmFsdWVcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9hY2wtcG9kLXByZXZpZXc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjemVyb1N0YXRlVGVtcGxhdGU+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlciAhdHctYm9yZGVyLTAgIXR3LW1pbi1oLVs0OHB4XSAhdHctcHktMTRcIlxuICAgICAgICAgID57eyAnbmV0d29yay50YXJnZXRfcG9kX3NlbGVjdG9yX25vX2RhdGFfdGlwJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcG9saWN5VHlwZSBvZiBQb2xpY3lUeXBlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidHctZmxleCB0dy13LWZ1bGwgdHctaXRlbXMtY2VudGVyXCJcbiAgICAgIFtjbGFzc109XCJpID09PSAxID8gJ3R3LW10LTE2JyA6ICcnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmMtc2Vjb25kYXJ5LXRpdGxlXCI+XG4gICAgICAgIHt7ICduZXR3b3JrLmRpcmVjdGlvbl8nICsgcG9saWN5VHlwZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1tYi0xNiB0dy1tbC0xNiB0dy1qdXN0aWZ5LWJldHdlZW4gdHctZmxleC0xXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFJ1bGUocG9saWN5VHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS1pY29uIGljb249XCJwbHVzX2NpcmNsZV9zXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICB7eyAnYWRkX3h4eCcgfCB0cmFuc2xhdGU6IHsgeHh4OiAocG9saWN5VHlwZSB8IHRyYW5zbGF0ZSkgfSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGF1aS1jaGVja2JveFxuICAgICAgICAgIFt2YWx1ZV09XCJydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInJ1bGVEaXNhYmxlZENoYW5nZWQoJGV2ZW50LCBwb2xpY3lUeXBlKVwiXG4gICAgICAgICAgPnt7XG4gICAgICAgICAgICAnbmV0d29yay5ibG9ja19hbGxfJyArIHBvbGljeVR5cGUgKyAnX3RyYWZmaWMnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2F1aS1jaGVja2JveFxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqZGVjbGFyZT1cIlxuICAgICAgICAkYW55KHRoaXMuZm9ybS5nZXQoWydzcGVjJywgcG9saWN5VHlwZV0pKS5jb250cm9scyBhcyBydWxlQ29udHJvbHNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIiFydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXSAmJiBydWxlQ29udHJvbHMubGVuZ3RoXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS10YWItZ3JvdXBcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgICAgICAgdHlwZT1cImNhcmRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS10YWJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJ1bGVDb250cm9sczsgaW5kZXggYXMgaW5kZXhcIlxuICAgICAgICAgICAgW2Nsb3NlYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIChjbG9zZSk9XCJyZW1vdmVSdWxlKGluZGV4LCBwb2xpY3lUeXBlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gYXMgY29udHJvbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICphdWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLS1lcnJvclwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwieG1hcmtfY2lyY2xlX3NcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IHBvbGljeVR5cGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxhY2wtbmV0d29yay1wb2xpY3ktcnVsZS1mb3JtXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29udHJvbClcIlxuICAgICAgICAgICAgICAgIFtiYXNlUGFyYW1zXT1cImJhc2VQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtwb2xpY3lUeXBlXT1cInBvbGljeVR5cGVcIlxuICAgICAgICAgICAgICA+PC9hY2wtbmV0d29yay1wb2xpY3ktcnVsZS1mb3JtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hdWktdGFiPlxuICAgICAgICA8L2F1aS10YWItZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIhcnVsZUNvbnRyb2xzLmxlbmd0aCB8fCBydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgcG9saWN5VHlwZTogcG9saWN5VHlwZSxcbiAgICAgICAgICAgIHJ1bGVEaXNhYmxlZDogcnVsZURpc2FibGVkU3RhdGVNYXBbcG9saWN5VHlwZV0sXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGVcbiAgICAjZW1wdHlUZW1wbGF0ZVxuICAgIGxldC1wb2xpY3lUeXBlPVwicG9saWN5VHlwZVwiXG4gICAgbGV0LXJ1bGVEaXNhYmxlZD1cInJ1bGVEaXNhYmxlZFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidHctcHQtWzQwcHhdIHR3LXRleHQtY2VudGVyIHR3LXBiLVs0MHB4XSB0dy1iZy1uLTlcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidHctdGV4dC1uLTRcIlxuICAgICAgICAqbmdJZj1cIiFydWxlRGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICB7eyAnbmV0d29yay4nICsgcG9saWN5VHlwZSArICdfcnVsZV9ub19kYXRhX3RpcCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicnVsZURpc2FibGVkXCI+e3tcbiAgICAgICAgJ25ldHdvcmsuYmxvY2tfYWxsXycgKyBwb2xpY3lUeXBlICsgJ190aXAnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { FormModule, InputModule } from '@alauda/ui';
|
|
3
|
-
import { ERRORS_MAPPER_MODULE, EffectDirectiveModule, ObservableInput, TRANSLATE_MODULE, bind, publishRef, } from '@alauda-fe/common';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Injector, Input, } from '@angular/core';
|
|
6
|
-
import { AbstractControl, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
7
|
-
import { BaseResourceFormGroupComponent } from 'ng-resource-form-util';
|
|
8
|
-
import { Observable, first, map, switchMap, takeUntil } from 'rxjs';
|
|
9
|
-
import { NetworkUtilService } from '../../../../services/network-util.service';
|
|
10
|
-
import { adaptIpMode, isCidrAddressValid, } from '../../../../utils/cidr-exports';
|
|
11
|
-
import { NetworkPolicyExceptRemoteInputFormComponent } from '../network-policy-remote-except-input/component';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../../../services/network-util.service";
|
|
14
|
-
import * as i2 from "@alauda-fe/common";
|
|
15
|
-
import * as i3 from "@angular/common";
|
|
16
|
-
import * as i4 from "@angular/forms";
|
|
17
|
-
import * as i5 from "@alauda/ui";
|
|
18
|
-
const _c0 = a0 => ({ cidrPattern: a0 });
|
|
19
|
-
export class NetworkPolicyIpBlockFormComponent extends BaseResourceFormGroupComponent {
|
|
20
|
-
constructor(injector, networkUtil) {
|
|
21
|
-
super(injector);
|
|
22
|
-
this.networkUtil = networkUtil;
|
|
23
|
-
this.networkMode$ = this.cluster$.pipe(switchMap(cluster => this.networkUtil.getNetworkMode$(cluster)), publishRef());
|
|
24
|
-
}
|
|
25
|
-
createForm() {
|
|
26
|
-
return this.fb.group({
|
|
27
|
-
cidr: this.fb.control('', [Validators.required], [this.asyncValidateCidr]),
|
|
28
|
-
except: this.fb.control([]),
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
asyncValidateCidr(ctrl) {
|
|
32
|
-
return this.networkMode$.pipe(map(mode => {
|
|
33
|
-
const cidr = ctrl.value;
|
|
34
|
-
const ipMode = adaptIpMode(cidr, mode);
|
|
35
|
-
return cidr && !isCidrAddressValid(cidr, ipMode)
|
|
36
|
-
? {
|
|
37
|
-
cidrPattern: true,
|
|
38
|
-
}
|
|
39
|
-
: null;
|
|
40
|
-
}), first(), takeUntil(this.destroy$));
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = function NetworkPolicyIpBlockFormComponent_Factory(t) { return new (t || NetworkPolicyIpBlockFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.NetworkUtilService)); }; }
|
|
43
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NetworkPolicyIpBlockFormComponent, selectors: [["acl-network-policy-ip-block-form"]], inputs: { cluster: "cluster" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 16, vars: 22, consts: [["auiForm", "", 1, "last-form-item-no-margin", 3, "formGroup"], ["width", "medium"], ["auiFormItemLabel", ""], ["aui-input", "", "required", "", "auiFormItemControl", "", "formControlName", "cidr", "type", "text", 3, "placeholder"], ["auiFormItemError", "", 3, "errorsMapper", "errors"], ["auiFormItemControl", "", "formControlName", "except", 1, "tw-w-full", 3, "remoteIpBlock", "networkMode"]], template: function NetworkPolicyIpBlockFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
-
i0.ɵɵelementStart(0, "form", 0)(1, "aui-form-item", 1)(2, "label", 2);
|
|
45
|
-
i0.ɵɵtext(3);
|
|
46
|
-
i0.ɵɵpipe(4, "translate");
|
|
47
|
-
i0.ɵɵelementEnd();
|
|
48
|
-
i0.ɵɵelement(5, "input", 3);
|
|
49
|
-
i0.ɵɵpipe(6, "translate");
|
|
50
|
-
i0.ɵɵelement(7, "acl-errors-mapper", 4);
|
|
51
|
-
i0.ɵɵpipe(8, "async");
|
|
52
|
-
i0.ɵɵpipe(9, "translate");
|
|
53
|
-
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementStart(10, "aui-form-item")(11, "label", 2);
|
|
55
|
-
i0.ɵɵtext(12);
|
|
56
|
-
i0.ɵɵpipe(13, "translate");
|
|
57
|
-
i0.ɵɵelementEnd();
|
|
58
|
-
i0.ɵɵelement(14, "acl-network-policy-remote-ip-except-input", 5);
|
|
59
|
-
i0.ɵɵpipe(15, "async");
|
|
60
|
-
i0.ɵɵelementEnd()();
|
|
61
|
-
} if (rf & 2) {
|
|
62
|
-
i0.ɵɵproperty("formGroup", ctx.form);
|
|
63
|
-
i0.ɵɵadvance(3);
|
|
64
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 8, "network.cidr"), " ");
|
|
65
|
-
i0.ɵɵadvance(2);
|
|
66
|
-
i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(6, 10, "network.please_input_correct_cidr"));
|
|
67
|
-
i0.ɵɵadvance(2);
|
|
68
|
-
i0.ɵɵproperty("errorsMapper", i0.ɵɵpureFunction1(20, _c0, i0.ɵɵpipeBind1(9, 14, i0.ɵɵpipeBind1(8, 12, ctx.networkMode$) === "v6" ? "network.please_input_correct_ipv6_cidr_with_demo" : "network.please_input_correct_cidr")))("errors", ctx.form.get("cidr").errors);
|
|
69
|
-
i0.ɵɵadvance(5);
|
|
70
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 16, "network.except"), " ");
|
|
71
|
-
i0.ɵɵadvance(2);
|
|
72
|
-
i0.ɵɵproperty("remoteIpBlock", ctx.form.get("cidr").value)("networkMode", i0.ɵɵpipeBind1(15, 18, ctx.networkMode$));
|
|
73
|
-
} }, dependencies: [EffectDirectiveModule, i2.ValidatorsDirective, CommonModule, i3.AsyncPipe, ReactiveFormsModule, i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.RequiredValidator, i4.FormGroupDirective, i4.FormControlName, FormModule, i5.FormDirective, i5.FormItemComponent, i5.FormItemErrorDirective, i5.FormItemLabelDirective, i5.FormItemControlDirective, InputModule, i5.InputComponent, i2.TranslatePipe, i2.ErrorsMapperComponent, NetworkPolicyExceptRemoteInputFormComponent], encapsulation: 2, changeDetection: 0 }); }
|
|
74
|
-
}
|
|
75
|
-
__decorate([
|
|
76
|
-
ObservableInput(),
|
|
77
|
-
__metadata("design:type", Observable)
|
|
78
|
-
], NetworkPolicyIpBlockFormComponent.prototype, "cluster$", void 0);
|
|
79
|
-
__decorate([
|
|
80
|
-
bind,
|
|
81
|
-
__metadata("design:type", Function),
|
|
82
|
-
__metadata("design:paramtypes", [AbstractControl]),
|
|
83
|
-
__metadata("design:returntype", void 0)
|
|
84
|
-
], NetworkPolicyIpBlockFormComponent.prototype, "asyncValidateCidr", null);
|
|
85
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NetworkPolicyIpBlockFormComponent, [{
|
|
86
|
-
type: Component,
|
|
87
|
-
args: [{ standalone: true, selector: 'acl-network-policy-ip-block-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
88
|
-
EffectDirectiveModule,
|
|
89
|
-
CommonModule,
|
|
90
|
-
ReactiveFormsModule,
|
|
91
|
-
FormModule,
|
|
92
|
-
InputModule,
|
|
93
|
-
TRANSLATE_MODULE,
|
|
94
|
-
ERRORS_MAPPER_MODULE,
|
|
95
|
-
NetworkPolicyExceptRemoteInputFormComponent,
|
|
96
|
-
], template: "<form\n [formGroup]=\"form\"\n auiForm\n class=\"last-form-item-no-margin\"\n>\n <aui-form-item width=\"medium\">\n <label auiFormItemLabel>\n {{ 'network.cidr' | translate }}\n </label>\n <input\n aui-input\n required\n auiFormItemControl\n formControlName=\"cidr\"\n type=\"text\"\n [placeholder]=\"'network.please_input_correct_cidr' | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errorsMapper]=\"{\n cidrPattern:\n ((networkMode$ | async) === 'v6'\n ? 'network.please_input_correct_ipv6_cidr_with_demo'\n : 'network.please_input_correct_cidr'\n ) | translate,\n }\"\n [errors]=\"form.get('cidr').errors\"\n ></acl-errors-mapper>\n </aui-form-item>\n <aui-form-item>\n <label auiFormItemLabel>\n {{ 'network.except' | translate }}\n </label>\n <acl-network-policy-remote-ip-except-input\n auiFormItemControl\n class=\"tw-w-full\"\n [remoteIpBlock]=\"form.get('cidr').value\"\n formControlName=\"except\"\n [networkMode]=\"networkMode$ | async\"\n ></acl-network-policy-remote-ip-except-input>\n </aui-form-item>\n</form>\n" }]
|
|
97
|
-
}], () => [{ type: i0.Injector }, { type: i1.NetworkUtilService }], { cluster: [{
|
|
98
|
-
type: Input,
|
|
99
|
-
args: [{ required: true }]
|
|
100
|
-
}], cluster$: [], asyncValidateCidr: [] }); })();
|
|
101
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyIpBlockFormComponent, { className: "NetworkPolicyIpBlockFormComponent", filePath: "lib/features/network-policy/form/network-policy-ip-block/component.ts", lineNumber: 49 }); })();
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS1pcC1ibG9jay9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9mZWF0dXJlcy9uZXR3b3JrLXBvbGljeS9mb3JtL25ldHdvcmstcG9saWN5LWlwLWJsb2NrL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEdBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxF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ZSwgSW5wdXRNb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBFZmZlY3REaXJlY3RpdmVNb2R1bGUsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgYmluZCxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Hcm91cENvbXBvbmVudCB9IGZyb20gJ25nLXJlc291cmNlLWZvcm0tdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZXR3b3JrVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9uZXR3b3JrLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBJUEJsb2NrIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHtcbiAgYWRhcHRJcE1vZGUsXG4gIGlzQ2lkckFkZHJlc3NWYWxpZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY2lkci1leHBvcnRzJztcbmltcG9ydCB7IE5ldHdvcmtQb2xpY3lFeGNlcHRSZW1vdGVJbnB1dEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZXR3b3JrLXBvbGljeS1yZW1vdGUtZXhjZXB0LWlucHV0L2NvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1uZXR3b3JrLXBvbGljeS1pcC1ibG9jay1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBFZmZlY3REaXJlY3RpdmVNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICAgIE5ldHdvcmtQb2xpY3lFeGNlcHRSZW1vdGVJbnB1dEZvcm1Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lJcEJsb2NrRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Hcm91cENvbXBvbmVudDxJUEJsb2NrPiB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNsdXN0ZXI6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgY2x1c3RlciQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgbmV0d29ya01vZGUkID0gdGhpcy5jbHVzdGVyJC5waXBlKFxuICAgIHN3aXRjaE1hcChjbHVzdGVyID0+IHRoaXMubmV0d29ya1V0aWwuZ2V0TmV0d29ya01vZGUkKGNsdXN0ZXIpKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya1V0aWw6IE5ldHdvcmtVdGlsU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICBjaWRyOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAgICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIFt0aGlzLmFzeW5jVmFsaWRhdGVDaWRyXSxcbiAgICAgICksXG4gICAgICBleGNlcHQ6IHRoaXMuZmIuY29udHJvbChbXSksXG4gICAgfSk7XG4gIH1cblxuICBAYmluZFxuICBhc3luY1ZhbGlkYXRlQ2lkcihjdHJsOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5uZXR3b3JrTW9kZSQucGlwZShcbiAgICAgIG1hcChtb2RlID0+IHtcbiAgICAgICAgY29uc3QgY2lkciA9IGN0cmwudmFsdWUgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCBpcE1vZGUgPSBhZGFwdElwTW9kZShjaWRyLCBtb2RlKTtcblxuICAgICAgICByZXR1cm4gY2lkciAmJiAhaXNDaWRyQWRkcmVzc1ZhbGlkKGNpZHIsIGlwTW9kZSlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY2lkclBhdHRlcm46IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSksXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGF1aUZvcm1cbiAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuPlxuICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cIm1lZGl1bVwiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25ldHdvcmsuY2lkcicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgYXVpLWlucHV0XG4gICAgICByZXF1aXJlZFxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaWRyXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInbmV0d29yay5wbGVhc2VfaW5wdXRfY29ycmVjdF9jaWRyJyB8IHRyYW5zbGF0ZVwiXG4gICAgLz5cbiAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICBjaWRyUGF0dGVybjpcbiAgICAgICAgICAoKG5ldHdvcmtNb2RlJCB8IGFzeW5jKSA9PT0gJ3Y2J1xuICAgICAgICAgICAgPyAnbmV0d29yay5wbGVhc2VfaW5wdXRfY29ycmVjdF9pcHY2X2NpZHJfd2l0aF9kZW1vJ1xuICAgICAgICAgICAgOiAnbmV0d29yay5wbGVhc2VfaW5wdXRfY29ycmVjdF9jaWRyJ1xuICAgICAgICAgICkgfCB0cmFuc2xhdGUsXG4gICAgICB9XCJcbiAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoJ2NpZHInKS5lcnJvcnNcIlxuICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDxhdWktZm9ybS1pdGVtPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25ldHdvcmsuZXhjZXB0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGFjbC1uZXR3b3JrLXBvbGljeS1yZW1vdGUtaXAtZXhjZXB0LWlucHV0XG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIGNsYXNzPVwidHctdy1mdWxsXCJcbiAgICAgIFtyZW1vdGVJcEJsb2NrXT1cImZvcm0uZ2V0KCdjaWRyJykudmFsdWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXhjZXB0XCJcbiAgICAgIFtuZXR3b3JrTW9kZV09XCJuZXR3b3JrTW9kZSQgfCBhc3luY1wiXG4gICAgPjwvYWNsLW5ldHdvcmstcG9saWN5LXJlbW90ZS1pcC1leGNlcHQtaW5wdXQ+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvZm9ybT5cbiJdfQ==
|