mis-crystal-design-system 14.0.44 → 14.0.46

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.
@@ -59,7 +59,8 @@ function DynamicFormComponent_ng_template_3_div_0_ng_container_5_Template(rf, ct
59
59
  const _r3 = i0.ɵɵreference(6);
60
60
  i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
61
61
  } }
62
- const _c3 = function (a0) { return { "border": a0 }; };
62
+ const _c3 = function (a0) { return { "border-bottom": a0 }; };
63
+ const _c4 = function (a0) { return { "border": a0 }; };
63
64
  function DynamicFormComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
64
65
  const _r27 = i0.ɵɵgetCurrentView();
65
66
  i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
@@ -73,12 +74,15 @@ function DynamicFormComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1
73
74
  i0.ɵɵelementEnd();
74
75
  } if (rf & 2) {
75
76
  const ctx_r28 = i0.ɵɵnextContext();
77
+ const formgroup_r14 = ctx_r28.formGroup;
76
78
  const field_r12 = ctx_r28.$implicit;
77
79
  const control_r13 = ctx_r28.control;
80
+ const ctx_r15 = i0.ɵɵnextContext();
81
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r15.removeSepratorForSubFields ? "none" : ""));
78
82
  i0.ɵɵadvance(2);
79
83
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
80
84
  i0.ɵɵadvance(2);
81
- i0.ɵɵproperty("type", field_r12.fieldInputType)("formControl", control_r13)("ngStyle", i0.ɵɵpureFunction1(7, _c3, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("min", field_r12.fieldInputType === "number" ? 0 : "");
85
+ i0.ɵɵproperty("type", field_r12.fieldInputType)("formControl", control_r13)("ngStyle", i0.ɵɵpureFunction1(10, _c4, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("min", field_r12.fieldInputType === "number" ? 0 : "");
82
86
  i0.ɵɵadvance(1);
83
87
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
84
88
  } }
@@ -103,12 +107,15 @@ function DynamicFormComponent_ng_template_3_div_1_Template(rf, ctx) { if (rf & 1
103
107
  i0.ɵɵelementEnd();
104
108
  } if (rf & 2) {
105
109
  const ctx_r34 = i0.ɵɵnextContext();
110
+ const formgroup_r14 = ctx_r34.formGroup;
106
111
  const field_r12 = ctx_r34.$implicit;
107
112
  const control_r13 = ctx_r34.control;
113
+ const ctx_r16 = i0.ɵɵnextContext();
114
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(6, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r16.removeSepratorForSubFields ? "none" : ""));
108
115
  i0.ɵɵadvance(2);
109
116
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
110
117
  i0.ɵɵadvance(2);
111
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c3, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("formControl", control_r13);
118
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c4, control_r13.touched && control_r13.errors ? "1px solid #B00020" : ""))("placeholder", field_r12.placeholderText ? field_r12.placeholderText : "Input Text")("formControl", control_r13);
112
119
  i0.ɵɵadvance(1);
113
120
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
114
121
  } }
@@ -143,9 +150,11 @@ function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1
143
150
  i0.ɵɵelementEnd();
144
151
  } if (rf & 2) {
145
152
  const ctx_r44 = i0.ɵɵnextContext();
153
+ const formgroup_r14 = ctx_r44.formGroup;
146
154
  const field_r12 = ctx_r44.$implicit;
147
155
  const control_r13 = ctx_r44.control;
148
156
  const ctx_r17 = i0.ɵɵnextContext();
157
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r17.removeSepratorForSubFields ? "none" : ""));
149
158
  i0.ɵɵadvance(2);
150
159
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
151
160
  i0.ɵɵadvance(2);
@@ -175,8 +184,11 @@ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1
175
184
  i0.ɵɵelementEnd();
176
185
  } if (rf & 2) {
177
186
  const ctx_r50 = i0.ɵɵnextContext();
187
+ const formgroup_r14 = ctx_r50.formGroup;
178
188
  const field_r12 = ctx_r50.$implicit;
179
189
  const control_r13 = ctx_r50.control;
190
+ const ctx_r18 = i0.ɵɵnextContext();
191
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(4, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r18.removeSepratorForSubFields ? "none" : ""));
180
192
  i0.ɵɵadvance(2);
181
193
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
182
194
  i0.ɵɵadvance(1);
@@ -184,7 +196,16 @@ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1
184
196
  i0.ɵɵadvance(1);
185
197
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
186
198
  } }
187
- function DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template(rf, ctx) { if (rf & 1) {
199
+ function DynamicFormComponent_ng_template_3_div_4_img_5_Template(rf, ctx) { if (rf & 1) {
200
+ const _r55 = i0.ɵɵgetCurrentView();
201
+ i0.ɵɵelementStart(0, "img", 29);
202
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_4_img_5_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r55); const field_r12 = i0.ɵɵnextContext(2).$implicit; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.fieldRemoved.emit(field_r12)); });
203
+ i0.ɵɵelementEnd();
204
+ } if (rf & 2) {
205
+ const ctx_r51 = i0.ɵɵnextContext(3);
206
+ i0.ɵɵproperty("src", ctx_r51.removeIconUrl, i0.ɵɵsanitizeUrl);
207
+ } }
208
+ function DynamicFormComponent_ng_template_3_div_4_ng_container_6_Template(rf, ctx) { if (rf & 1) {
188
209
  i0.ɵɵelementContainer(0, 6);
189
210
  } if (rf & 2) {
190
211
  const control_r13 = i0.ɵɵnextContext(2).control;
@@ -192,51 +213,61 @@ function DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template(rf, ct
192
213
  const _r3 = i0.ɵɵreference(6);
193
214
  i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
194
215
  } }
216
+ const _c5 = function (a0) { return { "removeable-container": a0 }; };
195
217
  function DynamicFormComponent_ng_template_3_div_4_Template(rf, ctx) { if (rf & 1) {
196
- const _r55 = i0.ɵɵgetCurrentView();
218
+ const _r59 = i0.ɵɵgetCurrentView();
197
219
  i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
198
220
  i0.ɵɵtext(2);
199
221
  i0.ɵɵelementEnd();
200
- i0.ɵɵelementStart(3, "mis-dropdown", 26);
201
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_4_Template_mis_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(); const field_r12 = ctx_r54.$implicit; const control_r13 = ctx_r54.control; const formgroup_r14 = ctx_r54.formGroup; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, $event)); });
222
+ i0.ɵɵelementStart(3, "div", 26)(4, "mis-dropdown", 27);
223
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_4_Template_mis_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(); const field_r12 = ctx_r58.$implicit; const control_r13 = ctx_r58.control; const formgroup_r14 = ctx_r58.formGroup; const ctx_r57 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r57.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, $event)); });
224
+ i0.ɵɵelementEnd();
225
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_4_img_5_Template, 1, 1, "img", 28);
202
226
  i0.ɵɵelementEnd();
203
- i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_ng_container_4_Template, 1, 4, "ng-container", 16);
227
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_4_ng_container_6_Template, 1, 4, "ng-container", 16);
204
228
  i0.ɵɵelementEnd();
205
229
  } if (rf & 2) {
206
- const ctx_r56 = i0.ɵɵnextContext();
207
- const field_r12 = ctx_r56.$implicit;
208
- const control_r13 = ctx_r56.control;
230
+ const ctx_r60 = i0.ɵɵnextContext();
231
+ const formgroup_r14 = ctx_r60.formGroup;
232
+ const field_r12 = ctx_r60.$implicit;
233
+ const control_r13 = ctx_r60.control;
234
+ const ctx_r19 = i0.ɵɵnextContext();
235
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r19.removeSepratorForSubFields ? "none" : ""));
209
236
  i0.ɵɵadvance(2);
210
237
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
211
238
  i0.ɵɵadvance(1);
239
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c5, field_r12 == null ? null : field_r12.isRemoveable));
240
+ i0.ɵɵadvance(1);
212
241
  i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r12.itemsList)("selectedItem", control_r13.value);
213
242
  i0.ɵɵadvance(1);
243
+ i0.ɵɵproperty("ngIf", field_r12.isRemoveable && ctx_r19.removeIconUrl);
244
+ i0.ɵɵadvance(1);
214
245
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
215
246
  } }
216
247
  function DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
217
- i0.ɵɵelement(0, "img", 31);
248
+ i0.ɵɵelement(0, "img", 34);
218
249
  } if (rf & 2) {
219
- const ctx_r60 = i0.ɵɵnextContext(4);
220
- i0.ɵɵproperty("src", ctx_r60.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
250
+ const ctx_r64 = i0.ɵɵnextContext(4);
251
+ i0.ɵɵproperty("src", ctx_r64.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
221
252
  } }
222
- const _c4 = function (a0) { return { "checkbox-active": a0 }; };
253
+ const _c6 = function (a0) { return { "checkbox-active": a0 }; };
223
254
  function DynamicFormComponent_ng_template_3_div_5_div_5_Template(rf, ctx) { if (rf & 1) {
224
- const _r63 = i0.ɵɵgetCurrentView();
225
- i0.ɵɵelementStart(0, "div", 29);
226
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_5_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r63); const item_r59 = restoredCtx.$implicit; const ctx_r62 = i0.ɵɵnextContext(2); const field_r12 = ctx_r62.$implicit; const control_r13 = ctx_r62.control; const formgroup_r14 = ctx_r62.formGroup; const ctx_r61 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r61.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, item_r59)); });
227
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template, 1, 1, "img", 30);
255
+ const _r67 = i0.ɵɵgetCurrentView();
256
+ i0.ɵɵelementStart(0, "div", 32);
257
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_5_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r67); const item_r63 = restoredCtx.$implicit; const ctx_r66 = i0.ɵɵnextContext(2); const field_r12 = ctx_r66.$implicit; const control_r13 = ctx_r66.control; const formgroup_r14 = ctx_r66.formGroup; const ctx_r65 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r65.updateSelectedValueForSingleSelect(field_r12, control_r13, formgroup_r14, item_r63)); });
258
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_5_div_5_img_1_Template, 1, 1, "img", 33);
228
259
  i0.ɵɵelementStart(2, "p", 19);
229
260
  i0.ɵɵtext(3);
230
261
  i0.ɵɵelementEnd()();
231
262
  } if (rf & 2) {
232
- const item_r59 = ctx.$implicit;
263
+ const item_r63 = ctx.$implicit;
233
264
  const control_r13 = i0.ɵɵnextContext(2).control;
234
- const ctx_r57 = i0.ɵɵnextContext();
235
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, item_r59.label === (control_r13.value == null ? null : control_r13.value.label)));
265
+ const ctx_r61 = i0.ɵɵnextContext();
266
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c6, item_r63.label === (control_r13.value == null ? null : control_r13.value.label)));
236
267
  i0.ɵɵadvance(1);
237
- i0.ɵɵproperty("ngIf", item_r59.label === (control_r13.value == null ? null : control_r13.value.label) && ctx_r57.activeBtnIconUrl);
268
+ i0.ɵɵproperty("ngIf", item_r63.label === (control_r13.value == null ? null : control_r13.value.label) && ctx_r61.activeBtnIconUrl);
238
269
  i0.ɵɵadvance(2);
239
- i0.ɵɵtextInterpolate(item_r59.label);
270
+ i0.ɵɵtextInterpolate(item_r63.label);
240
271
  } }
241
272
  function DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template(rf, ctx) { if (rf & 1) {
242
273
  i0.ɵɵelementContainer(0, 6);
@@ -251,15 +282,18 @@ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1
251
282
  i0.ɵɵtext(2);
252
283
  i0.ɵɵelementEnd();
253
284
  i0.ɵɵelement(3, "div", 14);
254
- i0.ɵɵelementStart(4, "div", 27);
255
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_div_5_Template, 4, 5, "div", 28);
285
+ i0.ɵɵelementStart(4, "div", 30);
286
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_div_5_Template, 4, 5, "div", 31);
256
287
  i0.ɵɵelementEnd();
257
288
  i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_5_ng_container_6_Template, 1, 4, "ng-container", 16);
258
289
  i0.ɵɵelementEnd();
259
290
  } if (rf & 2) {
260
- const ctx_r66 = i0.ɵɵnextContext();
261
- const field_r12 = ctx_r66.$implicit;
262
- const control_r13 = ctx_r66.control;
291
+ const ctx_r70 = i0.ɵɵnextContext();
292
+ const formgroup_r14 = ctx_r70.formGroup;
293
+ const field_r12 = ctx_r70.$implicit;
294
+ const control_r13 = ctx_r70.control;
295
+ const ctx_r20 = i0.ɵɵnextContext();
296
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(4, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r20.removeSepratorForSubFields ? "none" : ""));
263
297
  i0.ɵɵadvance(2);
264
298
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
265
299
  i0.ɵɵadvance(3);
@@ -268,28 +302,28 @@ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1
268
302
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
269
303
  } }
270
304
  function DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template(rf, ctx) { if (rf & 1) {
271
- i0.ɵɵelement(0, "img", 31);
305
+ i0.ɵɵelement(0, "img", 34);
272
306
  } if (rf & 2) {
273
- const ctx_r70 = i0.ɵɵnextContext(4);
274
- i0.ɵɵproperty("src", ctx_r70.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
307
+ const ctx_r74 = i0.ɵɵnextContext(4);
308
+ i0.ɵɵproperty("src", ctx_r74.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
275
309
  } }
276
310
  function DynamicFormComponent_ng_template_3_div_6_div_5_Template(rf, ctx) { if (rf & 1) {
277
- const _r73 = i0.ɵɵgetCurrentView();
278
- i0.ɵɵelementStart(0, "div", 29);
279
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_6_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r73); const item_r69 = restoredCtx.$implicit; const ctx_r72 = i0.ɵɵnextContext(2); const field_r12 = ctx_r72.$implicit; const control_r13 = ctx_r72.control; const formgroup_r14 = ctx_r72.formGroup; const ctx_r71 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r71.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, [item_r69])); });
280
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template, 1, 1, "img", 30);
311
+ const _r77 = i0.ɵɵgetCurrentView();
312
+ i0.ɵɵelementStart(0, "div", 32);
313
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_6_div_5_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r77); const item_r73 = restoredCtx.$implicit; const ctx_r76 = i0.ɵɵnextContext(2); const field_r12 = ctx_r76.$implicit; const control_r13 = ctx_r76.control; const formgroup_r14 = ctx_r76.formGroup; const ctx_r75 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r75.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, [item_r73])); });
314
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_6_div_5_img_1_Template, 1, 1, "img", 33);
281
315
  i0.ɵɵelementStart(2, "p", 19);
282
316
  i0.ɵɵtext(3);
283
317
  i0.ɵɵelementEnd()();
284
318
  } if (rf & 2) {
285
- const item_r69 = ctx.$implicit;
319
+ const item_r73 = ctx.$implicit;
286
320
  const control_r13 = i0.ɵɵnextContext(2).control;
287
- const ctx_r67 = i0.ɵɵnextContext();
288
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, ctx_r67.isCheckBoxSelected(item_r69.label, control_r13.value)));
321
+ const ctx_r71 = i0.ɵɵnextContext();
322
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c6, ctx_r71.isCheckBoxSelected(item_r73.label, control_r13.value)));
289
323
  i0.ɵɵadvance(1);
290
- i0.ɵɵproperty("ngIf", ctx_r67.isCheckBoxSelected(item_r69.label, control_r13.value) && ctx_r67.activeBtnIconUrl);
324
+ i0.ɵɵproperty("ngIf", ctx_r71.isCheckBoxSelected(item_r73.label, control_r13.value) && ctx_r71.activeBtnIconUrl);
291
325
  i0.ɵɵadvance(2);
292
- i0.ɵɵtextInterpolate(item_r69.label);
326
+ i0.ɵɵtextInterpolate(item_r73.label);
293
327
  } }
294
328
  function DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template(rf, ctx) { if (rf & 1) {
295
329
  i0.ɵɵelementContainer(0, 6);
@@ -304,15 +338,18 @@ function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1
304
338
  i0.ɵɵtext(2);
305
339
  i0.ɵɵelementEnd();
306
340
  i0.ɵɵelement(3, "div", 14);
307
- i0.ɵɵelementStart(4, "div", 27);
308
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_6_div_5_Template, 4, 5, "div", 28);
341
+ i0.ɵɵelementStart(4, "div", 30);
342
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_6_div_5_Template, 4, 5, "div", 31);
309
343
  i0.ɵɵelementEnd();
310
344
  i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_ng_container_6_Template, 1, 4, "ng-container", 16);
311
345
  i0.ɵɵelementEnd();
312
346
  } if (rf & 2) {
313
- const ctx_r76 = i0.ɵɵnextContext();
314
- const field_r12 = ctx_r76.$implicit;
315
- const control_r13 = ctx_r76.control;
347
+ const ctx_r80 = i0.ɵɵnextContext();
348
+ const formgroup_r14 = ctx_r80.formGroup;
349
+ const field_r12 = ctx_r80.$implicit;
350
+ const control_r13 = ctx_r80.control;
351
+ const ctx_r21 = i0.ɵɵnextContext();
352
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(4, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r21.removeSepratorForSubFields ? "none" : ""));
316
353
  i0.ɵɵadvance(2);
317
354
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
318
355
  i0.ɵɵadvance(3);
@@ -329,19 +366,22 @@ function DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template(rf, ct
329
366
  i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r13.errors));
330
367
  } }
331
368
  function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1) {
332
- const _r81 = i0.ɵɵgetCurrentView();
369
+ const _r85 = i0.ɵɵgetCurrentView();
333
370
  i0.ɵɵelementStart(0, "div", 18)(1, "p", 19);
334
371
  i0.ɵɵtext(2);
335
372
  i0.ɵɵelementEnd();
336
- i0.ɵɵelementStart(3, "mis-multi-select-dropdown", 32);
337
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_7_Template_mis_multi_select_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r81); const ctx_r80 = i0.ɵɵnextContext(); const field_r12 = ctx_r80.$implicit; const control_r13 = ctx_r80.control; const formgroup_r14 = ctx_r80.formGroup; const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, $event)); });
373
+ i0.ɵɵelementStart(3, "mis-multi-select-dropdown", 35);
374
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_7_Template_mis_multi_select_dropdown_onChange_3_listener($event) { i0.ɵɵrestoreView(_r85); const ctx_r84 = i0.ɵɵnextContext(); const field_r12 = ctx_r84.$implicit; const control_r13 = ctx_r84.control; const formgroup_r14 = ctx_r84.formGroup; const ctx_r83 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r83.updateSelectedValueForMultiSelect(field_r12, control_r13, formgroup_r14, $event)); });
338
375
  i0.ɵɵelementEnd();
339
376
  i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_7_ng_container_4_Template, 1, 4, "ng-container", 16);
340
377
  i0.ɵɵelementEnd();
341
378
  } if (rf & 2) {
342
- const ctx_r82 = i0.ɵɵnextContext();
343
- const field_r12 = ctx_r82.$implicit;
344
- const control_r13 = ctx_r82.control;
379
+ const ctx_r86 = i0.ɵɵnextContext();
380
+ const formgroup_r14 = ctx_r86.formGroup;
381
+ const field_r12 = ctx_r86.$implicit;
382
+ const control_r13 = ctx_r86.control;
383
+ const ctx_r22 = i0.ɵɵnextContext();
384
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c3, (formgroup_r14 == null ? null : formgroup_r14.controls == null ? null : formgroup_r14.controls.subFields == null ? null : formgroup_r14.controls.subFields.controls == null ? null : formgroup_r14.controls.subFields.controls.length) && ctx_r22.removeSepratorForSubFields ? "none" : ""));
345
385
  i0.ɵɵadvance(2);
346
386
  i0.ɵɵtextInterpolate1(" ", field_r12.title, " ");
347
387
  i0.ɵɵadvance(1);
@@ -350,14 +390,14 @@ function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1
350
390
  i0.ɵɵproperty("ngIf", control_r13.touched && control_r13.errors);
351
391
  } }
352
392
  function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
353
- i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_div_0_Template, 6, 9, "div", 10);
354
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_1_Template, 6, 7, "div", 10);
355
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_div_2_Template, 8, 7, "div", 11);
356
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_3_Template, 5, 3, "div", 11);
357
- i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_Template, 5, 6, "div", 11);
358
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_Template, 7, 3, "div", 10);
359
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_Template, 7, 3, "div", 10);
360
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_7_Template, 5, 9, "div", 11);
393
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_div_0_Template, 6, 12, "div", 10);
394
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_1_Template, 6, 10, "div", 10);
395
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_div_2_Template, 8, 10, "div", 11);
396
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_3_Template, 5, 6, "div", 11);
397
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_Template, 7, 13, "div", 11);
398
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_Template, 7, 6, "div", 10);
399
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_Template, 7, 6, "div", 10);
400
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_7_Template, 5, 12, "div", 11);
361
401
  } if (rf & 2) {
362
402
  const field_r12 = ctx.$implicit;
363
403
  i0.ɵɵproperty("ngIf", field_r12.fieldType === "input" && (field_r12.fieldInputType === "text" || field_r12.fieldInputType === "number"));
@@ -378,25 +418,25 @@ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
378
418
  } }
379
419
  function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
380
420
  i0.ɵɵelementContainerStart(0);
381
- i0.ɵɵelementStart(1, "p", 34);
421
+ i0.ɵɵelementStart(1, "p", 37);
382
422
  i0.ɵɵtext(2);
383
423
  i0.ɵɵelementEnd();
384
- i0.ɵɵelement(3, "div", 35);
424
+ i0.ɵɵelement(3, "div", 38);
385
425
  i0.ɵɵelementContainerEnd();
386
426
  } if (rf & 2) {
387
- const error_r85 = ctx.$implicit;
427
+ const error_r89 = ctx.$implicit;
388
428
  i0.ɵɵadvance(2);
389
- i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r85.value, " ");
429
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r89.value, " ");
390
430
  } }
391
431
  function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
392
- i0.ɵɵelementStart(0, "div", 33);
432
+ i0.ɵɵelementStart(0, "div", 36);
393
433
  i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 1, "ng-container", 9);
394
434
  i0.ɵɵpipe(2, "keyvalue");
395
435
  i0.ɵɵelementEnd();
396
436
  } if (rf & 2) {
397
- const errors_r83 = ctx.$implicit;
437
+ const errors_r87 = ctx.$implicit;
398
438
  i0.ɵɵadvance(1);
399
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r83));
439
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r87));
400
440
  } }
401
441
  export class DynamicFormComponent {
402
442
  constructor() {
@@ -410,6 +450,8 @@ export class DynamicFormComponent {
410
450
  // Need to deprecate these inputs and use constants.
411
451
  this.activeBtnIconUrl = "";
412
452
  this.calendarIconUrl = "";
453
+ this.removeIconUrl = "";
454
+ this.removeSepratorForSubFields = false;
413
455
  /**
414
456
  * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
415
457
  */
@@ -422,6 +464,7 @@ export class DynamicFormComponent {
422
464
  * formInitialized: Emits dynamic form API on form initilization
423
465
  */
424
466
  this.formInitialized = new EventEmitter();
467
+ this.fieldRemoved = new EventEmitter();
425
468
  }
426
469
  ngOnInit() {
427
470
  // Building the form
@@ -628,7 +671,7 @@ export class DynamicFormComponent {
628
671
  }
629
672
  }
630
673
  DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); };
631
- DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], ["class", "dynamic-field multi-line-field-container", 4, "ngIf"], ["class", "dynamic-field single-line-field-container", 4, "ngIf"], [1, "dynamic-field", "multi-line-field-container"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], [1, "dynamic-field", "single-line-field-container"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], [3, "control", "valueChanged"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
674
+ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], ["class", "dynamic-field multi-line-field-container", 3, "ngStyle", 4, "ngIf"], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], [3, "control", "valueChanged"], [3, "ngClass"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "src", "click"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
632
675
  i0.ɵɵelementStart(0, "form", 0);
633
676
  i0.ɵɵelementContainerStart(1, 1);
634
677
  i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 2);
@@ -640,10 +683,10 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
640
683
  i0.ɵɵproperty("formGroup", ctx.dynamicForm);
641
684
  i0.ɵɵadvance(2);
642
685
  i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
643
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}"] });
686
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}"] });
644
687
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
645
688
  type: Component,
646
- args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls;\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i].subFields[findSelectedIndex(formFields[i]?.subFields, fieldControl.controls.value.value.value)],\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}\n"] }]
689
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls;\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i].subFields[findSelectedIndex(formFields[i]?.subFields, fieldControl.controls.value.value.value)],\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}\n"] }]
647
690
  }], function () { return []; }, { formFields: [{
648
691
  type: Input
649
692
  }], formValues: [{
@@ -652,12 +695,18 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
652
695
  type: Input
653
696
  }], calendarIconUrl: [{
654
697
  type: Input
698
+ }], removeIconUrl: [{
699
+ type: Input
700
+ }], removeSepratorForSubFields: [{
701
+ type: Input
655
702
  }], formUpdated: [{
656
703
  type: Output
657
704
  }], formValid: [{
658
705
  type: Output
659
706
  }], formInitialized: [{
660
707
  type: Output
708
+ }], fieldRemoved: [{
709
+ type: Output
661
710
  }] }); })();
662
711
  export const dynamicFieldValidator = (validators) => {
663
712
  return (control) => {
@@ -709,4 +758,4 @@ export const dynamicFieldValidator = (validators) => {
709
758
  return errors;
710
759
  };
711
760
  };
712
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztJQ1FqQiw2QkFBd0Y7SUFDdEYsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7O0lBTlgsZUFBaUM7SUFBakMsc0NBQWlDLGdRQUFBOzs7SUFIdkMsOEJBQXlOO0lBQ3ZOLDRHQVFlO0lBQ2pCLGlCQUFNOzs7SUFUc0MsZUFBNEM7SUFBNUMscUVBQTRDOzs7O0lBWDFGLGdDQUFrSDtJQUM5RywyQkFRYTtJQUNmLG9GQVVNO0lBQ1IsMEJBQWU7Ozs7OztJQXJCRCxvQ0FBbUI7SUFFN0IsZUFBaUM7SUFBakMsc0NBQWlDLGlJQUFBO0lBUUosZUFBd0w7SUFBeEwsa2FBQXdMOzs7O0lBOEJ6TiwyQkFJZTs7Ozs7SUFIYixzQ0FBdUMsMkVBQUE7Ozs7O0lBWjNDLCtCQUNnSCxZQUFBO0lBRTVHLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUFvQztJQUNwQyxpQ0FJdUQ7SUFIckQsd1RBQWlCLGVBQUEsZ0VBQWdELENBQUEsSUFBQztJQURwRSxpQkFJdUQ7SUFDdkQsNEdB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QUFFLFlBQVksQ0FBQyxDQUFBO29CQUN0RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFBO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDakMsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDekQsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDbkMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7WUFDRCxJQUFJLEtBQUs7Z0JBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTnNEeW5hbWljRm9ybSB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1keW5hbWljLWZvcm1cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIGZvcm1GaWVsZHM6ICBEeW5hbWljIGZpZWxkcyByZWNpZXZlZCBmcm9tIHRoZSBBUEkgbWV0YWRhdGEgdG8gYnVpbGQgYSBkeW5hbWljIGZvcm1cbiAgICogZm9ybVZhbHVlczogIEhvbGRzIHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmb3JtIHdpdGggXCJrZXlcIiBiZWluZyBkeW5hbWljIGZpZWxkIFwidGl0bGVcIlxuICAgKiAgICAgICAgICAgICAgYW5kIHZhbHVlIGJlaW5nIHRoZSB1c2VyIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUZpZWxkczogQXJyYXk8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPiA9IFtdO1xuICBASW5wdXQoKSBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIC8vIE5lZWQgdG8gZGVwcmVjYXRlIHRoZXNlIGlucHV0cyBhbmQgdXNlIGNvbnN0YW50cy5cbiAgQElucHV0KCkgYWN0aXZlQnRuSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIGNhbGVuZGFySWNvblVybCA9IFwiXCI7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZSh0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLCBmaWVsZFZhbHVlLnZhbHVlKTtcbiAgICAgIGlmIChmaWVsZFZhbHVlLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzID0ge31cbiAgICAgICAgZmllbGRWYWx1ZS5zdWJGaWVsZHMuZm9yRWFjaCgoc3ViRmllbGRWYWx1ZSwgc3ViSW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc3ViRm9ybUZpZWxkID0gdGhpcy5mb3JtRmllbGRzW2luZGV4XS5zdWJGaWVsZHNbc3ViSW5kZXhdXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZEluZGV4KHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc3ViZmllbGRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCAhPT0gLTEgPyBzZWxlY3RlZEluZGV4IDogMDtcbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzO1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGZvcm1GaWVsZHNbaV0uc3ViRmllbGRzW2ZpbmRTZWxlY3RlZEluZGV4KGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKV0sXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIChmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHQnIHx8IGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJylcIj5cbiAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDxpbnB1dCBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRcIiBbdHlwZV09XCJmaWVsZC5maWVsZElucHV0VHlwZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiIFxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFxuICAgICAgW21pbl09XCJmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicgPyAwIDogJycgXCIvPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCIgXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0YXJlYScgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dGFyZWFcIiB0eXBlPVwidGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L3RleHRhcmVhPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAnZGF0ZScgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGUtcGlja2VyXCIgcmVhZG9ubHkgbWlzVHpEcCBbZHBDb25maWddPVwiZmllbGQuZmllbGRDb25maWdcIlxuICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjb250cm9sLnNldFZhbHVlKCRldmVudClcIiBbc2VsZWN0ZWREYXRlXT1cImNvbnRyb2wudmFsdWVcIiBbb2Zmc2V0WV09XCIwXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVcIiAjZHAgLz5cbiAgICAgIDxpbWcgYWx0PVwiZGF0YS1waWNrZXJcIiAqbmdJZj1cImNhbGVuZGFySWNvblVybFwiIGNsYXNzPVwiZGF0ZS1waWNrZXItaWNvblwiIFtzcmNdPVwiY2FsZW5kYXJJY29uVXJsXCJcbiAgICAgICAgKGNsaWNrKT1cImRwLmNsaWNrKClcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnYm9vbGVhbicgZmllbGRJbnB1dFR5cGU6ICd0b2dnbGUnIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnYm9vbGVhbicgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0b2dnbGUnXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICA8L21pcy1kcm9wZG93bj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdyYWRpbydcIj5cbiAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsIH1cIlxuICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBpdGVtKTtcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cIihpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdjaGVja2JveCcgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpIH1cIlxuICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIFtpdGVtXSlcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCJcbiAgICAgICAgICBhbHQ9XCJcIiAvPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cImNvbnRyb2wudmFsdWVcIiAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJTsgaGVpZ2h0OiAwXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
761
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztJQ1FqQiw2QkFBd0Y7SUFDdEYsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7O0lBTlgsZUFBaUM7SUFBakMsc0NBQWlDLGdRQUFBOzs7SUFIdkMsOEJBQXlOO0lBQ3ZOLDRHQVFlO0lBQ2pCLGlCQUFNOzs7SUFUc0MsZUFBNEM7SUFBNUMscUVBQTRDOzs7O0lBWDFGLGdDQUFrSDtJQUM5RywyQkFRYTtJQUNmLG9GQVVNO0lBQ1IsMEJBQWU7Ozs7OztJQXJCRCxvQ0FBbUI7SUFFN0IsZUFBaUM7SUFBakMsc0NBQWlDLGlJQUFBO0lBUUosZUFBd0w7SUFBeEwsa2FBQXdMOzs7O0lBK0J6TiwyQkFJZTs7Ozs7SUFIYixzQ0FBdUMsMkVBQUE7Ozs7OztJQWIzQywrQkFFZ0gsWUFBQTtJQUU1RyxZQUNGO0lBQUEsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsaUNBSXVEO0lBSHJELHdUQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFEcEUsaUJBSXVEO0lBQ3ZELDRH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QkFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOc0R5bmFtaWNGb3JtIH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLm5hbWVzcGFjZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgZHluYW1pY0Zvcm1BUEk6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGb3JtQVBJO1xuICB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJ1aWxkaW5nIHRoZSBmb3JtXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRm9ybSh0aGlzLmZvcm1GaWVsZHMsIHRoaXMuZm9ybVZhbHVlcyk7XG5cbiAgICAvLyBTdWJzY3JpYmluZyB0byBmb3JtIGNoYW5nZXMgYW5kIGVtaXRpbmcgdmFsdWVzLlxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJCA9IHRoaXMuZHluYW1pY0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIC8vYXBpIHRvIGV4cG9zZSBmdW5jdGlvbnNcbiAgICB0aGlzLmR5bmFtaWNGb3JtQVBJID0ge1xuICAgICAgZGVmYXVsdEZvcm1WYWx1ZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkLmVtaXQodGhpcy5keW5hbWljRm9ybUFQSSk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgb25Gb3JtVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGxldCBmb3JtVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gICAgdGhpcy5mb3JtVXBkYXRlZC5lbWl0KGZvcm1WYWx1ZXMpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1WYWx1ZXMpXG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QoZm9ybVZhbHVlczogQXJyYXk8YW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGxldCBkeW5hbWljRmllbGRzVmFsdWUgPSB7fTtcbiAgICBmb3JtVmFsdWVzLmZvckVhY2goKGZpZWxkVmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1tzdWJJbmRleF1cbiAgICAgICAgICBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNbc3ViRm9ybUZpZWxkLmNvbmZpZ05hbWVdID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShzdWJGb3JtRmllbGQsIHN1YkZpZWxkVmFsdWUpXG4gICAgICAgIH0pXG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0ge1xuICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICBzdWJGaWVsZHM6IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZHluYW1pY0ZpZWxkc1ZhbHVlO1xuICB9XG4gIGdlbmVyYXRlRHluYW1pY0Zvcm0oXG4gICAgZm9ybUZpZWxkczogQXJyYXk8TnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkPixcbiAgICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGxldCBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgIGxldCBmaWVsZFZhbHVlID0gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXT8udmFsdWUgPyBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdLnZhbHVlIDogZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXVxuICAgICAgbGV0IGZpZWxkQ29udHJvbCA9IHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZmllbGQsIGZpZWxkVmFsdWUpO1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHMoZm9ybVZhbHVlcywgZmllbGQsIGZpZWxkQ29udHJvbC52YWx1ZSk7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIHZhbHVlOiBmaWVsZENvbnRyb2wsXG4gICAgICAgIHN1YkZpZWxkczogc3ViRmllbGRzQ29udHJvbHNcbiAgICAgIH0pKVxuICAgIH0gIFxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBkeW5hbWljRmllbGRzOiBmb3JtQXJyYXlcbiAgICB9KVxuICB9XG4gIFxuICBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm0uZ2V0KFwiZHluYW1pY0ZpZWxkc1wiKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG4gIHVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoZmllbGQuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyh0aGlzLmZvcm1WYWx1ZXMsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICBmb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnc3ViRmllbGRzJylcbiAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKCdzdWJGaWVsZHMnLCBzdWJGaWVsZHNDb250cm9scylcbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWU6IGFueVxuICApOiB2b2lkIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZT8udmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBjb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWUpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgdmFsdWVzOiBBcnJheTxhbnk+XG4gICk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH0+ID0gY29udHJvbC52YWx1ZTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGxldCBpdGVtSW5kZXggPSBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZS5sYWJlbCk7XG4gICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4udmFsdWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZXMpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIGlzQ2hlY2tCb3hTZWxlY3RlZCh2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZFZhbHVlczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlKSA+IC0xO1xuICB9XG5cbiAgZmluZFNlbGVjdGVkSW5kZXgoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzdWJmaWVsZHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiBzZWxlY3RlZEluZGV4ICE9PSAtMSA/IHNlbGVjdGVkSW5kZXggOiAwO1xuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KGZvcm1WYWx1ZSkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICBjb25zdCBmaW5kU2VsZWN0ZWRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBmb3JtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF06IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRyb3Bkb3duXCIpIHtcbiAgICAgICAgaWYgKCFmb3JtVmFsdWUpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybUZpZWxkLml0ZW1zTGlzdFswXSk7XG4gICAgICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJtdWx0aVNlbGVjdFwiKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi5mb3JtRmllbGQuaXRlbXNMaXN0W2luZGV4XSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoISFmb3JtVmFsdWUpO1xuICAgIH0gZWxzZSBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG4gIG1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKGZvcm1GaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLCBmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIHJldHVybiBmb3JtVmFsdWU7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIHJldHVybiArZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICByZXR1cm4gbW9tZW50LnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbC52YWx1ZSAmJiAoISFmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMgJiYgZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzPy5sZW5ndGggPiAwICYmIG1hdGNoUGFyZW50Q29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViRmllbGRDb250cm9sIG9mIGZpZWxkQ29udHJvbC5jb250cm9scy5zdWJGaWVsZHMuY29udHJvbHM7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXS5zdWJGaWVsZHNbZmluZFNlbGVjdGVkSW5kZXgoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUpXSxcbiAgICAgICAgICAgICAgY29udHJvbDogc3ViRmllbGRDb250cm9sXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkIGxldC1maWVsZCBsZXQtY29udHJvbD1cImNvbnRyb2xcIiBsZXQtZm9ybWdyb3VwPVwiZm9ybUdyb3VwXCI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dGFyZWFcIiB0eXBlPVwidGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L3RleHRhcmVhPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAnZGF0ZScgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgI2RwIC8+XG4gICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fVxuICAgIDwvcD5cbiAgICA8bWlzLXN3aXRjaCBbY29udHJvbF09XCJjb250cm9sXCIgKHZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L21pcy1zd2l0Y2g+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydyZW1vdmVhYmxlLWNvbnRhaW5lcicgOiBmaWVsZD8uaXNSZW1vdmVhYmxlfVwiPlxuICAgICAgPG1pcy1kcm9wZG93biBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCInMTQwcHgnXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCIgW3NlbGVjdGVkSXRlbV09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+XG4gICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5pc1JlbW92ZWFibGUgJiYgcmVtb3ZlSWNvblVybFwiIGNsYXNzPVwicmVtb3ZlLWljb25cIiBbc3JjXT1cInJlbW92ZUljb25VcmxcIiAoY2xpY2spPVwiZmllbGRSZW1vdmVkLmVtaXQoZmllbGQpXCI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAncmFkaW8nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpIH1cIlxuICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIFtpdGVtXSlcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCJcbiAgICAgICAgICBhbHQ9XCJcIiAvPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIFt3aWR0aF09XCInMTQwcHgnXCIgW3Nob3dTZWxlY3RlZENvdW50XT1cInRydWVcIiBbZHJvcGRvd25MaXN0V2lkdGhdPVwiJzI1NnB4J1wiXG4gICAgICBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFtoaWRlQXBwbHlCdXR0b25dPVwidHJ1ZVwiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICBbc2VsZWN0ZWRJdGVtc109XCJjb250cm9sLnZhbHVlXCIgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGRFcnJvcnMgbGV0LWVycm9ycz5cbiAgPGRpdiBpZD1cImVycm9yLW1lc3NhZ2VzLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9ycyB8IGtleXZhbHVlXCI+XG4gICAgICA8cCBjbGFzcz1cImg4XCI+XG4gICAgICAgIHt7XCIg4oCiICZuYnNwO1wiICsgZXJyb3IudmFsdWV9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCU7IGhlaWdodDogMFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19