@po-ui/ng-components 14.5.0 → 14.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/components.module.mjs +14 -7
- package/esm2020/lib/components/index.mjs +2 -1
- package/esm2020/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
- package/esm2020/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +5 -5
- package/esm2020/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.mjs +1 -1
- package/esm2020/lib/components/po-field/index.mjs +2 -1
- package/esm2020/lib/components/po-field/po-checkbox/po-checkbox-base.component.mjs +27 -2
- package/esm2020/lib/components/po-field/po-checkbox/po-checkbox-size.enum.mjs +15 -0
- package/esm2020/lib/components/po-field/po-checkbox/po-checkbox.component.mjs +4 -4
- package/esm2020/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.mjs +1 -1
- package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +2 -2
- package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +5 -1
- package/esm2020/lib/components/po-link/index.mjs +3 -0
- package/esm2020/lib/components/po-link/po-link-base.component.mjs +54 -0
- package/esm2020/lib/components/po-link/po-link.component.mjs +40 -0
- package/esm2020/lib/components/po-link/po-link.module.mjs +24 -0
- package/esm2020/lib/components/po-table/interfaces/po-table-column.interface.mjs +1 -1
- package/esm2020/lib/components/po-table/po-table-detail/po-table-detail-column.interface.mjs +1 -1
- package/esm2020/lib/components/po-table/po-table.component.mjs +355 -356
- package/esm2020/lib/services/po-language/po-language.service.mjs +3 -1
- package/fesm2015/po-ui-ng-components.mjs +523 -355
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +513 -355
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/components.module.d.ts +2 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +3 -3
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +7 -4
- package/lib/components/po-field/index.d.ts +1 -0
- package/lib/components/po-field/po-checkbox/po-checkbox-base.component.d.ts +18 -1
- package/lib/components/po-field/po-checkbox/po-checkbox-size.enum.d.ts +13 -0
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.d.ts +1 -1
- package/lib/components/po-field/po-select/po-select.component.d.ts +2 -1
- package/lib/components/po-link/index.d.ts +2 -0
- package/lib/components/po-link/po-link-base.component.d.ts +37 -0
- package/lib/components/po-link/po-link.component.d.ts +26 -0
- package/lib/components/po-link/po-link.module.d.ts +13 -0
- package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +1 -1
- package/lib/components/po-table/po-table-detail/po-table-detail-column.interface.d.ts +1 -1
- package/package.json +4 -4
- package/po-ui-ng-components-14.7.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-14.5.0.tgz +0 -0
|
@@ -12,23 +12,22 @@ import * as i2 from "../../services/po-language/po-language.service";
|
|
|
12
12
|
import * as i3 from "@angular/common";
|
|
13
13
|
import * as i4 from "@angular/router";
|
|
14
14
|
import * as i5 from "./services/po-table.service";
|
|
15
|
-
import * as i6 from "@angular/
|
|
16
|
-
import * as i7 from "
|
|
17
|
-
import * as i8 from "../po-
|
|
18
|
-
import * as i9 from "../po-
|
|
19
|
-
import * as i10 from "../po-
|
|
20
|
-
import * as i11 from "
|
|
21
|
-
import * as i12 from "
|
|
22
|
-
import * as i13 from "../po-
|
|
23
|
-
import * as i14 from "
|
|
24
|
-
import * as i15 from "./po-table-column-
|
|
25
|
-
import * as i16 from "./po-table-column-
|
|
26
|
-
import * as i17 from "./po-table-column-
|
|
27
|
-
import * as i18 from "./po-table-
|
|
28
|
-
import * as i19 from "./po-table-
|
|
29
|
-
import * as i20 from "./po-table-subtitle-
|
|
30
|
-
import * as i21 from "
|
|
31
|
-
import * as i22 from "../../pipes/po-time/po-time.pipe";
|
|
15
|
+
import * as i6 from "@angular/cdk/scrolling";
|
|
16
|
+
import * as i7 from "../po-button/po-button.component";
|
|
17
|
+
import * as i8 from "../po-container/po-container.component";
|
|
18
|
+
import * as i9 from "../po-loading/po-loading.component";
|
|
19
|
+
import * as i10 from "../po-popup/po-popup.component";
|
|
20
|
+
import * as i11 from "../../directives/po-tooltip/po-tooltip.directive";
|
|
21
|
+
import * as i12 from "../po-icon/po-icon.component";
|
|
22
|
+
import * as i13 from "../po-field/po-checkbox/po-checkbox.component";
|
|
23
|
+
import * as i14 from "./po-table-column-icon/po-table-column-icon.component";
|
|
24
|
+
import * as i15 from "./po-table-column-label/po-table-column-label.component";
|
|
25
|
+
import * as i16 from "./po-table-column-link/po-table-column-link.component";
|
|
26
|
+
import * as i17 from "./po-table-column-manager/po-table-column-manager.component";
|
|
27
|
+
import * as i18 from "./po-table-detail/po-table-detail.component";
|
|
28
|
+
import * as i19 from "./po-table-subtitle-circle/po-table-subtitle-circle.component";
|
|
29
|
+
import * as i20 from "./po-table-subtitle-footer/po-table-subtitle-footer.component";
|
|
30
|
+
import * as i21 from "../../pipes/po-time/po-time.pipe";
|
|
32
31
|
const _c0 = ["noColumnsHeader"];
|
|
33
32
|
const _c1 = ["noColumnsHeaderFixed"];
|
|
34
33
|
const _c2 = ["popup"];
|
|
@@ -161,11 +160,11 @@ function PoTableComponent_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
161
160
|
function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
|
|
162
161
|
const _r52 = i0.ɵɵgetCurrentView();
|
|
163
162
|
i0.ɵɵelementStart(0, "po-checkbox", 49);
|
|
164
|
-
i0.ɵɵlistener("
|
|
163
|
+
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r51 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r51.selectAllRows()); });
|
|
165
164
|
i0.ɵɵelementEnd();
|
|
166
165
|
} if (rf & 2) {
|
|
167
166
|
const ctx_r50 = i0.ɵɵnextContext(3);
|
|
168
|
-
i0.ɵɵproperty("
|
|
167
|
+
i0.ɵɵproperty("p-checkboxValue", ctx_r50.selectAll === null ? "mixed" : ctx_r50.selectAll);
|
|
169
168
|
} }
|
|
170
169
|
function PoTableComponent_ng_template_4_th_3_Template(rf, ctx) { if (rf & 1) {
|
|
171
170
|
i0.ɵɵelementStart(0, "th", 47)(1, "div");
|
|
@@ -206,22 +205,22 @@ function PoTableComponent_ng_template_4_th_7_ng_container_2_Template(rf, ctx) {
|
|
|
206
205
|
} }
|
|
207
206
|
const _c16 = function (a0) { return { $implicit: a0 }; };
|
|
208
207
|
function PoTableComponent_ng_template_4_th_7_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
-
const
|
|
208
|
+
const _r60 = i0.ɵɵgetCurrentView();
|
|
210
209
|
i0.ɵɵelementStart(0, "th", 54);
|
|
211
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
210
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r60); const column_r56 = restoredCtx.$implicit; const ctx_r59 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r59.sortColumn(column_r56)); });
|
|
212
211
|
i0.ɵɵelementStart(1, "div", 55);
|
|
213
212
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_4_th_7_ng_container_2_Template, 1, 0, "ng-container", 56);
|
|
214
213
|
i0.ɵɵelementEnd()();
|
|
215
214
|
} if (rf & 2) {
|
|
216
|
-
const
|
|
215
|
+
const column_r56 = ctx.$implicit;
|
|
217
216
|
const ctx_r46 = i0.ɵɵnextContext(2);
|
|
218
217
|
const _r17 = i0.ɵɵreference(19);
|
|
219
|
-
i0.ɵɵstyleProp("width",
|
|
220
|
-
i0.ɵɵclassProp("po-clickable", ctx_r46.sort &&
|
|
218
|
+
i0.ɵɵstyleProp("width", column_r56.width)("max-width", column_r56.width)("min-width", column_r56.width);
|
|
219
|
+
i0.ɵɵclassProp("po-clickable", ctx_r46.sort && column_r56.sortable !== false || ctx_r46.hasService)("po-table-header-subtitle", column_r56.type === "subtitle");
|
|
221
220
|
i0.ɵɵadvance(1);
|
|
222
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r46.height)("po-table-header-flex-right",
|
|
221
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r46.height)("po-table-header-flex-right", column_r56.type === "currency" || column_r56.type === "number")("po-table-header-flex-center", column_r56.type === "subtitle");
|
|
223
222
|
i0.ɵɵadvance(1);
|
|
224
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c16,
|
|
223
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c16, column_r56));
|
|
225
224
|
} }
|
|
226
225
|
function PoTableComponent_ng_template_4_th_8_Template(rf, ctx) { if (rf & 1) {
|
|
227
226
|
i0.ɵɵelement(0, "th", 50);
|
|
@@ -233,16 +232,16 @@ function PoTableComponent_ng_template_4_th_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
233
232
|
i0.ɵɵclassProp("po-table-header-single-action", ctx_r48.isSingleAction && !ctx_r48.hideColumnsManager)("po-table-header-actions", !ctx_r48.isSingleAction);
|
|
234
233
|
} }
|
|
235
234
|
function PoTableComponent_ng_template_4_th_10_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
-
const
|
|
235
|
+
const _r64 = i0.ɵɵgetCurrentView();
|
|
237
236
|
i0.ɵɵelementStart(0, "th", null, 57)(2, "div")(3, "button", 58, 59);
|
|
238
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
237
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r64); const ctx_r63 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r63.onOpenColumnManager()); });
|
|
239
238
|
i0.ɵɵelementEnd()()();
|
|
240
239
|
} if (rf & 2) {
|
|
241
|
-
const
|
|
240
|
+
const _r61 = i0.ɵɵreference(1);
|
|
242
241
|
const ctx_r49 = i0.ɵɵnextContext(2);
|
|
243
242
|
i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r49.isSingleAction || !ctx_r49.actionRight)("po-table-header-column-manager-border", !ctx_r49.height && ctx_r49.container)("po-table-header-single-action", ctx_r49.isSingleAction && ctx_r49.actionRight);
|
|
244
243
|
i0.ɵɵadvance(2);
|
|
245
|
-
i0.ɵɵstyleProp("width", ctx_r49.height && ctx_r49.visibleActions.length ?
|
|
244
|
+
i0.ɵɵstyleProp("width", ctx_r49.height && ctx_r49.visibleActions.length ? _r61.offsetWidth : undefined, "px");
|
|
246
245
|
i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r49.height && ctx_r49.container)("po-table-header-column-manager-fixed-inner", ctx_r49.height);
|
|
247
246
|
i0.ɵɵadvance(1);
|
|
248
247
|
i0.ɵɵproperty("p-tooltip", ctx_r49.literals.columnsManager);
|
|
@@ -286,11 +285,11 @@ function PoTableComponent_ng_template_6_tbody_3_Template(rf, ctx) { if (rf & 1)
|
|
|
286
285
|
i0.ɵɵtext(4);
|
|
287
286
|
i0.ɵɵelementEnd()()()();
|
|
288
287
|
} if (rf & 2) {
|
|
289
|
-
const
|
|
288
|
+
const ctx_r66 = i0.ɵɵnextContext(2);
|
|
290
289
|
i0.ɵɵadvance(2);
|
|
291
|
-
i0.ɵɵproperty("colSpan",
|
|
290
|
+
i0.ɵɵproperty("colSpan", ctx_r66.columnCount);
|
|
292
291
|
i0.ɵɵadvance(2);
|
|
293
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
292
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r66.literals.noData, " ");
|
|
294
293
|
} }
|
|
295
294
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
296
295
|
i0.ɵɵelementContainer(0);
|
|
@@ -300,56 +299,56 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_Template(rf,
|
|
|
300
299
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
301
300
|
i0.ɵɵelementEnd();
|
|
302
301
|
} if (rf & 2) {
|
|
303
|
-
const
|
|
304
|
-
const
|
|
302
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
303
|
+
const ctx_r71 = i0.ɵɵnextContext(3);
|
|
305
304
|
const _r13 = i0.ɵɵreference(15);
|
|
306
305
|
const _r15 = i0.ɵɵreference(17);
|
|
307
306
|
i0.ɵɵadvance(1);
|
|
308
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
307
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r71.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c16, row_r69));
|
|
309
308
|
} }
|
|
310
309
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
|
|
311
310
|
const _c17 = function (a0, a1) { return { row: a0, rowIndex: a1 }; };
|
|
312
311
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
313
|
-
const
|
|
312
|
+
const _r87 = i0.ɵɵgetCurrentView();
|
|
314
313
|
i0.ɵɵelementStart(0, "td", 71);
|
|
315
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
314
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r87); const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r85 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r85.toggleDetail(row_r69)); });
|
|
316
315
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
317
316
|
i0.ɵɵelementEnd();
|
|
318
317
|
} if (rf & 2) {
|
|
319
|
-
const
|
|
320
|
-
const
|
|
321
|
-
const
|
|
318
|
+
const ctx_r88 = i0.ɵɵnextContext();
|
|
319
|
+
const row_r69 = ctx_r88.$implicit;
|
|
320
|
+
const rowIndex_r70 = ctx_r88.index;
|
|
322
321
|
i0.ɵɵnextContext(3);
|
|
323
322
|
const _r11 = i0.ɵɵreference(13);
|
|
324
323
|
i0.ɵɵadvance(1);
|
|
325
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
324
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r69, rowIndex_r70));
|
|
326
325
|
} }
|
|
327
326
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_ng_template_0_Template(rf, ctx) { }
|
|
328
327
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
|
|
329
328
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 72);
|
|
330
329
|
} if (rf & 2) {
|
|
331
|
-
const
|
|
332
|
-
const
|
|
333
|
-
const
|
|
330
|
+
const ctx_r90 = i0.ɵɵnextContext();
|
|
331
|
+
const row_r69 = ctx_r90.$implicit;
|
|
332
|
+
const rowIndex_r70 = ctx_r90.index;
|
|
334
333
|
i0.ɵɵnextContext(3);
|
|
335
334
|
const _r23 = i0.ɵɵreference(25);
|
|
336
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
335
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r69, rowIndex_r70));
|
|
337
336
|
} }
|
|
338
337
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
|
|
339
338
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
340
|
-
const
|
|
339
|
+
const _r94 = i0.ɵɵgetCurrentView();
|
|
341
340
|
i0.ɵɵelementStart(0, "td", 71);
|
|
342
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
341
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r94); const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r92 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r92.toggleDetail(row_r69)); });
|
|
343
342
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
344
343
|
i0.ɵɵelementEnd();
|
|
345
344
|
} if (rf & 2) {
|
|
346
|
-
const
|
|
347
|
-
const
|
|
348
|
-
const
|
|
345
|
+
const ctx_r95 = i0.ɵɵnextContext();
|
|
346
|
+
const row_r69 = ctx_r95.$implicit;
|
|
347
|
+
const rowIndex_r70 = ctx_r95.index;
|
|
349
348
|
i0.ɵɵnextContext(3);
|
|
350
349
|
const _r11 = i0.ɵɵreference(13);
|
|
351
350
|
i0.ɵɵadvance(1);
|
|
352
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
351
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r69, rowIndex_r70));
|
|
353
352
|
} }
|
|
354
353
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
355
354
|
i0.ɵɵelementContainer(0);
|
|
@@ -359,11 +358,11 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_Templ
|
|
|
359
358
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
360
359
|
i0.ɵɵelementEnd();
|
|
361
360
|
} if (rf & 2) {
|
|
362
|
-
const
|
|
363
|
-
const
|
|
364
|
-
const
|
|
361
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
362
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
363
|
+
const ctx_r98 = i0.ɵɵnextContext(3);
|
|
365
364
|
i0.ɵɵadvance(1);
|
|
366
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
365
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r98.getTemplate(column_r96))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c16, ctx_r98.getCellData(row_r69, column_r96)));
|
|
367
366
|
} }
|
|
368
367
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
369
368
|
i0.ɵɵelementContainer(0);
|
|
@@ -374,22 +373,22 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_Templ
|
|
|
374
373
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
375
374
|
i0.ɵɵelementEnd();
|
|
376
375
|
} if (rf & 2) {
|
|
377
|
-
const
|
|
378
|
-
const
|
|
379
|
-
const
|
|
376
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
377
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
378
|
+
const ctx_r99 = i0.ɵɵnextContext(3);
|
|
380
379
|
i0.ɵɵadvance(1);
|
|
381
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
380
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r99.tableCellTemplate == null ? null : ctx_r99.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c18, row_r69, column_r96));
|
|
382
381
|
} }
|
|
383
382
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
384
383
|
i0.ɵɵelementStart(0, "span");
|
|
385
384
|
i0.ɵɵtext(1);
|
|
386
385
|
i0.ɵɵelementEnd();
|
|
387
386
|
} if (rf & 2) {
|
|
388
|
-
const
|
|
389
|
-
const
|
|
390
|
-
const
|
|
387
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
388
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
389
|
+
const ctx_r100 = i0.ɵɵnextContext(3);
|
|
391
390
|
i0.ɵɵadvance(1);
|
|
392
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
391
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r100.getBooleanLabel(ctx_r100.getCellData(row_r69, column_r96), column_r96), " ");
|
|
393
392
|
} }
|
|
394
393
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
395
394
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -397,11 +396,11 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_5_Templ
|
|
|
397
396
|
i0.ɵɵpipe(2, "currency");
|
|
398
397
|
i0.ɵɵelementEnd();
|
|
399
398
|
} if (rf & 2) {
|
|
400
|
-
const
|
|
401
|
-
const
|
|
402
|
-
const
|
|
399
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
400
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
401
|
+
const ctx_r101 = i0.ɵɵnextContext(3);
|
|
403
402
|
i0.ɵɵadvance(1);
|
|
404
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1,
|
|
403
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r101.getCellData(row_r69, column_r96), column_r96.format, "symbol", "1.2-2"), " ");
|
|
405
404
|
} }
|
|
406
405
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
407
406
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -409,11 +408,11 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_6_Templ
|
|
|
409
408
|
i0.ɵɵpipe(2, "date");
|
|
410
409
|
i0.ɵɵelementEnd();
|
|
411
410
|
} if (rf & 2) {
|
|
412
|
-
const
|
|
413
|
-
const
|
|
414
|
-
const
|
|
411
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
412
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
413
|
+
const ctx_r102 = i0.ɵɵnextContext(3);
|
|
415
414
|
i0.ɵɵadvance(1);
|
|
416
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
415
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r102.getCellData(row_r69, column_r96), column_r96.format || "dd/MM/yyyy"), " ");
|
|
417
416
|
} }
|
|
418
417
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
419
418
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -421,11 +420,11 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_7_Templ
|
|
|
421
420
|
i0.ɵɵpipe(2, "po_time");
|
|
422
421
|
i0.ɵɵelementEnd();
|
|
423
422
|
} if (rf & 2) {
|
|
424
|
-
const
|
|
425
|
-
const
|
|
426
|
-
const
|
|
423
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
424
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
425
|
+
const ctx_r103 = i0.ɵɵnextContext(3);
|
|
427
426
|
i0.ɵɵadvance(1);
|
|
428
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
427
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r103.getCellData(row_r69, column_r96), column_r96.format || "HH:mm:ss.ffffff"), " ");
|
|
429
428
|
} }
|
|
430
429
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
431
430
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -433,81 +432,81 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_8_Templ
|
|
|
433
432
|
i0.ɵɵpipe(2, "date");
|
|
434
433
|
i0.ɵɵelementEnd();
|
|
435
434
|
} if (rf & 2) {
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
const
|
|
435
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
436
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
437
|
+
const ctx_r104 = i0.ɵɵnextContext(3);
|
|
439
438
|
i0.ɵɵadvance(1);
|
|
440
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
439
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r104.getCellData(row_r69, column_r96), column_r96.format || "dd/MM/yyyy HH:mm:ss"), " ");
|
|
441
440
|
} }
|
|
442
441
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
443
442
|
i0.ɵɵelementStart(0, "span");
|
|
444
443
|
i0.ɵɵtext(1);
|
|
445
444
|
i0.ɵɵelementEnd();
|
|
446
445
|
} if (rf & 2) {
|
|
447
|
-
const
|
|
448
|
-
const
|
|
449
|
-
const
|
|
446
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
447
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
448
|
+
const ctx_r105 = i0.ɵɵnextContext(3);
|
|
450
449
|
i0.ɵɵadvance(1);
|
|
451
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
450
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r105.formatNumber(ctx_r105.getCellData(row_r69, column_r96), column_r96.format), " ");
|
|
452
451
|
} }
|
|
453
452
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
|
|
454
|
-
const
|
|
453
|
+
const _r131 = i0.ɵɵgetCurrentView();
|
|
455
454
|
i0.ɵɵelementStart(0, "po-table-column-link", 79);
|
|
456
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
455
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r131); const column_r96 = i0.ɵɵnextContext().$implicit; const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r129 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r129.onClickLink($event, row_r69, column_r96)); });
|
|
457
456
|
i0.ɵɵelementEnd();
|
|
458
457
|
} if (rf & 2) {
|
|
459
|
-
const
|
|
460
|
-
const
|
|
461
|
-
const
|
|
462
|
-
i0.ɵɵproperty("p-action",
|
|
458
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
459
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
460
|
+
const ctx_r106 = i0.ɵɵnextContext(3);
|
|
461
|
+
i0.ɵɵproperty("p-action", column_r96.action)("p-disabled", ctx_r106.checkDisabled(row_r69, column_r96))("p-link", row_r69[column_r96.link])("p-row", row_r69)("p-value", ctx_r106.getCellData(row_r69, column_r96));
|
|
463
462
|
} }
|
|
464
463
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
465
464
|
i0.ɵɵelement(0, "po-table-column-icon", 80);
|
|
466
465
|
} if (rf & 2) {
|
|
467
|
-
const
|
|
468
|
-
const
|
|
469
|
-
const
|
|
470
|
-
i0.ɵɵproperty("p-column",
|
|
466
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
467
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
468
|
+
const ctx_r107 = i0.ɵɵnextContext(3);
|
|
469
|
+
i0.ɵɵproperty("p-column", column_r96)("p-icons", ctx_r107.getColumnIcons(row_r69, column_r96))("p-row", row_r69);
|
|
471
470
|
} }
|
|
472
471
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
473
472
|
i0.ɵɵelementStart(0, "span");
|
|
474
473
|
i0.ɵɵelement(1, "po-table-subtitle-circle", 81);
|
|
475
474
|
i0.ɵɵelementEnd();
|
|
476
475
|
} if (rf & 2) {
|
|
477
|
-
const
|
|
478
|
-
const
|
|
479
|
-
const
|
|
476
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
477
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
478
|
+
const ctx_r108 = i0.ɵɵnextContext(3);
|
|
480
479
|
i0.ɵɵadvance(1);
|
|
481
|
-
i0.ɵɵproperty("p-subtitle",
|
|
480
|
+
i0.ɵɵproperty("p-subtitle", ctx_r108.getSubtitleColumn(row_r69, column_r96));
|
|
482
481
|
} }
|
|
483
482
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
484
483
|
i0.ɵɵelementStart(0, "span");
|
|
485
484
|
i0.ɵɵelement(1, "po-table-column-label", 82);
|
|
486
485
|
i0.ɵɵelementEnd();
|
|
487
486
|
} if (rf & 2) {
|
|
488
|
-
const
|
|
489
|
-
const
|
|
490
|
-
const
|
|
487
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
488
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
489
|
+
const ctx_r109 = i0.ɵɵnextContext(3);
|
|
491
490
|
i0.ɵɵadvance(1);
|
|
492
|
-
i0.ɵɵproperty("p-value",
|
|
491
|
+
i0.ɵɵproperty("p-value", ctx_r109.getColumnLabel(row_r69, column_r96));
|
|
493
492
|
} }
|
|
494
493
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
495
494
|
i0.ɵɵelementStart(0, "span");
|
|
496
495
|
i0.ɵɵtext(1);
|
|
497
496
|
i0.ɵɵelementEnd();
|
|
498
497
|
} if (rf & 2) {
|
|
499
|
-
const
|
|
500
|
-
const
|
|
501
|
-
const
|
|
498
|
+
const column_r96 = i0.ɵɵnextContext().$implicit;
|
|
499
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
500
|
+
const ctx_r110 = i0.ɵɵnextContext(3);
|
|
502
501
|
i0.ɵɵadvance(1);
|
|
503
|
-
i0.ɵɵtextInterpolate(
|
|
502
|
+
i0.ɵɵtextInterpolate(ctx_r110.getCellData(row_r69, column_r96));
|
|
504
503
|
} }
|
|
505
504
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
-
const
|
|
505
|
+
const _r144 = i0.ɵɵgetCurrentView();
|
|
507
506
|
i0.ɵɵelementStart(0, "td", 73);
|
|
508
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
507
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r144); const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r143 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r143.hasSelectableRow() ? ctx_r143.selectRow(row_r69) : "javascript:;"); });
|
|
509
508
|
i0.ɵɵelementStart(1, "div", 74);
|
|
510
|
-
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(
|
|
509
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r144); const column_r96 = restoredCtx.$implicit; const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r146 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r146.tooltipMouseEnter($event, column_r96, row_r69)); })("mouseleave", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r144); const ctx_r148 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r148.tooltipMouseLeave()); });
|
|
511
510
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_Template, 2, 4, "span", 75);
|
|
512
511
|
i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_Template, 2, 5, "span", 75);
|
|
513
512
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_4_Template, 2, 1, "span", 75);
|
|
@@ -523,16 +522,16 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template(rf,
|
|
|
523
522
|
i0.ɵɵtemplate(14, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_14_Template, 2, 1, "span", 78);
|
|
524
523
|
i0.ɵɵelementEnd()();
|
|
525
524
|
} if (rf & 2) {
|
|
526
|
-
const
|
|
527
|
-
const
|
|
528
|
-
const
|
|
529
|
-
i0.ɵɵstyleProp("width",
|
|
530
|
-
i0.ɵɵclassProp("po-table-column",
|
|
531
|
-
i0.ɵɵproperty("ngClass",
|
|
525
|
+
const column_r96 = ctx.$implicit;
|
|
526
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
527
|
+
const ctx_r75 = i0.ɵɵnextContext(3);
|
|
528
|
+
i0.ɵɵstyleProp("width", column_r96.width)("max-width", column_r96.width)("min-width", column_r96.width);
|
|
529
|
+
i0.ɵɵclassProp("po-table-column", column_r96.type !== "icon")("po-table-column-right", column_r96.type === "currency" || column_r96.type === "number")("po-table-column-center", column_r96.type === "subtitle")("po-table-column-icons", column_r96.type === "icon");
|
|
530
|
+
i0.ɵɵproperty("ngClass", ctx_r75.getClassColor(row_r69, column_r96));
|
|
532
531
|
i0.ɵɵadvance(1);
|
|
533
|
-
i0.ɵɵstyleProp("width",
|
|
534
|
-
i0.ɵɵclassProp("po-table-body-ellipsis",
|
|
535
|
-
i0.ɵɵproperty("ngSwitch",
|
|
532
|
+
i0.ɵɵstyleProp("width", ctx_r75.noColumnsHeaderFixed == null ? null : ctx_r75.noColumnsHeaderFixed.nativeElement.parentElement == null ? null : ctx_r75.noColumnsHeaderFixed.nativeElement.parentElement.offsetWidth, "px");
|
|
533
|
+
i0.ɵɵclassProp("po-table-body-ellipsis", ctx_r75.hideTextOverflow);
|
|
534
|
+
i0.ɵɵproperty("ngSwitch", column_r96.type)("p-tooltip", ctx_r75.tooltipText);
|
|
536
535
|
i0.ɵɵadvance(1);
|
|
537
536
|
i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
|
|
538
537
|
i0.ɵɵadvance(1);
|
|
@@ -560,30 +559,30 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template(rf,
|
|
|
560
559
|
} }
|
|
561
560
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
|
|
562
561
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
563
|
-
const
|
|
562
|
+
const _r153 = i0.ɵɵgetCurrentView();
|
|
564
563
|
i0.ɵɵelementStart(0, "td", 71);
|
|
565
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
564
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r153); const row_r69 = i0.ɵɵnextContext().$implicit; const ctx_r151 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r151.toggleDetail(row_r69)); });
|
|
566
565
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
567
566
|
i0.ɵɵelementEnd();
|
|
568
567
|
} if (rf & 2) {
|
|
569
|
-
const
|
|
570
|
-
const
|
|
571
|
-
const
|
|
568
|
+
const ctx_r154 = i0.ɵɵnextContext();
|
|
569
|
+
const row_r69 = ctx_r154.$implicit;
|
|
570
|
+
const rowIndex_r70 = ctx_r154.index;
|
|
572
571
|
i0.ɵɵnextContext(3);
|
|
573
572
|
const _r11 = i0.ɵɵreference(13);
|
|
574
573
|
i0.ɵɵadvance(1);
|
|
575
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
574
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r69, rowIndex_r70));
|
|
576
575
|
} }
|
|
577
576
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_ng_template_0_Template(rf, ctx) { }
|
|
578
577
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
|
|
579
578
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 72);
|
|
580
579
|
} if (rf & 2) {
|
|
581
|
-
const
|
|
582
|
-
const
|
|
583
|
-
const
|
|
580
|
+
const ctx_r156 = i0.ɵɵnextContext();
|
|
581
|
+
const row_r69 = ctx_r156.$implicit;
|
|
582
|
+
const rowIndex_r70 = ctx_r156.index;
|
|
584
583
|
i0.ɵɵnextContext(3);
|
|
585
584
|
const _r23 = i0.ɵɵreference(25);
|
|
586
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
585
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r69, rowIndex_r70));
|
|
587
586
|
} }
|
|
588
587
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
589
588
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -600,27 +599,27 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_Template(rf
|
|
|
600
599
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_ng_template_2_Template, 0, 0, "ng-template", 72);
|
|
601
600
|
i0.ɵɵelementEnd()();
|
|
602
601
|
} if (rf & 2) {
|
|
603
|
-
const
|
|
604
|
-
const
|
|
605
|
-
const
|
|
606
|
-
const
|
|
602
|
+
const ctx_r158 = i0.ɵɵnextContext();
|
|
603
|
+
const row_r69 = ctx_r158.$implicit;
|
|
604
|
+
const rowIndex_r70 = ctx_r158.index;
|
|
605
|
+
const ctx_r80 = i0.ɵɵnextContext(3);
|
|
607
606
|
i0.ɵɵadvance(1);
|
|
608
|
-
i0.ɵɵproperty("colSpan",
|
|
607
|
+
i0.ɵɵproperty("colSpan", ctx_r80.columnCountForMasterDetail);
|
|
609
608
|
i0.ɵɵadvance(1);
|
|
610
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
609
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r80.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c19, row_r69, rowIndex_r70));
|
|
611
610
|
} }
|
|
612
611
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template(rf, ctx) { if (rf & 1) {
|
|
613
|
-
const
|
|
612
|
+
const _r160 = i0.ɵɵgetCurrentView();
|
|
614
613
|
i0.ɵɵelementStart(0, "tr")(1, "td", 86)(2, "po-table-detail", 87);
|
|
615
|
-
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(
|
|
614
|
+
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r160); const ctx_r159 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r159.selectDetailRow($event)); });
|
|
616
615
|
i0.ɵɵelementEnd()()();
|
|
617
616
|
} if (rf & 2) {
|
|
618
|
-
const
|
|
619
|
-
const
|
|
617
|
+
const row_r69 = i0.ɵɵnextContext().$implicit;
|
|
618
|
+
const ctx_r81 = i0.ɵɵnextContext(3);
|
|
620
619
|
i0.ɵɵadvance(1);
|
|
621
|
-
i0.ɵɵproperty("colSpan",
|
|
620
|
+
i0.ɵɵproperty("colSpan", ctx_r81.columnCountForMasterDetail);
|
|
622
621
|
i0.ɵɵadvance(1);
|
|
623
|
-
i0.ɵɵproperty("p-selectable",
|
|
622
|
+
i0.ɵɵproperty("p-selectable", ctx_r81.selectable && !ctx_r81.detailHideSelect)("p-detail", ctx_r81.columnMasterDetail.detail)("p-items", row_r69[ctx_r81.nameColumnDetail]);
|
|
624
623
|
} }
|
|
625
624
|
function PoTableComponent_ng_template_6_ng_container_4_tbody_1_Template(rf, ctx) { if (rf & 1) {
|
|
626
625
|
i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 67);
|
|
@@ -638,47 +637,47 @@ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_Template(rf, ctx)
|
|
|
638
637
|
i0.ɵɵtemplate(12, PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template, 3, 4, "tr", 23);
|
|
639
638
|
i0.ɵɵelementEnd();
|
|
640
639
|
} if (rf & 2) {
|
|
641
|
-
const
|
|
642
|
-
const
|
|
643
|
-
const
|
|
640
|
+
const row_r69 = ctx.$implicit;
|
|
641
|
+
const rowIndex_r70 = ctx.index;
|
|
642
|
+
const ctx_r68 = i0.ɵɵnextContext(3);
|
|
644
643
|
i0.ɵɵadvance(1);
|
|
645
|
-
i0.ɵɵclassProp("po-table-row-active",
|
|
644
|
+
i0.ɵɵclassProp("po-table-row-active", row_r69.$selected || row_r69.$selected === null && ctx_r68.selectable);
|
|
646
645
|
i0.ɵɵadvance(1);
|
|
647
|
-
i0.ɵɵproperty("ngIf",
|
|
646
|
+
i0.ɵɵproperty("ngIf", ctx_r68.selectable);
|
|
648
647
|
i0.ɵɵadvance(1);
|
|
649
|
-
i0.ɵɵproperty("ngIf",
|
|
648
|
+
i0.ɵɵproperty("ngIf", ctx_r68.columnMasterDetail && !ctx_r68.hideDetail && !ctx_r68.hasRowTemplate);
|
|
650
649
|
i0.ɵɵadvance(1);
|
|
651
|
-
i0.ɵɵproperty("ngIf", !
|
|
650
|
+
i0.ɵɵproperty("ngIf", !ctx_r68.actionRight && (ctx_r68.visibleActions.length > 1 || ctx_r68.isSingleAction));
|
|
652
651
|
i0.ɵɵadvance(1);
|
|
653
|
-
i0.ɵɵproperty("ngIf",
|
|
652
|
+
i0.ɵɵproperty("ngIf", ctx_r68.hasRowTemplate && !ctx_r68.hasRowTemplateWithArrowDirectionRight);
|
|
654
653
|
i0.ɵɵadvance(1);
|
|
655
|
-
i0.ɵɵproperty("ngForOf",
|
|
654
|
+
i0.ɵɵproperty("ngForOf", ctx_r68.mainColumns)("ngForTrackBy", ctx_r68.trackBy);
|
|
656
655
|
i0.ɵɵadvance(1);
|
|
657
|
-
i0.ɵɵproperty("ngIf",
|
|
656
|
+
i0.ɵɵproperty("ngIf", ctx_r68.hasRowTemplateWithArrowDirectionRight);
|
|
658
657
|
i0.ɵɵadvance(1);
|
|
659
|
-
i0.ɵɵproperty("ngIf",
|
|
658
|
+
i0.ɵɵproperty("ngIf", ctx_r68.actionRight);
|
|
660
659
|
i0.ɵɵadvance(1);
|
|
661
|
-
i0.ɵɵproperty("ngIf", !
|
|
660
|
+
i0.ɵɵproperty("ngIf", !ctx_r68.actionRight && (ctx_r68.visibleActions.length > 1 || ctx_r68.isSingleAction) && !ctx_r68.hideColumnsManager);
|
|
662
661
|
i0.ɵɵadvance(1);
|
|
663
|
-
i0.ɵɵproperty("ngIf", !
|
|
662
|
+
i0.ɵɵproperty("ngIf", !ctx_r68.hasVisibleActions && !ctx_r68.hideColumnsManager && !ctx_r68.hasRowTemplateWithArrowDirectionRight);
|
|
664
663
|
i0.ɵɵadvance(1);
|
|
665
|
-
i0.ɵɵproperty("ngIf",
|
|
664
|
+
i0.ɵɵproperty("ngIf", ctx_r68.hasMainColumns && ctx_r68.hasRowTemplate && row_r69.$showDetail && ctx_r68.isShowRowTemplate(row_r69, rowIndex_r70));
|
|
666
665
|
i0.ɵɵadvance(1);
|
|
667
|
-
i0.ɵɵproperty("ngIf",
|
|
666
|
+
i0.ɵɵproperty("ngIf", ctx_r68.hasMainColumns && ctx_r68.isShowMasterDetail(row_r69));
|
|
668
667
|
} }
|
|
669
668
|
function PoTableComponent_ng_template_6_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
670
669
|
i0.ɵɵelementContainerStart(0);
|
|
671
670
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_Template, 13, 14, "tbody", 66);
|
|
672
671
|
i0.ɵɵelementContainerEnd();
|
|
673
672
|
} if (rf & 2) {
|
|
674
|
-
const
|
|
673
|
+
const ctx_r67 = i0.ɵɵnextContext(2);
|
|
675
674
|
i0.ɵɵadvance(1);
|
|
676
|
-
i0.ɵɵproperty("cdkVirtualForOf",
|
|
675
|
+
i0.ɵɵproperty("cdkVirtualForOf", ctx_r67.items)("cdkVirtualForTrackBy", ctx_r67.trackBy);
|
|
677
676
|
} }
|
|
678
677
|
function PoTableComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
679
|
-
const
|
|
678
|
+
const _r163 = i0.ɵɵgetCurrentView();
|
|
680
679
|
i0.ɵɵelementStart(0, "cdk-virtual-scroll-viewport", 60, 61);
|
|
681
|
-
i0.ɵɵlistener("scroll", function PoTableComponent_ng_template_6_Template_cdk_virtual_scroll_viewport_scroll_0_listener() { i0.ɵɵrestoreView(
|
|
680
|
+
i0.ɵɵlistener("scroll", function PoTableComponent_ng_template_6_Template_cdk_virtual_scroll_viewport_scroll_0_listener() { i0.ɵɵrestoreView(_r163); const ctx_r162 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r162.syncronizeHorizontalScroll()); });
|
|
682
681
|
i0.ɵɵelementStart(2, "table", 39);
|
|
683
682
|
i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_tbody_3_Template, 5, 2, "tbody", 62);
|
|
684
683
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_4_Template, 2, 2, "ng-container", 23);
|
|
@@ -695,24 +694,24 @@ function PoTableComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
695
694
|
i0.ɵɵproperty("ngIf", ctx_r7.hasMainColumns);
|
|
696
695
|
} }
|
|
697
696
|
function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
|
|
698
|
-
const
|
|
697
|
+
const _r176 = i0.ɵɵgetCurrentView();
|
|
699
698
|
i0.ɵɵelementStart(0, "po-checkbox", 49);
|
|
700
|
-
i0.ɵɵlistener("
|
|
699
|
+
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r176); const ctx_r175 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r175.selectAllRows()); });
|
|
701
700
|
i0.ɵɵelementEnd();
|
|
702
701
|
} if (rf & 2) {
|
|
703
|
-
const
|
|
704
|
-
i0.ɵɵproperty("
|
|
702
|
+
const ctx_r174 = i0.ɵɵnextContext(3);
|
|
703
|
+
i0.ɵɵproperty("p-checkboxValue", ctx_r174.selectAll === null ? "mixed" : ctx_r174.selectAll);
|
|
705
704
|
} }
|
|
706
705
|
function PoTableComponent_ng_template_8_th_3_Template(rf, ctx) { if (rf & 1) {
|
|
707
706
|
i0.ɵɵelementStart(0, "th", 47)(1, "div");
|
|
708
707
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template, 1, 1, "po-checkbox", 48);
|
|
709
708
|
i0.ɵɵelementEnd()();
|
|
710
709
|
} if (rf & 2) {
|
|
711
|
-
const
|
|
710
|
+
const ctx_r164 = i0.ɵɵnextContext(2);
|
|
712
711
|
i0.ɵɵadvance(1);
|
|
713
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner",
|
|
712
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r164.height);
|
|
714
713
|
i0.ɵɵadvance(1);
|
|
715
|
-
i0.ɵɵproperty("ngIf", !
|
|
714
|
+
i0.ɵɵproperty("ngIf", !ctx_r164.hideSelectAll);
|
|
716
715
|
} }
|
|
717
716
|
function PoTableComponent_ng_template_8_th_4_Template(rf, ctx) { if (rf & 1) {
|
|
718
717
|
i0.ɵɵelement(0, "th", 50);
|
|
@@ -720,8 +719,8 @@ function PoTableComponent_ng_template_8_th_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
720
719
|
function PoTableComponent_ng_template_8_th_5_Template(rf, ctx) { if (rf & 1) {
|
|
721
720
|
i0.ɵɵelement(0, "th", null, 88);
|
|
722
721
|
} if (rf & 2) {
|
|
723
|
-
const
|
|
724
|
-
i0.ɵɵclassProp("po-table-header-master-detail", !
|
|
722
|
+
const ctx_r166 = i0.ɵɵnextContext(2);
|
|
723
|
+
i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r166.isSingleAction)("po-table-header-single-action", ctx_r166.isSingleAction);
|
|
725
724
|
} }
|
|
726
725
|
function PoTableComponent_ng_template_8_th_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
727
726
|
i0.ɵɵelementContainer(0);
|
|
@@ -731,32 +730,32 @@ function PoTableComponent_ng_template_8_th_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
731
730
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_6_ng_container_2_Template, 1, 0, "ng-container", 32);
|
|
732
731
|
i0.ɵɵelementEnd();
|
|
733
732
|
} if (rf & 2) {
|
|
734
|
-
const
|
|
733
|
+
const ctx_r167 = i0.ɵɵnextContext(2);
|
|
735
734
|
const _r19 = i0.ɵɵreference(21);
|
|
736
735
|
const _r21 = i0.ɵɵreference(23);
|
|
737
736
|
i0.ɵɵadvance(2);
|
|
738
|
-
i0.ɵɵproperty("ngIf",
|
|
737
|
+
i0.ɵɵproperty("ngIf", ctx_r167.height)("ngIfThen", _r19)("ngIfElse", _r21);
|
|
739
738
|
} }
|
|
740
739
|
function PoTableComponent_ng_template_8_th_7_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
741
740
|
i0.ɵɵelementContainer(0);
|
|
742
741
|
} }
|
|
743
742
|
function PoTableComponent_ng_template_8_th_7_Template(rf, ctx) { if (rf & 1) {
|
|
744
|
-
const
|
|
743
|
+
const _r184 = i0.ɵɵgetCurrentView();
|
|
745
744
|
i0.ɵɵelementStart(0, "th", 54);
|
|
746
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
745
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r184); const column_r180 = restoredCtx.$implicit; const ctx_r183 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r183.sortColumn(column_r180)); });
|
|
747
746
|
i0.ɵɵelementStart(1, "div", 55);
|
|
748
747
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_7_ng_container_2_Template, 1, 0, "ng-container", 56);
|
|
749
748
|
i0.ɵɵelementEnd()();
|
|
750
749
|
} if (rf & 2) {
|
|
751
|
-
const
|
|
752
|
-
const
|
|
750
|
+
const column_r180 = ctx.$implicit;
|
|
751
|
+
const ctx_r168 = i0.ɵɵnextContext(2);
|
|
753
752
|
const _r17 = i0.ɵɵreference(19);
|
|
754
|
-
i0.ɵɵstyleProp("width",
|
|
755
|
-
i0.ɵɵclassProp("po-clickable",
|
|
753
|
+
i0.ɵɵstyleProp("width", column_r180.width)("max-width", column_r180.width)("min-width", column_r180.width);
|
|
754
|
+
i0.ɵɵclassProp("po-clickable", ctx_r168.sort && column_r180.sortable !== false || ctx_r168.hasService)("po-table-header-subtitle", column_r180.type === "subtitle");
|
|
756
755
|
i0.ɵɵadvance(1);
|
|
757
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner",
|
|
756
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r168.height)("po-table-header-flex-right", column_r180.type === "currency" || column_r180.type === "number")("po-table-header-flex-center", column_r180.type === "subtitle");
|
|
758
757
|
i0.ɵɵadvance(1);
|
|
759
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c16,
|
|
758
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c16, column_r180));
|
|
760
759
|
} }
|
|
761
760
|
function PoTableComponent_ng_template_8_th_8_Template(rf, ctx) { if (rf & 1) {
|
|
762
761
|
i0.ɵɵelement(0, "th", 50);
|
|
@@ -764,35 +763,35 @@ function PoTableComponent_ng_template_8_th_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
764
763
|
function PoTableComponent_ng_template_8_th_9_Template(rf, ctx) { if (rf & 1) {
|
|
765
764
|
i0.ɵɵelement(0, "th");
|
|
766
765
|
} if (rf & 2) {
|
|
767
|
-
const
|
|
768
|
-
i0.ɵɵclassProp("po-table-header-single-action",
|
|
766
|
+
const ctx_r170 = i0.ɵɵnextContext(2);
|
|
767
|
+
i0.ɵɵclassProp("po-table-header-single-action", ctx_r170.isSingleAction)("po-table-header-actions", !ctx_r170.isSingleAction);
|
|
769
768
|
} }
|
|
770
769
|
function PoTableComponent_ng_template_8_th_10_Template(rf, ctx) { if (rf & 1) {
|
|
771
|
-
const
|
|
770
|
+
const _r188 = i0.ɵɵgetCurrentView();
|
|
772
771
|
i0.ɵɵelementStart(0, "th", null, 90)(2, "div")(3, "button", 58, 91);
|
|
773
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
772
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r188); const ctx_r187 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r187.onOpenColumnManager()); });
|
|
774
773
|
i0.ɵɵelementEnd()()();
|
|
775
774
|
} if (rf & 2) {
|
|
776
|
-
const
|
|
777
|
-
const
|
|
778
|
-
i0.ɵɵclassProp("po-table-header-column-manager", !
|
|
775
|
+
const _r185 = i0.ɵɵreference(1);
|
|
776
|
+
const ctx_r171 = i0.ɵɵnextContext(2);
|
|
777
|
+
i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r171.isSingleAction || !ctx_r171.actionRight)("po-table-header-column-manager-border", !ctx_r171.height && ctx_r171.container)("po-table-header-single-action", ctx_r171.isSingleAction && ctx_r171.actionRight);
|
|
779
778
|
i0.ɵɵadvance(2);
|
|
780
|
-
i0.ɵɵstyleProp("width",
|
|
781
|
-
i0.ɵɵclassProp("po-table-header-column-manager-border",
|
|
779
|
+
i0.ɵɵstyleProp("width", ctx_r171.height && ctx_r171.visibleActions.length ? _r185.offsetWidth : undefined, "px");
|
|
780
|
+
i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r171.height && ctx_r171.container)("po-table-header-column-manager-fixed-inner", ctx_r171.height);
|
|
782
781
|
i0.ɵɵadvance(1);
|
|
783
|
-
i0.ɵɵproperty("p-tooltip",
|
|
784
|
-
i0.ɵɵattribute("aria-label",
|
|
782
|
+
i0.ɵɵproperty("p-tooltip", ctx_r171.literals.columnsManager);
|
|
783
|
+
i0.ɵɵattribute("aria-label", ctx_r171.literals.columnsManager);
|
|
785
784
|
} }
|
|
786
785
|
function PoTableComponent_ng_template_8_tbody_11_Template(rf, ctx) { if (rf & 1) {
|
|
787
786
|
i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 64)(2, "td", 65)(3, "span");
|
|
788
787
|
i0.ɵɵtext(4);
|
|
789
788
|
i0.ɵɵelementEnd()()()();
|
|
790
789
|
} if (rf & 2) {
|
|
791
|
-
const
|
|
790
|
+
const ctx_r172 = i0.ɵɵnextContext(2);
|
|
792
791
|
i0.ɵɵadvance(2);
|
|
793
|
-
i0.ɵɵproperty("colSpan",
|
|
792
|
+
i0.ɵɵproperty("colSpan", ctx_r172.columnCount);
|
|
794
793
|
i0.ɵɵadvance(2);
|
|
795
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
794
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r172.literals.noData, " ");
|
|
796
795
|
} }
|
|
797
796
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
798
797
|
i0.ɵɵelementContainer(0);
|
|
@@ -802,55 +801,55 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_Template(rf
|
|
|
802
801
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
803
802
|
i0.ɵɵelementEnd();
|
|
804
803
|
} if (rf & 2) {
|
|
805
|
-
const
|
|
806
|
-
const
|
|
804
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
805
|
+
const ctx_r192 = i0.ɵɵnextContext(3);
|
|
807
806
|
const _r13 = i0.ɵɵreference(15);
|
|
808
807
|
const _r15 = i0.ɵɵreference(17);
|
|
809
808
|
i0.ɵɵadvance(1);
|
|
810
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
809
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r192.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c16, row_r190));
|
|
811
810
|
} }
|
|
812
811
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
|
|
813
812
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
814
|
-
const
|
|
813
|
+
const _r208 = i0.ɵɵgetCurrentView();
|
|
815
814
|
i0.ɵɵelementStart(0, "td", 71);
|
|
816
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
815
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r208); const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r206 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r206.toggleDetail(row_r190)); });
|
|
817
816
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
818
817
|
i0.ɵɵelementEnd();
|
|
819
818
|
} if (rf & 2) {
|
|
820
|
-
const
|
|
821
|
-
const
|
|
822
|
-
const
|
|
819
|
+
const ctx_r209 = i0.ɵɵnextContext();
|
|
820
|
+
const row_r190 = ctx_r209.$implicit;
|
|
821
|
+
const rowIndex_r191 = ctx_r209.index;
|
|
823
822
|
i0.ɵɵnextContext(3);
|
|
824
823
|
const _r11 = i0.ɵɵreference(13);
|
|
825
824
|
i0.ɵɵadvance(1);
|
|
826
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
825
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r190, rowIndex_r191));
|
|
827
826
|
} }
|
|
828
827
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_ng_template_0_Template(rf, ctx) { }
|
|
829
828
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
|
|
830
829
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 72);
|
|
831
830
|
} if (rf & 2) {
|
|
832
|
-
const
|
|
833
|
-
const
|
|
834
|
-
const
|
|
831
|
+
const ctx_r211 = i0.ɵɵnextContext();
|
|
832
|
+
const row_r190 = ctx_r211.$implicit;
|
|
833
|
+
const rowIndex_r191 = ctx_r211.index;
|
|
835
834
|
i0.ɵɵnextContext(3);
|
|
836
835
|
const _r23 = i0.ɵɵreference(25);
|
|
837
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
836
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r190, rowIndex_r191));
|
|
838
837
|
} }
|
|
839
838
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
|
|
840
839
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
-
const
|
|
840
|
+
const _r215 = i0.ɵɵgetCurrentView();
|
|
842
841
|
i0.ɵɵelementStart(0, "td", 71);
|
|
843
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
842
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r215); const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r213 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r213.toggleDetail(row_r190)); });
|
|
844
843
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
845
844
|
i0.ɵɵelementEnd();
|
|
846
845
|
} if (rf & 2) {
|
|
847
|
-
const
|
|
848
|
-
const
|
|
849
|
-
const
|
|
846
|
+
const ctx_r216 = i0.ɵɵnextContext();
|
|
847
|
+
const row_r190 = ctx_r216.$implicit;
|
|
848
|
+
const rowIndex_r191 = ctx_r216.index;
|
|
850
849
|
i0.ɵɵnextContext(3);
|
|
851
850
|
const _r11 = i0.ɵɵreference(13);
|
|
852
851
|
i0.ɵɵadvance(1);
|
|
853
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
852
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r190, rowIndex_r191));
|
|
854
853
|
} }
|
|
855
854
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
856
855
|
i0.ɵɵelementContainer(0);
|
|
@@ -860,11 +859,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_Temp
|
|
|
860
859
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
861
860
|
i0.ɵɵelementEnd();
|
|
862
861
|
} if (rf & 2) {
|
|
863
|
-
const
|
|
864
|
-
const
|
|
865
|
-
const
|
|
862
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
863
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
864
|
+
const ctx_r219 = i0.ɵɵnextContext(3);
|
|
866
865
|
i0.ɵɵadvance(1);
|
|
867
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
866
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r219.getTemplate(column_r217))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c16, ctx_r219.getCellData(row_r190, column_r217)));
|
|
868
867
|
} }
|
|
869
868
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
870
869
|
i0.ɵɵelementContainer(0);
|
|
@@ -874,22 +873,22 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_Temp
|
|
|
874
873
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 56);
|
|
875
874
|
i0.ɵɵelementEnd();
|
|
876
875
|
} if (rf & 2) {
|
|
877
|
-
const
|
|
878
|
-
const
|
|
879
|
-
const
|
|
876
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
877
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
878
|
+
const ctx_r220 = i0.ɵɵnextContext(3);
|
|
880
879
|
i0.ɵɵadvance(1);
|
|
881
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
880
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r220.tableCellTemplate == null ? null : ctx_r220.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c18, row_r190, column_r217));
|
|
882
881
|
} }
|
|
883
882
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
884
883
|
i0.ɵɵelementStart(0, "span");
|
|
885
884
|
i0.ɵɵtext(1);
|
|
886
885
|
i0.ɵɵelementEnd();
|
|
887
886
|
} if (rf & 2) {
|
|
888
|
-
const
|
|
889
|
-
const
|
|
890
|
-
const
|
|
887
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
888
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
889
|
+
const ctx_r221 = i0.ɵɵnextContext(3);
|
|
891
890
|
i0.ɵɵadvance(1);
|
|
892
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
891
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r221.getBooleanLabel(ctx_r221.getCellData(row_r190, column_r217), column_r217), " ");
|
|
893
892
|
} }
|
|
894
893
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
895
894
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -897,11 +896,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_5_Temp
|
|
|
897
896
|
i0.ɵɵpipe(2, "currency");
|
|
898
897
|
i0.ɵɵelementEnd();
|
|
899
898
|
} if (rf & 2) {
|
|
900
|
-
const
|
|
901
|
-
const
|
|
902
|
-
const
|
|
899
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
900
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
901
|
+
const ctx_r222 = i0.ɵɵnextContext(3);
|
|
903
902
|
i0.ɵɵadvance(1);
|
|
904
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1,
|
|
903
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r222.getCellData(row_r190, column_r217), column_r217.format, "symbol", "1.2-2"), " ");
|
|
905
904
|
} }
|
|
906
905
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
907
906
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -909,11 +908,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_6_Temp
|
|
|
909
908
|
i0.ɵɵpipe(2, "date");
|
|
910
909
|
i0.ɵɵelementEnd();
|
|
911
910
|
} if (rf & 2) {
|
|
912
|
-
const
|
|
913
|
-
const
|
|
914
|
-
const
|
|
911
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
912
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
913
|
+
const ctx_r223 = i0.ɵɵnextContext(3);
|
|
915
914
|
i0.ɵɵadvance(1);
|
|
916
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
915
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r223.getCellData(row_r190, column_r217), column_r217.format || "dd/MM/yyyy"), " ");
|
|
917
916
|
} }
|
|
918
917
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
919
918
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -921,11 +920,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_7_Temp
|
|
|
921
920
|
i0.ɵɵpipe(2, "po_time");
|
|
922
921
|
i0.ɵɵelementEnd();
|
|
923
922
|
} if (rf & 2) {
|
|
924
|
-
const
|
|
925
|
-
const
|
|
926
|
-
const
|
|
923
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
924
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
925
|
+
const ctx_r224 = i0.ɵɵnextContext(3);
|
|
927
926
|
i0.ɵɵadvance(1);
|
|
928
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
927
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r224.getCellData(row_r190, column_r217), column_r217.format || "HH:mm:ss.ffffff"), " ");
|
|
929
928
|
} }
|
|
930
929
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
931
930
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -933,81 +932,81 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_8_Temp
|
|
|
933
932
|
i0.ɵɵpipe(2, "date");
|
|
934
933
|
i0.ɵɵelementEnd();
|
|
935
934
|
} if (rf & 2) {
|
|
936
|
-
const
|
|
937
|
-
const
|
|
938
|
-
const
|
|
935
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
936
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
937
|
+
const ctx_r225 = i0.ɵɵnextContext(3);
|
|
939
938
|
i0.ɵɵadvance(1);
|
|
940
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
939
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r225.getCellData(row_r190, column_r217), column_r217.format || "dd/MM/yyyy HH:mm:ss"), " ");
|
|
941
940
|
} }
|
|
942
941
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
943
942
|
i0.ɵɵelementStart(0, "span");
|
|
944
943
|
i0.ɵɵtext(1);
|
|
945
944
|
i0.ɵɵelementEnd();
|
|
946
945
|
} if (rf & 2) {
|
|
947
|
-
const
|
|
948
|
-
const
|
|
949
|
-
const
|
|
946
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
947
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
948
|
+
const ctx_r226 = i0.ɵɵnextContext(3);
|
|
950
949
|
i0.ɵɵadvance(1);
|
|
951
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
950
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r226.formatNumber(ctx_r226.getCellData(row_r190, column_r217), column_r217.format), " ");
|
|
952
951
|
} }
|
|
953
952
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
|
|
954
|
-
const
|
|
953
|
+
const _r252 = i0.ɵɵgetCurrentView();
|
|
955
954
|
i0.ɵɵelementStart(0, "po-table-column-link", 79);
|
|
956
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
955
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r252); const column_r217 = i0.ɵɵnextContext().$implicit; const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r250 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r250.onClickLink($event, row_r190, column_r217)); });
|
|
957
956
|
i0.ɵɵelementEnd();
|
|
958
957
|
} if (rf & 2) {
|
|
959
|
-
const
|
|
960
|
-
const
|
|
961
|
-
const
|
|
962
|
-
i0.ɵɵproperty("p-action",
|
|
958
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
959
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
960
|
+
const ctx_r227 = i0.ɵɵnextContext(3);
|
|
961
|
+
i0.ɵɵproperty("p-action", column_r217.action)("p-disabled", ctx_r227.checkDisabled(row_r190, column_r217))("p-link", row_r190[column_r217.link])("p-row", row_r190)("p-value", ctx_r227.getCellData(row_r190, column_r217));
|
|
963
962
|
} }
|
|
964
963
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
965
964
|
i0.ɵɵelement(0, "po-table-column-icon", 80);
|
|
966
965
|
} if (rf & 2) {
|
|
967
|
-
const
|
|
968
|
-
const
|
|
969
|
-
const
|
|
970
|
-
i0.ɵɵproperty("p-column",
|
|
966
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
967
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
968
|
+
const ctx_r228 = i0.ɵɵnextContext(3);
|
|
969
|
+
i0.ɵɵproperty("p-column", column_r217)("p-icons", ctx_r228.getColumnIcons(row_r190, column_r217))("p-row", row_r190);
|
|
971
970
|
} }
|
|
972
971
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
973
972
|
i0.ɵɵelementStart(0, "span");
|
|
974
973
|
i0.ɵɵelement(1, "po-table-subtitle-circle", 81);
|
|
975
974
|
i0.ɵɵelementEnd();
|
|
976
975
|
} if (rf & 2) {
|
|
977
|
-
const
|
|
978
|
-
const
|
|
979
|
-
const
|
|
976
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
977
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
978
|
+
const ctx_r229 = i0.ɵɵnextContext(3);
|
|
980
979
|
i0.ɵɵadvance(1);
|
|
981
|
-
i0.ɵɵproperty("p-subtitle",
|
|
980
|
+
i0.ɵɵproperty("p-subtitle", ctx_r229.getSubtitleColumn(row_r190, column_r217));
|
|
982
981
|
} }
|
|
983
982
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
984
983
|
i0.ɵɵelementStart(0, "span");
|
|
985
984
|
i0.ɵɵelement(1, "po-table-column-label", 82);
|
|
986
985
|
i0.ɵɵelementEnd();
|
|
987
986
|
} if (rf & 2) {
|
|
988
|
-
const
|
|
989
|
-
const
|
|
990
|
-
const
|
|
987
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
988
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
989
|
+
const ctx_r230 = i0.ɵɵnextContext(3);
|
|
991
990
|
i0.ɵɵadvance(1);
|
|
992
|
-
i0.ɵɵproperty("p-value",
|
|
991
|
+
i0.ɵɵproperty("p-value", ctx_r230.getColumnLabel(row_r190, column_r217));
|
|
993
992
|
} }
|
|
994
993
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
995
994
|
i0.ɵɵelementStart(0, "span");
|
|
996
995
|
i0.ɵɵtext(1);
|
|
997
996
|
i0.ɵɵelementEnd();
|
|
998
997
|
} if (rf & 2) {
|
|
999
|
-
const
|
|
1000
|
-
const
|
|
1001
|
-
const
|
|
998
|
+
const column_r217 = i0.ɵɵnextContext().$implicit;
|
|
999
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
1000
|
+
const ctx_r231 = i0.ɵɵnextContext(3);
|
|
1002
1001
|
i0.ɵɵadvance(1);
|
|
1003
|
-
i0.ɵɵtextInterpolate(
|
|
1002
|
+
i0.ɵɵtextInterpolate(ctx_r231.getCellData(row_r190, column_r217));
|
|
1004
1003
|
} }
|
|
1005
1004
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
1006
|
-
const
|
|
1005
|
+
const _r265 = i0.ɵɵgetCurrentView();
|
|
1007
1006
|
i0.ɵɵelementStart(0, "td", 73);
|
|
1008
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
1007
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r265); const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r264 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r264.hasSelectableRow() ? ctx_r264.selectRow(row_r190) : "javascript:;"); });
|
|
1009
1008
|
i0.ɵɵelementStart(1, "div", 74);
|
|
1010
|
-
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(
|
|
1009
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r265); const column_r217 = restoredCtx.$implicit; const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r267 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r267.tooltipMouseEnter($event, column_r217, row_r190)); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r265); const ctx_r269 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r269.tooltipMouseLeave()); });
|
|
1011
1010
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_Template, 2, 4, "span", 75);
|
|
1012
1011
|
i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_Template, 2, 5, "span", 75);
|
|
1013
1012
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_4_Template, 2, 1, "span", 75);
|
|
@@ -1023,15 +1022,15 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf
|
|
|
1023
1022
|
i0.ɵɵtemplate(14, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_14_Template, 2, 1, "span", 78);
|
|
1024
1023
|
i0.ɵɵelementEnd()();
|
|
1025
1024
|
} if (rf & 2) {
|
|
1026
|
-
const
|
|
1027
|
-
const
|
|
1028
|
-
const
|
|
1029
|
-
i0.ɵɵstyleProp("width",
|
|
1030
|
-
i0.ɵɵclassProp("po-table-column",
|
|
1031
|
-
i0.ɵɵproperty("ngClass",
|
|
1025
|
+
const column_r217 = ctx.$implicit;
|
|
1026
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
1027
|
+
const ctx_r196 = i0.ɵɵnextContext(3);
|
|
1028
|
+
i0.ɵɵstyleProp("width", column_r217.width)("max-width", column_r217.width)("min-width", column_r217.width);
|
|
1029
|
+
i0.ɵɵclassProp("po-table-column", column_r217.type !== "icon")("po-table-column-right", column_r217.type === "currency" || column_r217.type === "number")("po-table-column-center", column_r217.type === "subtitle")("po-table-column-icons", column_r217.type === "icon");
|
|
1030
|
+
i0.ɵɵproperty("ngClass", ctx_r196.getClassColor(row_r190, column_r217));
|
|
1032
1031
|
i0.ɵɵadvance(1);
|
|
1033
|
-
i0.ɵɵclassProp("po-table-body-ellipsis",
|
|
1034
|
-
i0.ɵɵproperty("ngSwitch",
|
|
1032
|
+
i0.ɵɵclassProp("po-table-body-ellipsis", ctx_r196.hideTextOverflow);
|
|
1033
|
+
i0.ɵɵproperty("ngSwitch", column_r217.type)("p-tooltip", ctx_r196.tooltipText);
|
|
1035
1034
|
i0.ɵɵadvance(1);
|
|
1036
1035
|
i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
|
|
1037
1036
|
i0.ɵɵadvance(1);
|
|
@@ -1059,30 +1058,30 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf
|
|
|
1059
1058
|
} }
|
|
1060
1059
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
|
|
1061
1060
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
1062
|
-
const
|
|
1061
|
+
const _r274 = i0.ɵɵgetCurrentView();
|
|
1063
1062
|
i0.ɵɵelementStart(0, "td", 71);
|
|
1064
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
1063
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r274); const row_r190 = i0.ɵɵnextContext().$implicit; const ctx_r272 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r272.toggleDetail(row_r190)); });
|
|
1065
1064
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 72);
|
|
1066
1065
|
i0.ɵɵelementEnd();
|
|
1067
1066
|
} if (rf & 2) {
|
|
1068
|
-
const
|
|
1069
|
-
const
|
|
1070
|
-
const
|
|
1067
|
+
const ctx_r275 = i0.ɵɵnextContext();
|
|
1068
|
+
const row_r190 = ctx_r275.$implicit;
|
|
1069
|
+
const rowIndex_r191 = ctx_r275.index;
|
|
1071
1070
|
i0.ɵɵnextContext(3);
|
|
1072
1071
|
const _r11 = i0.ɵɵreference(13);
|
|
1073
1072
|
i0.ɵɵadvance(1);
|
|
1074
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
1073
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r190, rowIndex_r191));
|
|
1075
1074
|
} }
|
|
1076
1075
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_ng_template_0_Template(rf, ctx) { }
|
|
1077
1076
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
|
|
1078
1077
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 72);
|
|
1079
1078
|
} if (rf & 2) {
|
|
1080
|
-
const
|
|
1081
|
-
const
|
|
1082
|
-
const
|
|
1079
|
+
const ctx_r277 = i0.ɵɵnextContext();
|
|
1080
|
+
const row_r190 = ctx_r277.$implicit;
|
|
1081
|
+
const rowIndex_r191 = ctx_r277.index;
|
|
1083
1082
|
i0.ɵɵnextContext(3);
|
|
1084
1083
|
const _r23 = i0.ɵɵreference(25);
|
|
1085
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17,
|
|
1084
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c17, row_r190, rowIndex_r191));
|
|
1086
1085
|
} }
|
|
1087
1086
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
1088
1087
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -1098,27 +1097,27 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_11_Template(r
|
|
|
1098
1097
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_11_ng_template_2_Template, 0, 0, "ng-template", 72);
|
|
1099
1098
|
i0.ɵɵelementEnd()();
|
|
1100
1099
|
} if (rf & 2) {
|
|
1101
|
-
const
|
|
1102
|
-
const
|
|
1103
|
-
const
|
|
1104
|
-
const
|
|
1100
|
+
const ctx_r279 = i0.ɵɵnextContext();
|
|
1101
|
+
const row_r190 = ctx_r279.$implicit;
|
|
1102
|
+
const rowIndex_r191 = ctx_r279.index;
|
|
1103
|
+
const ctx_r201 = i0.ɵɵnextContext(3);
|
|
1105
1104
|
i0.ɵɵadvance(1);
|
|
1106
|
-
i0.ɵɵproperty("colSpan",
|
|
1105
|
+
i0.ɵɵproperty("colSpan", ctx_r201.columnCountForMasterDetail);
|
|
1107
1106
|
i0.ɵɵadvance(1);
|
|
1108
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
1107
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r201.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c19, row_r190, rowIndex_r191));
|
|
1109
1108
|
} }
|
|
1110
1109
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template(rf, ctx) { if (rf & 1) {
|
|
1111
|
-
const
|
|
1110
|
+
const _r281 = i0.ɵɵgetCurrentView();
|
|
1112
1111
|
i0.ɵɵelementStart(0, "tr")(1, "td", 86)(2, "po-table-detail", 87);
|
|
1113
|
-
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(
|
|
1112
|
+
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r281); const ctx_r280 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r280.selectDetailRow($event)); });
|
|
1114
1113
|
i0.ɵɵelementEnd()()();
|
|
1115
1114
|
} if (rf & 2) {
|
|
1116
|
-
const
|
|
1117
|
-
const
|
|
1115
|
+
const row_r190 = i0.ɵɵnextContext().$implicit;
|
|
1116
|
+
const ctx_r202 = i0.ɵɵnextContext(3);
|
|
1118
1117
|
i0.ɵɵadvance(1);
|
|
1119
|
-
i0.ɵɵproperty("colSpan",
|
|
1118
|
+
i0.ɵɵproperty("colSpan", ctx_r202.columnCountForMasterDetail);
|
|
1120
1119
|
i0.ɵɵadvance(1);
|
|
1121
|
-
i0.ɵɵproperty("p-selectable",
|
|
1120
|
+
i0.ɵɵproperty("p-selectable", ctx_r202.selectable && !ctx_r202.detailHideSelect)("p-detail", ctx_r202.columnMasterDetail.detail)("p-items", row_r190[ctx_r202.nameColumnDetail]);
|
|
1122
1121
|
} }
|
|
1123
1122
|
function PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template(rf, ctx) { if (rf & 1) {
|
|
1124
1123
|
i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 67);
|
|
@@ -1136,42 +1135,42 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template(rf, ctx
|
|
|
1136
1135
|
i0.ɵɵtemplate(12, PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template, 3, 4, "tr", 23);
|
|
1137
1136
|
i0.ɵɵelementEnd();
|
|
1138
1137
|
} if (rf & 2) {
|
|
1139
|
-
const
|
|
1140
|
-
const
|
|
1141
|
-
const
|
|
1138
|
+
const row_r190 = ctx.$implicit;
|
|
1139
|
+
const rowIndex_r191 = ctx.index;
|
|
1140
|
+
const ctx_r189 = i0.ɵɵnextContext(3);
|
|
1142
1141
|
i0.ɵɵadvance(1);
|
|
1143
|
-
i0.ɵɵclassProp("po-table-row-active",
|
|
1142
|
+
i0.ɵɵclassProp("po-table-row-active", row_r190.$selected || row_r190.$selected === null && ctx_r189.selectable);
|
|
1144
1143
|
i0.ɵɵadvance(1);
|
|
1145
|
-
i0.ɵɵproperty("ngIf",
|
|
1144
|
+
i0.ɵɵproperty("ngIf", ctx_r189.selectable);
|
|
1146
1145
|
i0.ɵɵadvance(1);
|
|
1147
|
-
i0.ɵɵproperty("ngIf",
|
|
1146
|
+
i0.ɵɵproperty("ngIf", ctx_r189.columnMasterDetail && !ctx_r189.hideDetail && !ctx_r189.hasRowTemplate);
|
|
1148
1147
|
i0.ɵɵadvance(1);
|
|
1149
|
-
i0.ɵɵproperty("ngIf", !
|
|
1148
|
+
i0.ɵɵproperty("ngIf", !ctx_r189.actionRight && (ctx_r189.visibleActions.length > 1 || ctx_r189.isSingleAction));
|
|
1150
1149
|
i0.ɵɵadvance(1);
|
|
1151
|
-
i0.ɵɵproperty("ngIf",
|
|
1150
|
+
i0.ɵɵproperty("ngIf", ctx_r189.hasRowTemplate && !ctx_r189.hasRowTemplateWithArrowDirectionRight);
|
|
1152
1151
|
i0.ɵɵadvance(1);
|
|
1153
|
-
i0.ɵɵproperty("ngForOf",
|
|
1152
|
+
i0.ɵɵproperty("ngForOf", ctx_r189.mainColumns)("ngForTrackBy", ctx_r189.trackBy);
|
|
1154
1153
|
i0.ɵɵadvance(1);
|
|
1155
|
-
i0.ɵɵproperty("ngIf",
|
|
1154
|
+
i0.ɵɵproperty("ngIf", ctx_r189.hasRowTemplateWithArrowDirectionRight);
|
|
1156
1155
|
i0.ɵɵadvance(1);
|
|
1157
|
-
i0.ɵɵproperty("ngIf",
|
|
1156
|
+
i0.ɵɵproperty("ngIf", ctx_r189.actionRight);
|
|
1158
1157
|
i0.ɵɵadvance(1);
|
|
1159
|
-
i0.ɵɵproperty("ngIf", !
|
|
1158
|
+
i0.ɵɵproperty("ngIf", !ctx_r189.actionRight && (ctx_r189.visibleActions.length > 1 || ctx_r189.isSingleAction) && !ctx_r189.hideColumnsManager);
|
|
1160
1159
|
i0.ɵɵadvance(1);
|
|
1161
|
-
i0.ɵɵproperty("ngIf", !
|
|
1160
|
+
i0.ɵɵproperty("ngIf", !ctx_r189.hasVisibleActions && !ctx_r189.hideColumnsManager && !ctx_r189.hasRowTemplateWithArrowDirectionRight);
|
|
1162
1161
|
i0.ɵɵadvance(1);
|
|
1163
|
-
i0.ɵɵproperty("ngIf",
|
|
1162
|
+
i0.ɵɵproperty("ngIf", ctx_r189.hasMainColumns && ctx_r189.hasRowTemplate && row_r190.$showDetail && ctx_r189.isShowRowTemplate(row_r190, rowIndex_r191));
|
|
1164
1163
|
i0.ɵɵadvance(1);
|
|
1165
|
-
i0.ɵɵproperty("ngIf",
|
|
1164
|
+
i0.ɵɵproperty("ngIf", ctx_r189.hasMainColumns && ctx_r189.isShowMasterDetail(row_r190));
|
|
1166
1165
|
} }
|
|
1167
1166
|
function PoTableComponent_ng_template_8_ng_container_12_Template(rf, ctx) { if (rf & 1) {
|
|
1168
1167
|
i0.ɵɵelementContainerStart(0);
|
|
1169
1168
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template, 13, 14, "tbody", 92);
|
|
1170
1169
|
i0.ɵɵelementContainerEnd();
|
|
1171
1170
|
} if (rf & 2) {
|
|
1172
|
-
const
|
|
1171
|
+
const ctx_r173 = i0.ɵɵnextContext(2);
|
|
1173
1172
|
i0.ɵɵadvance(1);
|
|
1174
|
-
i0.ɵɵproperty("ngForOf",
|
|
1173
|
+
i0.ɵɵproperty("ngForOf", ctx_r173.items)("ngForTrackBy", ctx_r173.trackBy);
|
|
1175
1174
|
} }
|
|
1176
1175
|
function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
1177
1176
|
i0.ɵɵelementStart(0, "table", 39)(1, "thead")(2, "tr");
|
|
@@ -1216,59 +1215,59 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
1216
1215
|
function PoTableComponent_ng_template_12_span_0_Template(rf, ctx) { if (rf & 1) {
|
|
1217
1216
|
i0.ɵɵelement(0, "span", 95);
|
|
1218
1217
|
} if (rf & 2) {
|
|
1219
|
-
const
|
|
1220
|
-
i0.ɵɵclassProp("po-icon-arrow-up",
|
|
1218
|
+
const row_r283 = i0.ɵɵnextContext().row;
|
|
1219
|
+
i0.ɵɵclassProp("po-icon-arrow-up", row_r283.$showDetail)("po-icon-arrow-down", !row_r283.$showDetail);
|
|
1221
1220
|
} }
|
|
1222
1221
|
function PoTableComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
1223
1222
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_12_span_0_Template, 1, 4, "span", 94);
|
|
1224
1223
|
} if (rf & 2) {
|
|
1225
|
-
const
|
|
1226
|
-
const
|
|
1224
|
+
const row_r283 = ctx.row;
|
|
1225
|
+
const rowIndex_r284 = ctx.rowIndex;
|
|
1227
1226
|
const ctx_r12 = i0.ɵɵnextContext();
|
|
1228
|
-
i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(
|
|
1227
|
+
i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r283) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r283, rowIndex_r284) && ctx_r12.hasRowTemplate);
|
|
1229
1228
|
} }
|
|
1230
1229
|
function PoTableComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
1231
|
-
const
|
|
1230
|
+
const _r289 = i0.ɵɵgetCurrentView();
|
|
1232
1231
|
i0.ɵɵelement(0, "input", 96);
|
|
1233
1232
|
i0.ɵɵelementStart(1, "label", 97);
|
|
1234
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_14_Template_label_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
1233
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_14_Template_label_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r289); const row_r287 = restoredCtx.$implicit; const ctx_r288 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r288.selectable ? ctx_r288.selectRow(row_r287) : "javascript:;"); });
|
|
1235
1234
|
i0.ɵɵelementEnd();
|
|
1236
1235
|
} if (rf & 2) {
|
|
1237
|
-
const
|
|
1238
|
-
i0.ɵɵclassProp("po-table-radio-checked",
|
|
1236
|
+
const row_r287 = ctx.$implicit;
|
|
1237
|
+
i0.ɵɵclassProp("po-table-radio-checked", row_r287.$selected);
|
|
1239
1238
|
} }
|
|
1240
1239
|
function PoTableComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
|
|
1241
|
-
const
|
|
1240
|
+
const _r292 = i0.ɵɵgetCurrentView();
|
|
1242
1241
|
i0.ɵɵelementStart(0, "po-checkbox", 98);
|
|
1243
|
-
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_16_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
1242
|
+
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_16_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r292); const row_r290 = restoredCtx.$implicit; const ctx_r291 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r291.selectable ? ctx_r291.selectRow(row_r290) : "javascript:;"); });
|
|
1244
1243
|
i0.ɵɵelementEnd();
|
|
1245
1244
|
} if (rf & 2) {
|
|
1246
|
-
const
|
|
1247
|
-
i0.ɵɵproperty("
|
|
1245
|
+
const row_r290 = ctx.$implicit;
|
|
1246
|
+
i0.ɵɵproperty("p-checkboxValue", row_r290.$selected);
|
|
1248
1247
|
} }
|
|
1249
1248
|
function PoTableComponent_ng_template_18_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
1250
1249
|
i0.ɵɵelement(0, "span");
|
|
1251
1250
|
} if (rf & 2) {
|
|
1252
|
-
const
|
|
1253
|
-
const
|
|
1254
|
-
i0.ɵɵclassProp("po-table-header-icon-unselected",
|
|
1251
|
+
const column_r293 = i0.ɵɵnextContext().$implicit;
|
|
1252
|
+
const ctx_r295 = i0.ɵɵnextContext();
|
|
1253
|
+
i0.ɵɵclassProp("po-table-header-icon-unselected", ctx_r295.JSON.stringify(ctx_r295.sortedColumn == null ? null : ctx_r295.sortedColumn.property) !== ctx_r295.JSON.stringify(column_r293))("po-table-header-icon-descending", ctx_r295.JSON.stringify(ctx_r295.sortedColumn == null ? null : ctx_r295.sortedColumn.property) === ctx_r295.JSON.stringify(column_r293) && ctx_r295.sortedColumn.ascending)("po-table-header-icon-ascending", ctx_r295.JSON.stringify(ctx_r295.sortedColumn == null ? null : ctx_r295.sortedColumn.property) === ctx_r295.JSON.stringify(column_r293) && !ctx_r295.sortedColumn.ascending);
|
|
1255
1254
|
} }
|
|
1256
1255
|
function PoTableComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
|
|
1257
|
-
const
|
|
1256
|
+
const _r298 = i0.ɵɵgetCurrentView();
|
|
1258
1257
|
i0.ɵɵelementStart(0, "span", 99, 100);
|
|
1259
|
-
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_18_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(
|
|
1258
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_18_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r298); const ctx_r297 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r297.tooltipMouseEnter($event)); })("mouseleave", function PoTableComponent_ng_template_18_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r298); const ctx_r299 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r299.tooltipMouseLeave()); });
|
|
1260
1259
|
i0.ɵɵtext(2);
|
|
1261
1260
|
i0.ɵɵpipe(3, "titlecase");
|
|
1262
1261
|
i0.ɵɵelementEnd();
|
|
1263
1262
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_18_span_4_Template, 1, 6, "span", 101);
|
|
1264
1263
|
} if (rf & 2) {
|
|
1265
|
-
const
|
|
1264
|
+
const column_r293 = ctx.$implicit;
|
|
1266
1265
|
const ctx_r18 = i0.ɵɵnextContext();
|
|
1267
1266
|
i0.ɵɵproperty("p-tooltip", ctx_r18.tooltipText);
|
|
1268
1267
|
i0.ɵɵadvance(2);
|
|
1269
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1268
|
+
i0.ɵɵtextInterpolate1(" ", column_r293.label || i0.ɵɵpipeBind1(3, 3, column_r293.property), " ");
|
|
1270
1269
|
i0.ɵɵadvance(2);
|
|
1271
|
-
i0.ɵɵproperty("ngIf", ctx_r18.sort &&
|
|
1270
|
+
i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r293.sortable !== false);
|
|
1272
1271
|
} }
|
|
1273
1272
|
function PoTableComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
|
|
1274
1273
|
i0.ɵɵelementStart(0, "div", 102);
|
|
@@ -1289,39 +1288,39 @@ function PoTableComponent_ng_template_22_Template(rf, ctx) { if (rf & 1) {
|
|
|
1289
1288
|
function PoTableComponent_ng_template_24_td_0_div_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1290
1289
|
i0.ɵɵelement(0, "po-icon", 109);
|
|
1291
1290
|
} if (rf & 2) {
|
|
1292
|
-
const
|
|
1293
|
-
i0.ɵɵproperty("p-icon",
|
|
1291
|
+
const ctx_r305 = i0.ɵɵnextContext(4);
|
|
1292
|
+
i0.ɵɵproperty("p-icon", ctx_r305.firstAction.icon);
|
|
1294
1293
|
} }
|
|
1295
1294
|
function PoTableComponent_ng_template_24_td_0_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
1296
|
-
const
|
|
1295
|
+
const _r308 = i0.ɵɵgetCurrentView();
|
|
1297
1296
|
i0.ɵɵelementStart(0, "div", 107);
|
|
1298
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1297
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r308); const row_r300 = i0.ɵɵnextContext(2).row; const ctx_r306 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r306.executeTableAction(row_r300, ctx_r306.firstAction)); });
|
|
1299
1298
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_po_icon_1_Template, 1, 1, "po-icon", 108);
|
|
1300
1299
|
i0.ɵɵtext(2);
|
|
1301
1300
|
i0.ɵɵelementEnd();
|
|
1302
1301
|
} if (rf & 2) {
|
|
1303
|
-
const
|
|
1304
|
-
const
|
|
1305
|
-
i0.ɵɵclassProp("po-table-action-disabled",
|
|
1302
|
+
const row_r300 = i0.ɵɵnextContext(2).row;
|
|
1303
|
+
const ctx_r304 = i0.ɵɵnextContext();
|
|
1304
|
+
i0.ɵɵclassProp("po-table-action-disabled", ctx_r304.firstAction.disabled ? ctx_r304.validateTableAction(row_r300, ctx_r304.firstAction) : false);
|
|
1306
1305
|
i0.ɵɵadvance(1);
|
|
1307
|
-
i0.ɵɵproperty("ngIf",
|
|
1306
|
+
i0.ɵɵproperty("ngIf", ctx_r304.firstAction.icon);
|
|
1308
1307
|
i0.ɵɵadvance(1);
|
|
1309
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1308
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r304.firstAction.label, " ");
|
|
1310
1309
|
} }
|
|
1311
1310
|
function PoTableComponent_ng_template_24_td_0_Template(rf, ctx) { if (rf & 1) {
|
|
1312
1311
|
i0.ɵɵelementStart(0, "td", 105);
|
|
1313
1312
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_Template, 3, 4, "div", 106);
|
|
1314
1313
|
i0.ɵɵelementEnd();
|
|
1315
1314
|
} if (rf & 2) {
|
|
1316
|
-
const
|
|
1317
|
-
i0.ɵɵstyleProp("width",
|
|
1315
|
+
const ctx_r302 = i0.ɵɵnextContext(2);
|
|
1316
|
+
i0.ɵɵstyleProp("width", ctx_r302.height && ctx_r302.actionRight ? ctx_r302.getWidthColumnManager() : "", "px")("max-width", ctx_r302.height && !ctx_r302.actionRight ? ctx_r302.getColumnWidthActionsLeft() : "", "px")("width", ctx_r302.height && !ctx_r302.actionRight ? ctx_r302.getColumnWidthActionsLeft() : "", "px");
|
|
1318
1317
|
i0.ɵɵadvance(1);
|
|
1319
|
-
i0.ɵɵproperty("ngIf",
|
|
1318
|
+
i0.ɵɵproperty("ngIf", ctx_r302.firstAction.visible !== false);
|
|
1320
1319
|
} }
|
|
1321
1320
|
function PoTableComponent_ng_template_24_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
1322
|
-
const
|
|
1321
|
+
const _r313 = i0.ɵɵgetCurrentView();
|
|
1323
1322
|
i0.ɵɵelementStart(0, "td", 110)(1, "span", 111, 112);
|
|
1324
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_1_Template_span_click_1_listener() { i0.ɵɵrestoreView(
|
|
1323
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_1_Template_span_click_1_listener() { i0.ɵɵrestoreView(_r313); const _r310 = i0.ɵɵreference(2); const row_r300 = i0.ɵɵnextContext().row; const ctx_r311 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r311.togglePopup(row_r300, _r310)); });
|
|
1325
1324
|
i0.ɵɵelementEnd()();
|
|
1326
1325
|
} }
|
|
1327
1326
|
function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1334,9 +1333,9 @@ function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
|
|
|
1334
1333
|
i0.ɵɵproperty("ngIf", ctx_r24.visibleActions.length > 1);
|
|
1335
1334
|
} }
|
|
1336
1335
|
function PoTableComponent_po_table_column_manager_26_Template(rf, ctx) { if (rf & 1) {
|
|
1337
|
-
const
|
|
1336
|
+
const _r315 = i0.ɵɵgetCurrentView();
|
|
1338
1337
|
i0.ɵɵelementStart(0, "po-table-column-manager", 113);
|
|
1339
|
-
i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(
|
|
1338
|
+
i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r315); const ctx_r314 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r314.onVisibleColumnsChange($event)); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r315); const ctx_r316 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r316.onChangeVisibleColumns($event)); })("p-initial-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r315); const ctx_r317 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r317.onColumnRestoreManager($event)); });
|
|
1340
1339
|
i0.ɵɵelementEnd();
|
|
1341
1340
|
} if (rf & 2) {
|
|
1342
1341
|
const ctx_r25 = i0.ɵɵnextContext();
|
|
@@ -1925,7 +1924,7 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
|
|
|
1925
1924
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnManagerTargetFixed = _t.first);
|
|
1926
1925
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionsIconElement = _t);
|
|
1927
1926
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionsElement = _t);
|
|
1928
|
-
} }, features: [i0.ɵɵProvidersFeature([PoDateService]), i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 6, consts: [["p-no-padding", "", 3, "p-no-shadow", 4, "ngIf", "ngIfElse"], ["tableContainerTemplate", ""], ["class", "po-row po-table-footer-show-more", 3, "po-invisible", 4, "ngIf"], ["tableHeaderTemplate", ""], ["tableBodyTemplate", ""], ["tableTemplate", ""], [3, "p-actions", "p-target"], ["popup", ""], ["poTableColumnDetail", ""], ["inputRadio", ""], ["inputCheckbox", ""], ["contentHeaderTemplate", ""], ["noColumnsWithHeight", ""], ["noColumnsWithoutHeight", ""], ["ActionsColumnTemplate", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns", 4, "ngIf"], ["p-no-padding", "", 3, "p-no-shadow"], [4, "ngTemplateOutlet"], ["class", "po-table-overlay", 4, "ngIf"], [1, "po-table-main-container"], [1, "po-table-wrapper"], ["tableWrapper", ""], ["class", "po-table-container", 3, "height", 4, "ngIf"], [4, "ngIf"], ["class", "po-table-footer", 4, "ngIf"], [1, "po-table-overlay"], [1, "po-table-overlay-content", 3, "p-text"], [1, "po-table-container"], [1, "po-table-header-fixed", "po-table-header"], ["poTableThead", ""], [1, "po-table-container-fixed-inner"], ["poTableTbody", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], [1, "po-table-footer"], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-literals", "p-subtitles"], [1, "po-row", "po-table-footer-show-more"], ["tableFooter", ""], [1, "po-offset-xl-4", "po-offset-lg-4", "po-offset-md-3", "po-lg-4", "po-md-6", 3, "p-disabled", "p-label", "p-loading", "p-click"], [1, "po-table"], ["class", "po-table-column-selectable", 4, "ngIf"], ["class", "po-table-header-column po-table-header-master-detail", 4, "ngIf"], [3, "po-table-header-master-detail", "po-table-header-single-action", 4, "ngIf"], ["class", "po-table-header-column po-text-center", 4, "ngIf"], ["class", "po-table-header-ellipsis", 3, "width", "max-width", "min-width", "po-clickable", "po-table-header-subtitle", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "po-table-header-single-action", "po-table-header-actions", 4, "ngIf"], [3, "po-table-header-column-manager", "po-table-header-column-manager-border", "po-table-header-single-action", 4, "ngIf"], [1, "po-table-column-selectable"], ["name", "selectAll", 3, "
|
|
1927
|
+
} }, features: [i0.ɵɵProvidersFeature([PoDateService]), i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 6, consts: [["p-no-padding", "", 3, "p-no-shadow", 4, "ngIf", "ngIfElse"], ["tableContainerTemplate", ""], ["class", "po-row po-table-footer-show-more", 3, "po-invisible", 4, "ngIf"], ["tableHeaderTemplate", ""], ["tableBodyTemplate", ""], ["tableTemplate", ""], [3, "p-actions", "p-target"], ["popup", ""], ["poTableColumnDetail", ""], ["inputRadio", ""], ["inputCheckbox", ""], ["contentHeaderTemplate", ""], ["noColumnsWithHeight", ""], ["noColumnsWithoutHeight", ""], ["ActionsColumnTemplate", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns", 4, "ngIf"], ["p-no-padding", "", 3, "p-no-shadow"], [4, "ngTemplateOutlet"], ["class", "po-table-overlay", 4, "ngIf"], [1, "po-table-main-container"], [1, "po-table-wrapper"], ["tableWrapper", ""], ["class", "po-table-container", 3, "height", 4, "ngIf"], [4, "ngIf"], ["class", "po-table-footer", 4, "ngIf"], [1, "po-table-overlay"], [1, "po-table-overlay-content", 3, "p-text"], [1, "po-table-container"], [1, "po-table-header-fixed", "po-table-header"], ["poTableThead", ""], [1, "po-table-container-fixed-inner"], ["poTableTbody", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], [1, "po-table-footer"], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-literals", "p-subtitles"], [1, "po-row", "po-table-footer-show-more"], ["tableFooter", ""], [1, "po-offset-xl-4", "po-offset-lg-4", "po-offset-md-3", "po-lg-4", "po-md-6", 3, "p-disabled", "p-label", "p-loading", "p-click"], [1, "po-table"], ["class", "po-table-column-selectable", 4, "ngIf"], ["class", "po-table-header-column po-table-header-master-detail", 4, "ngIf"], [3, "po-table-header-master-detail", "po-table-header-single-action", 4, "ngIf"], ["class", "po-table-header-column po-text-center", 4, "ngIf"], ["class", "po-table-header-ellipsis", 3, "width", "max-width", "min-width", "po-clickable", "po-table-header-subtitle", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "po-table-header-single-action", "po-table-header-actions", 4, "ngIf"], [3, "po-table-header-column-manager", "po-table-header-column-manager-border", "po-table-header-single-action", 4, "ngIf"], [1, "po-table-column-selectable"], ["name", "selectAll", 3, "p-checkboxValue", "p-change", 4, "ngIf"], ["name", "selectAll", 3, "p-checkboxValue", "p-change"], [1, "po-table-header-column", "po-table-header-master-detail"], ["columnActionLeftFixed", ""], [1, "po-table-header-column", "po-text-center"], ["noColumnsHeaderFixed", ""], [1, "po-table-header-ellipsis", 3, "click"], [1, "po-table-header-flex"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["columnManagerFixed", ""], ["type", "button", "p-tooltip-position", "left", 1, "po-table-header-column-manager-button", "po-icon", "po-icon-settings", "po-clickable", 3, "p-tooltip", "click"], ["columnManagerTargetFixed", ""], [3, "itemSize", "minBufferPx", "maxBufferPx", "scroll"], ["poTableTbodyVirtual", ""], ["class", "po-table-group-row", 4, "ngIf"], [1, "po-table-group-row"], [1, "po-table-row", "po-table-row-no-data"], [1, "po-table-no-data", "po-text-center", 3, "colSpan"], ["class", "po-table-group-row", 4, "cdkVirtualFor", "cdkVirtualForOf", "cdkVirtualForTrackBy"], [1, "po-table-row"], ["class", "po-table-column-detail-toggle", 3, "click", 4, "ngIf"], [3, "width", "max-width", "min-width", "po-table-column", "po-table-column-right", "po-table-column-center", "po-table-column-icons", "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-table-column", 4, "ngIf"], [1, "po-table-column-detail-toggle", 3, "click"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "ngClass", "click"], [1, "po-table-column-cell", "notranslate", 3, "ngSwitch", "p-tooltip", "mouseenter", "mouseleave"], [4, "ngSwitchCase"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click", 4, "ngSwitchCase"], [3, "p-column", "p-icons", "p-row", 4, "ngSwitchCase"], [4, "ngSwitchDefault"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click"], [3, "p-column", "p-icons", "p-row"], [3, "p-subtitle"], [3, "p-value"], [1, "po-table-column", "po-table-column-empty"], [1, "po-table-column"], [1, "po-table-row-template-container", 3, "colSpan"], [1, "po-table-column-detail", 3, "colSpan"], [3, "p-selectable", "p-detail", "p-items", "p-select-row"], ["columnActionLeft", ""], ["noColumnsHeader", ""], ["columnManager", ""], ["columnManagerTarget", ""], ["class", "po-table-group-row", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "po-table-row-no-data", "po-table-column-empty"], ["class", "po-icon po-clickable", 3, "po-icon-arrow-up", "po-icon-arrow-down", 4, "ngIf"], [1, "po-icon", "po-clickable"], ["type", "radio", 1, "po-table-radio"], [1, "po-table-radio-label", "po-clickable", 3, "click"], ["name", "checkbox", 3, "p-checkboxValue", "p-change"], [1, "po-table-header-ellipsis", 3, "p-tooltip", "mouseenter", "mouseleave"], ["columnHeader", ""], [3, "po-table-header-icon-unselected", "po-table-header-icon-descending", "po-table-header-icon-ascending", 4, "ngIf"], [1, "po-table-header-fixed-inner"], ["class", "po-table-column po-table-column-single-action", 3, "width", "max-width", 4, "ngIf"], ["class", "po-table-column-actions", 4, "ngIf"], [1, "po-table-column", "po-table-column-single-action"], ["class", "po-table-single-action po-clickable", 3, "po-table-action-disabled", "click", 4, "ngIf"], [1, "po-table-single-action", "po-clickable", 3, "click"], ["class", "po-table-single-action-content", 3, "p-icon", 4, "ngIf"], [1, "po-table-single-action-content", 3, "p-icon"], [1, "po-table-column-actions"], [1, "po-icon", "po-icon-more", "po-clickable", 3, "click"], ["popupTarget", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns"]], template: function PoTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1929
1928
|
i0.ɵɵtemplate(0, PoTableComponent_po_container_0_Template, 2, 2, "po-container", 0);
|
|
1930
1929
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_1_Template, 8, 10, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
1931
1930
|
i0.ɵɵtemplate(3, PoTableComponent_div_3_Template, 3, 5, "div", 2);
|
|
@@ -1950,10 +1949,10 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
|
|
|
1950
1949
|
i0.ɵɵproperty("p-actions", ctx.actions)("p-target", ctx.popupTarget);
|
|
1951
1950
|
i0.ɵɵadvance(16);
|
|
1952
1951
|
i0.ɵɵproperty("ngIf", !ctx.hideColumnsManager);
|
|
1953
|
-
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i3.NgTemplateOutlet, i3.NgSwitch, i3.NgSwitchCase, i3.NgSwitchDefault, i6.
|
|
1952
|
+
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i3.NgTemplateOutlet, i3.NgSwitch, i3.NgSwitchCase, i3.NgSwitchDefault, i6.CdkFixedSizeVirtualScroll, i6.CdkVirtualForOf, i6.CdkVirtualScrollViewport, i7.PoButtonComponent, i8.PoContainerComponent, i9.PoLoadingComponent, i10.PoPopupComponent, i11.PoTooltipDirective, i12.PoIconComponent, i13.PoCheckboxComponent, i14.PoTableColumnIconComponent, i15.PoTableColumnLabelComponent, i16.PoTableColumnLinkComponent, i17.PoTableColumnManagerComponent, i18.PoTableDetailComponent, i19.PoTableSubtitleCircleComponent, i20.PoTableSubtitleFooterComponent, i3.TitleCasePipe, i3.CurrencyPipe, i3.DatePipe, i21.PoTimePipe], encapsulation: 2 });
|
|
1954
1953
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableComponent, [{
|
|
1955
1954
|
type: Component,
|
|
1956
|
-
args: [{ selector: 'po-table', providers: [PoDateService], template: "<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding [p-no-shadow]=\"container === 'border'\">\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-relative]=\"loading\">\n <div *ngIf=\"loading\" class=\"po-table-overlay\">\n <po-loading class=\"po-table-overlay-content\" [p-text]=\"literals.loadingData\"></po-loading>\n </div>\n\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableThead class=\"po-table-header-fixed po-table-header\">\n <ng-container *ngTemplateOutlet=\"tableHeaderTemplate\"></ng-container>\n </div>\n\n <div #poTableTbody class=\"po-table-container-fixed-inner\">\n <ng-container *ngIf=\"height; then tableBodyTemplate; else tableTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<ng-template #tableHeaderTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (click)=\"selectAllRows()\"\n (p-change)=\"selectAllRows()\"\n [(ngModel)]=\"selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeftFixed\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeaderFixed class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction && !hideColumnsManager\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManagerFixed\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManagerFixed.offsetWidth : undefined\"\n >\n <button\n #columnManagerTargetFixed\n type=\"button\"\n [attr.aria-label]=\"literals.columnsManager\"\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n </table>\n</ng-template>\n\n<!-- s\u00F3 virtual -->\n<ng-template #tableBodyTemplate>\n <cdk-virtual-scroll-viewport\n #poTableTbodyVirtual\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableVirtual\"\n [minBufferPx]=\"heightTableVirtual < 100 ? 100 : heightTableVirtual\"\n [maxBufferPx]=\"heightTableVirtual < 200 ? 200 : heightTableVirtual\"\n (scroll)=\"syncronizeHorizontalScroll()\"\n >\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *cdkVirtualFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [style.width.px]=\"noColumnsHeaderFixed?.nativeElement.parentElement?.offsetWidth\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-column po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<ng-template #tableTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (click)=\"selectAllRows()\"\n (p-change)=\"selectAllRows()\"\n [(ngModel)]=\"selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n type=\"button\"\n [attr.aria-label]=\"literals.columnsManager\"\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-row-no-data po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <span\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n class=\"po-icon po-clickable\"\n [class.po-icon-arrow-up]=\"row.$showDetail\"\n [class.po-icon-arrow-down]=\"!row.$showDetail\"\n >\n </span>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <input type=\"radio\" class=\"po-table-radio\" [class.po-table-radio-checked]=\"row.$selected\" />\n <label class=\"po-table-radio-label po-clickable\" (click)=\"selectable ? selectRow(row) : 'javascript:;'\"></label>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [(ngModel)]=\"row.$selected\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"noColumnsHeader?.nativeElement.offsetWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td\n *ngIf=\"isSingleAction\"\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <span #popupTarget class=\"po-icon po-icon-more po-clickable\" (click)=\"togglePopup(row, popupTarget)\"></span>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"height ? columnManagerTargetFixed : columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n" }]
|
|
1955
|
+
args: [{ selector: 'po-table', providers: [PoDateService], template: "<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding [p-no-shadow]=\"container === 'border'\">\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-relative]=\"loading\">\n <div *ngIf=\"loading\" class=\"po-table-overlay\">\n <po-loading class=\"po-table-overlay-content\" [p-text]=\"literals.loadingData\"></po-loading>\n </div>\n\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableThead class=\"po-table-header-fixed po-table-header\">\n <ng-container *ngTemplateOutlet=\"tableHeaderTemplate\"></ng-container>\n </div>\n\n <div #poTableTbody class=\"po-table-container-fixed-inner\">\n <ng-container *ngIf=\"height; then tableBodyTemplate; else tableTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<ng-template #tableHeaderTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeftFixed\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeaderFixed class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction && !hideColumnsManager\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManagerFixed\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManagerFixed.offsetWidth : undefined\"\n >\n <button\n #columnManagerTargetFixed\n type=\"button\"\n [attr.aria-label]=\"literals.columnsManager\"\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n </table>\n</ng-template>\n\n<!-- s\u00F3 virtual -->\n<ng-template #tableBodyTemplate>\n <cdk-virtual-scroll-viewport\n #poTableTbodyVirtual\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableVirtual\"\n [minBufferPx]=\"heightTableVirtual < 100 ? 100 : heightTableVirtual\"\n [maxBufferPx]=\"heightTableVirtual < 200 ? 200 : heightTableVirtual\"\n (scroll)=\"syncronizeHorizontalScroll()\"\n >\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *cdkVirtualFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [style.width.px]=\"noColumnsHeaderFixed?.nativeElement.parentElement?.offsetWidth\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-column po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<ng-template #tableTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n type=\"button\"\n [attr.aria-label]=\"literals.columnsManager\"\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-row-no-data po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <span\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n class=\"po-icon po-clickable\"\n [class.po-icon-arrow-up]=\"row.$showDetail\"\n [class.po-icon-arrow-down]=\"!row.$showDetail\"\n >\n </span>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <input type=\"radio\" class=\"po-table-radio\" [class.po-table-radio-checked]=\"row.$selected\" />\n <label class=\"po-table-radio-label po-clickable\" (click)=\"selectable ? selectRow(row) : 'javascript:;'\"></label>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"noColumnsHeader?.nativeElement.offsetWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td\n *ngIf=\"isSingleAction\"\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <span #popupTarget class=\"po-icon po-icon-more po-clickable\" (click)=\"togglePopup(row, popupTarget)\"></span>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"height ? columnManagerTargetFixed : columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n" }]
|
|
1957
1956
|
}], function () { return [{ type: i1.PoDateService }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }, { type: i2.PoLanguageService }, { type: i0.ChangeDetectorRef }, { type: i3.DecimalPipe }, { type: i4.Router }, { type: i5.PoTableService }]; }, { tableRowTemplate: [{
|
|
1958
1957
|
type: ContentChild,
|
|
1959
1958
|
args: [PoTableRowTemplateDirective, { static: true }]
|
|
@@ -2012,4 +2011,4 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
|
|
|
2012
2011
|
type: ViewChild,
|
|
2013
2012
|
args: ['columnManagerTargetFixed']
|
|
2014
2013
|
}] }); })();
|
|
2015
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBS1YsU0FBUyxFQUNULFlBQVksRUFFWixlQUFlLEVBRWhCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUt2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFHbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFdEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDakNwRyx3QkFBd0U7OztJQUQxRSx3Q0FBaUg7SUFDL0csbUdBQXdFO0lBQzFFLGlCQUFlOzs7O0lBRjJELDJEQUFzQztJQUMvRixlQUF3QztJQUF4QyxzQ0FBd0M7OztJQUtyRCwrQkFBOEM7SUFDNUMsaUNBQTBGO0lBQzVGLGlCQUFNOzs7SUFEeUMsZUFBK0I7SUFBL0IscURBQStCOzs7SUFZdEUsd0JBQXFFOzs7SUFJckUsd0JBQXdGOzs7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QUFLLEVBQUU7WUFDRSxZQUFZO2tCQUEzRSxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNTLG1CQUFtQjtrQkFBekYsU0FBUzttQkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNKLGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0EsZ0JBQWdCO2tCQUFuRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08scUJBQXFCO2tCQUE3RixTQUFTO21CQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRWIsa0JBQWtCO2tCQUEzRSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNGLGNBQWM7a0JBQW5FLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBeUJkLG1CQUFtQjtrQkFBeEQsU0FBUzttQkFBQyxxQkFBcUI7WUFTVyx3QkFBd0I7a0JBQWxFLFNBQVM7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9wby1wb3B1cC9wby1wb3B1cC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBQb1RhYmxlQWN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUJhc2VDb21wb25lbnQsIFF1ZXJ5UGFyYW1zVHlwZSB9IGZyb20gJy4vcG8tdGFibGUtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5MYWJlbCB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLWxhYmVsL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUvcG8tdGFibGUtY2VsbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jb2x1bW4tdGVtcGxhdGUvcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiB9IGZyb20gJy4vZW51bXMvcG8tdGFibGUtcm93LXRlbXBsYXRlLWFycm93LWRpcmVjdGlvbi5lbnVtJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZVJvd1RlbXBsYXRlOiBQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDZWxsVGVtcGxhdGU6IFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUpIHRhYmxlQ29sdW1uVGVtcGxhdGVzOiBRdWVyeUxpc3Q8UG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICBAVmlld0NoaWxkKCdub0NvbHVtbnNIZWFkZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbm9Db2x1bW5zSGVhZGVyO1xuICBAVmlld0NoaWxkKCdub0NvbHVtbnNIZWFkZXJGaXhlZCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXJGaXhlZDtcbiAgQFZpZXdDaGlsZCgncG9wdXAnKSBwb1BvcHVwQ29tcG9uZW50OiBQb1BvcHVwQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZUZvb3RlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZUZvb3RlckVsZW1lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVdyYXBwZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGJvZHknLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRib2R5O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGhlYWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRoZWFkO1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGJvZHlWaXJ0dWFsJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHBvVGFibGVUYm9keVZpcnR1YWw7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uTWFuYWdlcjtcbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlckZpeGVkJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbk1hbmFnZXJGaXhlZDtcbiAgQFZpZXdDaGlsZCgnY29sdW1uQWN0aW9uTGVmdCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5BY3Rpb25MZWZ0O1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0Rml4ZWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQWN0aW9uTGVmdEZpeGVkO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNJY29uRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhY3Rpb25zSWNvbkVsZW1lbnQ6IFF1ZXJ5TGlzdDxhbnk+O1xuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25zRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhY3Rpb25zRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG5cbiAgaGVpZ2h0VGFibGVDb250YWluZXI6IG51bWJlcjtcbiAgaGVpZ2h0VGFibGVWaXJ0dWFsOiBudW1iZXI7XG4gIHBvcHVwVGFyZ2V0O1xuICB0YWJsZU9wYWNpdHk6IG51bWJlciA9IDA7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIGl0ZW1TaXplOiBudW1iZXIgPSAzMjtcbiAgbGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWQ6IEFycmF5PFBvVGFibGVDb2x1bW4+O1xuXG4gIHByaXZhdGUgX2NvbHVtbk1hbmFnZXJUYXJnZXQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHRpbWVvdXRSZXNpemU7XG4gIHByaXZhdGUgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzY3JvbGxFdmVudCQ6IE9ic2VydmFibGU8YW55PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TY3JvbGxFdmVudDogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgY2xpY2tMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgSlNPTjogSlNPTjtcblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyVGFyZ2V0Jykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0ID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgY29sdW1uTWFuYWdlclRhcmdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCcpIHNldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBvRGF0ZTogUG9EYXRlU2VydmljZSxcbiAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGRlZmF1bHRTZXJ2aWNlOiBQb1RhYmxlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihwb0RhdGUsIHBvTGFuZ3VhZ2VTZXJ2aWNlLCBkZWZhdWx0U2VydmljZSk7XG4gICAgdGhpcy5KU09OID0gSlNPTjtcbiAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuXG4gICAgLy8gVE9ETzogIzU1NTAgYW8gcmVtb3ZlciBlc3RlIGxpc3RlbmVyLCBubyBwb3J0YWwsIHF1YW5kbyBhcyBjb2x1bmFzIGZvcmVtIGZpeGFzIG7Do28gc29mcmVtXG4gICAgLy8gYWx0ZXJhw6fDo28gZGUgbGFyZ3VyYSwgcG9pcyBvIG5nRG9DaGVjayBuw6NvIMOpIGV4ZWN1dGFkby5cbiAgICB0aGlzLmNsaWNrTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKCkgPT4ge30pO1xuXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsIChldmVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlPy50YWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gPT09IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uLlJpZ2h0O1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50KCkge1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID1cbiAgICAgIHRoaXMubWFpbkNvbHVtbnMubGVuZ3RoICtcbiAgICAgICh0aGlzLmFjdGlvbnMubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApICtcbiAgICAgICghdGhpcy5oaWRlRGV0YWlsICYmIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsICE9PSB1bmRlZmluZWQgPyAxIDogMCk7XG5cbiAgICByZXR1cm4gY29sdW1uQ291bnQgfHwgMTtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbCgpIHtcbiAgICAvLyBjYXNvIHRpdmVyIGHDp8O1ZXMgc2Vyw6EgdXRpbGl6YWRvIGEgc3VhIGNvbHVuYSBwYXJhIGV4aWJpciBvIGNvbHVtbk1hbmFnZXJcbiAgICBjb25zdCBjb2x1bW5NYW5hZ2VyID0gdGhpcy5hY3Rpb25zLmxlbmd0aCA/IDAgOiAxO1xuXG4gICAgcmV0dXJuIHRoaXMubWFpbkNvbHVtbnMubGVuZ3RoICsgMSArICh0aGlzLmFjdGlvbnMubGVuZ3RoID4gMCA/IDEgOiAwKSArICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgKyBjb2x1bW5NYW5hZ2VyO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgdmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9ucyAmJiB0aGlzLmFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24gJiYgYWN0aW9uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNob3dNb3JlSW5maW5pdGVTY3JvbGwoeyB0YXJnZXQgfSk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFyZ2V0Lm9mZnNldEhlaWdodCArIHRhcmdldC5zY3JvbGxUb3A7XG4gICAgaWYgKCF0aGlzLnNob3dNb3JlRGlzYWJsZWQgJiYgc2Nyb2xsUG9zaXRpb24gPj0gdGFyZ2V0LnNjcm9sbEhlaWdodCAqICh0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2UgLyAxMTApKSB7XG4gICAgICB0aGlzLm9uU2hvd01vcmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBjYWJlw6dhbGhvcyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLml0ZW1TaXplID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA+IDEzNjYgPyA0NCA6IDMyO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgYnVzY2Egbm8gc2VydmnDp28gZGUgZGFkb3MgcG9kZW5kbyBpbmZvcm1hciBmaWx0cm9zIGUgY29tIG8gcmV0b3JubywgYXR1YWxpemEgYSB0YWJlbGEuXG4gICAqXG4gICAqIENhc28gbsOjbyBzZWphIGluZm9ybWFkbyBwYXLDom1ldHJvLCBuYWRhIHNlcsOhIGFkaWNpb25hZG8gYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKiA+IE9iczogb3MgcGFyw6JtZXRyb3MgYHBhZ2VgIGUgYHBhZ2VTaXplYCBzZW1wcmUgc2Vyw6NvIGNoYW1hZG9zIGluZGVwZW5kZW50ZSBkZSBzZXIgZW52aWFkb3Mgb3V0cm9zIHBhcsOibWV0cm9zLlxuICAgKlxuICAgKiBDYXNvIHNlamFtIGluZm9ybWFkb3Mgb3MgcGFyw6JtZXRyb3MgYHsgbmFtZTogJ0pPSE4nLCBhZ2U6ICcyMycgfWAsIHRvZG9zIHNlcsOjbyBhZGljaW9uYWRvcyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmbmFtZT1KT0hOJmFnZT0yM1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSBxdWVyeVBhcmFtcyBGb3JtYXRvIGRvIG9iamV0byBhIHNlciBlbnZpYWRvLlxuICAgKiA+IFBvZGUgc2VyIHV0aWxpemFkYSBxdWFscXVlciBzdHJpbmcgY29tbyBrZXksIGUgcXVhbHF1ZXIgc3RyaW5nIG91IG51bWJlciBjb21vIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSkge1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pbml0aWFsaXplRGF0YShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgY29sYXBzYSB1bWEgbGluaGEgY29tIGRldGFsaGUgcXVhbmRvIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIH0gcm93SW5kZXggw41uZGljZSBkYSBsaW5oYSBxdWUgc2Vyw6EgY29sYXBzYWRhLlxuICAgKiA+IEFvIHJlb3JkZW5hciBvcyBkYWRvcyBkYSB0YWJlbGEsIG8gdmFsb3IgY29udGlkbyBuZXN0ZSDDrW5kaWNlIHNlcsOhIGFsdGVyYWRvIGNvbmZvcm1lIGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBjb2xsYXBzZShyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgZXhwYW5kZSB1bWEgbGluaGEgY29tIGRldGFsaGUgcXVhbmRvIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIH0gcm93SW5kZXggw41uZGljZSBkYSBsaW5oYSBxdWUgc2Vyw6EgZXhwYW5kaWRhLlxuICAgKiA+IEFvIHJlb3JkZW5hciBvcyBkYWRvcyBkYSB0YWJlbGEsIG8gdmFsb3IgY29udGlkbyBuZXN0ZSDDrW5kaWNlIHNlcsOhIGFsdGVyYWRvIGNvbmZvcm1lIGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBleHBhbmQocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhcyBsaW5oYXMgZG8gYHBvLXRhYmxlYCBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhcyBsaW5oYXMgZG8gYHBvLXRhYmxlYCBxdWUgbsOjbyBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0VW5zZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNtYXJjYSBhcyBsaW5oYXMgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICB1bnNlbGVjdFJvd3MoKSB7XG4gICAgY29uc3QgY29sdW1uRGV0YWlsID0gdGhpcy5uYW1lQ29sdW1uRGV0YWlsO1xuXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZGV0YWlsSXRlbXMgPSBjb2x1bW5EZXRhaWwgPyBpdGVtW2NvbHVtbkRldGFpbF0gOiBudWxsO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXRhaWxJdGVtcykpIHtcbiAgICAgICAgZGV0YWlsSXRlbXMuZm9yRWFjaChkZXRhaWxJdGVtID0+IHtcbiAgICAgICAgICBkZXRhaWxJdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gIH1cblxuICBjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZCA/IGNvbHVtbi5kaXNhYmxlZChyb3cpIDogZmFsc2U7XG4gIH1cblxuICBjb250YWluc01hc3RlckRldGFpbChyb3cpIHtcbiAgICByZXR1cm4gcm93W3RoaXMubmFtZUNvbHVtbkRldGFpbF0gJiYgcm93W3RoaXMubmFtZUNvbHVtbkRldGFpbF0ubGVuZ3RoO1xuICB9XG5cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKHJvdzogYW55LCB0YWJsZUFjdGlvbjogYW55KSB7XG4gICAgaWYgKCFyb3cuZGlzYWJsZWQgJiYgIXRoaXMudmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIHRhYmxlQWN0aW9uKSkge1xuICAgICAgdGFibGVBY3Rpb24uYWN0aW9uKHJvdyk7XG4gICAgICB0aGlzLnRvZ2dsZVJvd0FjdGlvbihyb3cpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNtYXJjYSB1bWEgbGluaGEgcXVlIGVzdMOhIHNlbGVjaW9uYWRhLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dJdGVtKGl0ZW1mbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8ICgoaXRlbSkgPT4gYm9vbGVhbikpIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdChpdGVtZm4sIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY2lvbmEgdW1hIGxpbmhhIGRvICdwby10YWJsZScuXG4gICAqL1xuICBzZWxlY3RSb3dJdGVtKGl0ZW1mbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8ICgoaXRlbSkgPT4gYm9vbGVhbikpIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdChpdGVtZm4sIHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0Q2VsbERhdGEocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IGFueSB7XG4gICAgY29uc3QgYXJyYXlQcm9wZXJ0eSA9IGNvbHVtbi5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgIGlmIChhcnJheVByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BlcnRpZXMgPSBhcnJheVByb3BlcnR5O1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPSByb3c7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5lc3RlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtwcm9wZXJ0eV0gfHwgdmFsdWVbcHJvcGVydHldID09PSAwID8gdmFsdWVbcHJvcGVydHldIDogJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dbY29sdW1uLnByb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBnZXRCb29sZWFuTGFiZWwocm93VmFsdWU6IGFueSwgY29sdW1uQm9vbGVhbjogUG9UYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKHJvd1ZhbHVlIHx8IHJvd1ZhbHVlID09PSBmYWxzZSB8fCByb3dWYWx1ZSA9PT0gMCkge1xuICAgICAgcm93VmFsdWUgPSBjb252ZXJ0VG9Cb29sZWFuKHJvd1ZhbHVlKTtcblxuICAgICAgaWYgKGNvbHVtbkJvb2xlYW4uYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyBjb2x1bW5Cb29sZWFuLmJvb2xlYW4udHJ1ZUxhYmVsIHx8ICdTaW0nIDogY29sdW1uQm9vbGVhbi5ib29sZWFuLmZhbHNlTGFiZWwgfHwgJ07Do28nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gJ1NpbScgOiAnTsOjbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd1ZhbHVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uSWNvbnMocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHJvd0ljb25zID0gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbik7XG5cbiAgICBpZiAoY29sdW1uLmljb25zKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dJY29ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VDdXN0b21JY29ucyhyb3dJY29ucywgY29sdW1uLmljb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dJY29ucztcbiAgfVxuXG4gIGdldENvbHVtbkxhYmVsKHJvdzogYW55LCBjb2x1bW5MYWJlbDogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVDb2x1bW5MYWJlbCB7XG4gICAgcmV0dXJuIGNvbHVtbkxhYmVsLmxhYmVscy5maW5kKGxhYmVsSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uTGFiZWwpID09PSBsYWJlbEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0U3VidGl0bGVDb2x1bW4ocm93OiBhbnksIHN1YnRpdGxlQ29sdW1uOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZVN1YnRpdGxlQ29sdW1uIHtcbiAgICByZXR1cm4gc3VidGl0bGVDb2x1bW4uc3VidGl0bGVzLmZpbmQoc3VidGl0bGVJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBzdWJ0aXRsZUNvbHVtbikgPT09IHN1YnRpdGxlSXRlbS52YWx1ZSk7XG4gIH1cblxuICBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmhpZGVEZXRhaWwgJiZcbiAgICAgIHRoaXMubmFtZUNvbHVtbkRldGFpbCAmJlxuICAgICAgcm93LiRzaG93RGV0YWlsICYmXG4gICAgICB0aGlzLmNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiZcbiAgICAgICF0aGlzLmhhc1Jvd1RlbXBsYXRlXG4gICAgKTtcbiAgfVxuXG4gIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnRhYmxlUm93VGVtcGxhdGUgJiYgdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdyhyb3csIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2tMaW5rKGV2ZW50LCByb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlQ29sdW1ucy5lbWl0KGNvbHVtbnMpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblZpc2libGVDb2x1bW5zQ2hhbmdlKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9vbHRpcE1vdXNlRW50ZXIoZXZlbnQ6IGFueSwgY29sdW1uPzogUG9UYWJsZUNvbHVtbiwgcm93PzogYW55KSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLmhpZGVUZXh0T3ZlcmZsb3cgJiYgZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoIDwgZXZlbnQudGFyZ2V0LnNjcm9sbFdpZHRoICYmIGV2ZW50LnRhcmdldC5pbm5lclRleHQudHJpbSgpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICB0aGlzLmNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlUG9wdXAocm93LCB0YXJnZXRSZWYpIHtcbiAgICB0aGlzLnBvcHVwVGFyZ2V0ID0gdGFyZ2V0UmVmO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5wb1BvcHVwQ29tcG9uZW50LnRvZ2dsZShyb3cpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdmFsaWRhdGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICh0eXBlb2YgdGFibGVBY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ29sdW1uTWFuYWdlcigpIHtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkID0gWy4uLnRoaXMuY29sdW1uc107XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgcmVtb3ZlIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIHJlbW92aWRvLlxuICAgKiA+IEFvIHJlbW92ZXIgbyBpdGVtLCBhIGxpbmhhIHF1ZSBvIHJlcHJlc2VudGEgc2Vyw6EgZXhjbHXDrWRhIGRhIHRhYmVsYS5cbiAgICovXG4gIHJlbW92ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoZmlsdGVySXRlbSA9PiBmaWx0ZXJJdGVtICE9PSBpdGVtKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IGl0ZW07XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGF0dWFsaXphIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIGF0dWFsaXphZG8uXG4gICAqIEBwYXJhbSB7IHsga2V5OiB2YWx1ZSB9IH0gdXBkYXRlZEl0ZW0gSXRlbSBxdWUgZm9pIGF0dWFsaXphZG8uXG4gICAqID4gQW8gYXR1YWxpemFyIG8gaXRlbSwgYSBpbmZvcm1hw6fDo28gc2Vyw6EgYWx0ZXJhZGEgbmEgdGFiZWxhLlxuICAgKi9cbiAgdXBkYXRlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCB1cGRhdGVkSXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGl0ZW0sIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChpbmRleEl0ZW0gPT4gaW5kZXhJdGVtID09PSBpdGVtKTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlOiBQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgPSB0aGlzLnRhYmxlQ29sdW1uVGVtcGxhdGVzLmZpbmQoXG4gICAgICB0YWJsZUNvbHVtblRlbXBsYXRlID0+IHRhYmxlQ29sdW1uVGVtcGxhdGUudGFyZ2V0UHJvcGVydHkgPT09IGNvbHVtbi5wcm9wZXJ0eVxuICAgICk7XG4gICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTsOjbyBmb2kgcG9zc8OtdmVsIGVuY29udHJhciBvIHRlbXBsYXRlIHBhcmEgYSBjb2x1bmE6ICR7Y29sdW1uLnByb3BlcnR5fSwgcG9yIGdlbnRpbGV6YSBpbmZvcm1lIGEgcHJvcHJpZWRhZGUgW3AtcHJvcGVydHldYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gIH1cblxuICBwdWJsaWMgc3luY3Jvbml6ZUhvcml6b250YWxTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5wb1RhYmxlVGhlYWQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5wb1RhYmxlVGJvZHlWaXJ0dWFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0XG4gICAgICA/IHRoaXMuY29sdW1uTWFuYWdlckZpeGVkPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICA6IHRoaXMuY29sdW1uTWFuYWdlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmhlaWdodFxuICAgICAgPyB0aGlzLmNvbHVtbkFjdGlvbkxlZnRGaXhlZD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgOiB0aGlzLmNvbHVtbkFjdGlvbkxlZnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGhlaWdodCk7XG4gICAgdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA9IHZhbHVlID8gdmFsdWUgLSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5oZWlnaHRUYWJsZVZpcnR1YWwgPSB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyXG4gICAgICA/IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgLSB0aGlzLmdldEhlaWdodFRhYmxlSGVhZGVyKClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrSW5maW5pdGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzSW5maW5pdGVTY3JvbGwoKSkge1xuICAgICAgaWYgKHRoaXMucG9UYWJsZVRib2R5VmlydHVhbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB0aGlzLmluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDaGFuZ2VzSXRlbXMoKSB7XG4gICAgY29uc3QgY2hhbmdlc0l0ZW1zID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLml0ZW1zKTtcblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgdGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmICF0aGlzLmhhc0NvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KSB7XG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGluaycgJiYgY29sdW1uLnRvb2x0aXAgJiYgIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbi50b29sdGlwKTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsYWJlbCcpIHtcbiAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdGhpcy5nZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW5MYWJlbD8udG9vbHRpcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHNob3cgdGhlIHRhYmxlXG4gICAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IGN1c3RvbUljb24gPSBjb2x1bW4uaWNvbnMuZmluZChpY29uID0+IHJvd0ljb25zID09PSBpY29uLnZhbHVlKTtcbiAgICByZXR1cm4gY3VzdG9tSWNvbiA/IFtjdXN0b21JY29uXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVGb290ZXJFbGVtZW50ID8gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUhlYWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wb1RhYmxlVGhlYWQ/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodFxuICAgICAgPyB0aGlzLnBvVGFibGVUaGVhZC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgOiB0aGlzLml0ZW1TaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNJbmZpbml0ZVNjcm9sbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCAmJlxuICAgICAgdGhpcy5oYXNJdGVtcyAmJlxuICAgICAgIXRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgJiZcbiAgICAgIHRoaXMuaGVpZ2h0ICYmXG4gICAgICB0aGlzLnBvVGFibGVUYm9keVZpcnR1YWwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmNsdWRlSW5maW5pdGVTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxFdmVudCQgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlLnNjcm9sbExpc3RlbmVyKHRoaXMucG9UYWJsZVRib2R5VmlydHVhbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkhlYWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVIZWFkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2ZXJpZnlDYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcigpIHtcbiAgICBpZiAodGhpcy5oZWlnaHQgJiYgdGhpcy52ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpKSB7XG4gICAgICB0aGlzLmZvb3RlckhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcblxuICAgICAgaWYgKHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5IZWFkZXIoKSkge1xuICAgICAgICB0aGlzLmhlYWRlckhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0VGFibGVIZWFkZXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcih0aGlzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPHBvLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhaW5lcjsgZWxzZSB0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCIgcC1uby1wYWRkaW5nIFtwLW5vLXNoYWRvd109XCJjb250YWluZXIgPT09ICdib3JkZXInXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3BvLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRhaW5lclRlbXBsYXRlPlxuICA8ZGl2IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItcmVsYXRpdmVdPVwibG9hZGluZ1wiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJwby10YWJsZS1vdmVybGF5XCI+XG4gICAgICA8cG8tbG9hZGluZyBjbGFzcz1cInBvLXRhYmxlLW92ZXJsYXktY29udGVudFwiIFtwLXRleHRdPVwibGl0ZXJhbHMubG9hZGluZ0RhdGFcIj48L3BvLWxvYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtbWFpbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3RhYmxlV3JhcHBlclxuICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWNvbHVtbnMtcGl4ZWxzXT1cImFsbENvbHVtbnNXaWR0aFBpeGVsc1wiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cInRhYmxlT3BhY2l0eVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWlnaHRcIiBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0VGFibGVDb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICNwb1RhYmxlVGhlYWQgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQgcG8tdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRib2R5IGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyLWZpeGVkLWlubmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIHRhYmxlQm9keVRlbXBsYXRlOyBlbHNlIHRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoZWlnaHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJoYXNGb290ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc3VidGl0bGVDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8cG8tdGFibGUtc3VidGl0bGUtZm9vdGVyIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCIgW3Atc3VidGl0bGVzXT1cImNvbHVtbi5zdWJ0aXRsZXNcIj4gPC9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdlxuICAqbmdJZj1cIiFpbmZpbml0ZVNjcm9sbFwiXG4gIGNsYXNzPVwicG8tcm93IHBvLXRhYmxlLWZvb3Rlci1zaG93LW1vcmVcIlxuICBbY2xhc3MucG8taW52aXNpYmxlXT1cInNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPT09IDAgJiYgIWhhc1NlcnZpY2VcIlxuICAjdGFibGVGb290ZXJcbj5cbiAgPHBvLWJ1dHRvblxuICAgIGNsYXNzPVwicG8tb2Zmc2V0LXhsLTQgcG8tb2Zmc2V0LWxnLTQgcG8tb2Zmc2V0LW1kLTMgcG8tbGctNCBwby1tZC02XCJcbiAgICBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCJcbiAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5sb2FkTW9yZURhdGFcIlxuICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1Nob3dNb3JlXCJcbiAgICAocC1jbGljayk9XCJvblNob3dNb3JlKClcIlxuICA+XG4gIDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVIZWFkZXJUZW1wbGF0ZT5cbiAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyIFtjbGFzcy5wby10YWJsZS1oZWFkZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgIDx0aCAqbmdJZj1cImhhc1NlbGVjdGFibGVDb2x1bW5cIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0Rml4ZWRcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXJGaXhlZCBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQgJiYgKGhhc1Zpc2libGVBY3Rpb25zIHx8IGhpZGVDb2x1bW5zTWFuYWdlcilcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgaGlkZUNvbHVtbnNNYW5hZ2VyICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb24gJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5NYW5hZ2VyRml4ZWRcbiAgICAgICAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyXT1cIiFpc1NpbmdsZUFjdGlvbiB8fCAhYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cIiFoZWlnaHQgJiYgY29udGFpbmVyXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb24gJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1ib3JkZXJdPVwiaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIHZpc2libGVBY3Rpb25zLmxlbmd0aCA/IGNvbHVtbk1hbmFnZXJGaXhlZC5vZmZzZXRXaWR0aCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAjY29sdW1uTWFuYWdlclRhcmdldEZpeGVkXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpdGVyYWxzLmNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYnV0dG9uIHBvLWljb24gcG8taWNvbi1zZXR0aW5ncyBwby1jbGlja2FibGVcIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICA8L3RhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBzw7MgdmlydHVhbCAtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVCb2R5VGVtcGxhdGU+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjcG9UYWJsZVRib2R5VmlydHVhbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZVZpcnR1YWxcIlxuICAgIFttaW5CdWZmZXJQeF09XCJoZWlnaHRUYWJsZVZpcnR1YWwgPCAxMDAgPyAxMDAgOiBoZWlnaHRUYWJsZVZpcnR1YWxcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZVZpcnR1YWwgPCAyMDAgPyAyMDAgOiBoZWlnaHRUYWJsZVZpcnR1YWxcIlxuICAgIChzY3JvbGwpPVwic3luY3Jvbml6ZUhvcml6b250YWxTY3JvbGwoKVwiXG4gID5cbiAgICA8dGFibGUgY2xhc3M9XCJwby10YWJsZVwiIFtjbGFzcy5wby10YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIiBbY2xhc3MucG8tdGFibGUtbGF5b3V0LWZpeGVkXT1cImhpZGVUZXh0T3ZlcmZsb3dcIj5cbiAgICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3cgcG8tdGFibGUtcm93LW5vLWRhdGFcIj5cbiAgICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBpdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5NYXN0ZXJEZXRhaWwgJiYgIWhpZGVEZXRhaWwgJiYgIWhhc1Jvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsYSBkaXJldGl2YSAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhc1NlbGVjdGFibGVSb3coKSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWJvZHktZWxsaXBzaXNdPVwiaGlkZVRleHRPdmVyZmxvd1wiXG4gICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibm9Db2x1bW5zSGVhZGVyRml4ZWQ/Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRCb29sZWFuTGFiZWwoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGN1cnJlbmN5OiBjb2x1bW4uZm9ybWF0OidzeW1ib2wnOicxLjItMicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIHBhcmEgbsOjbyBmaWNhciBlbSBicmFuY28gbmFzIGxpbmhhcyBkZSBnZXJlbmNpYW1lbnRvIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbikgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4gcG8tdGFibGUtY29sdW1uLWVtcHR5XCI+PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVtbiBNYW5hZ2VyIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWhhc1Zpc2libGVBY3Rpb25zICYmICFoaWRlQ29sdW1uc01hbmFnZXIgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtblwiXG4gICAgICAgICAgICA+PC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJsZVRlbXBsYXRlPlxuICA8dGFibGUgY2xhc3M9XCJwby10YWJsZVwiIFtjbGFzcy5wby10YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIiBbY2xhc3MucG8tdGFibGUtbGF5b3V0LWZpeGVkXT1cImhpZGVUZXh0T3ZlcmZsb3dcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHIgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCI+XG4gICAgICAgIDx0aCAqbmdJZj1cImhhc1NlbGVjdGFibGVDb2x1bW5cIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNWaXNpYmxlQWN0aW9ucyAmJiBoaWRlQ29sdW1uc01hbmFnZXIgJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5NYW5hZ2VyXG4gICAgICAgICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlcl09XCIhaXNTaW5nbGVBY3Rpb24gfHwgIWFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCIhaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cImhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPyBjb2x1bW5NYW5hZ2VyLm9mZnNldFdpZHRoIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICNjb2x1bW5NYW5hZ2VyVGFyZ2V0XG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpdGVyYWxzLmNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYnV0dG9uIHBvLWljb24gcG8taWNvbi1zZXR0aW5ncyBwby1jbGlja2FibGVcIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuXG4gICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nSWY9XCIhaGFzSXRlbXMgfHwgIWhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3cgcG8tdGFibGUtcm93LW5vLWRhdGFcIj5cbiAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4+IHt7IGxpdGVyYWxzLm5vRGF0YSB9fSA8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgaXRlbXM7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvd1wiIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVNlbGVjdCA/IGlucHV0UmFkaW8gOiBpbnB1dENoZWNrYm94OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsbyBpbnB1dCBkbyBwby10YWJsZSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY29tIGFzIGHDp8O1ZXMgbmEgZXNxdWVyZGEgKHBhZHLDo28pLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsYSBkaXJldGl2YSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGUgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uXT1cImNvbHVtbi50eXBlICE9PSAnaWNvbidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1pY29uc109XCJjb2x1bW4udHlwZSA9PT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYXNTZWxlY3RhYmxlUm93KCkgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWNlbGwgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtYm9keS1lbGxpcHNpc109XCJoaWRlVGV4dE92ZXJmbG93XCJcbiAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIHBhcmEgbsOjbyBmaWNhciBlbSBicmFuY28gbmFzIGxpbmhhcyBkZSBnZXJlbmNpYW1lbnRvIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy1uby1kYXRhIHBvLXRhYmxlLWNvbHVtbi1lbXB0eVwiPjwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIENvbHVtbiBNYW5hZ2VyIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCIhaGFzVmlzaWJsZUFjdGlvbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlciAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtblwiXG4gICAgICAgICAgPjwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcG8tdGFibGUtZGV0YWlsPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8c3BhblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBjbGFzcz1cInBvLWljb24gcG8tY2xpY2thYmxlXCJcbiAgICBbY2xhc3MucG8taWNvbi1hcnJvdy11cF09XCJyb3cuJHNob3dEZXRhaWxcIlxuICAgIFtjbGFzcy5wby1pY29uLWFycm93LWRvd25dPVwiIXJvdy4kc2hvd0RldGFpbFwiXG4gID5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBjbGFzcz1cInBvLXRhYmxlLXJhZGlvXCIgW2NsYXNzLnBvLXRhYmxlLXJhZGlvLWNoZWNrZWRdPVwicm93LiRzZWxlY3RlZFwiIC8+XG4gIDxsYWJlbCBjbGFzcz1cInBvLXRhYmxlLXJhZGlvLWxhYmVsIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiPjwvbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0Q2hlY2tib3ggbGV0LXJvdz5cbiAgPHBvLWNoZWNrYm94XG4gICAgbmFtZT1cImNoZWNrYm94XCJcbiAgICAocC1jaGFuZ2UpPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgIFsobmdNb2RlbCldPVwicm93LiRzZWxlY3RlZFwiXG4gICAgKGNsaWNrKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgPjwvcG8tY2hlY2tib3g+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRIZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8c3BhblxuICAgICNjb2x1bW5IZWFkZXJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gID5cbiAgICB7eyBjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfX1cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgICpuZ0lmPVwic29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tdW5zZWxlY3RlZF09XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWRlc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tYXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICA+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db2x1bW5zV2l0aEhlaWdodD5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lclwiIFtzdHlsZS53aWR0aC5weF09XCJub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcIj5cbiAgICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhvdXRIZWlnaHQ+XG4gIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBhw6fDtWVzIC0tPlxuPG5nLXRlbXBsYXRlICNBY3Rpb25zQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDx0ZFxuICAgICpuZ0lmPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1zaW5nbGUtYWN0aW9uXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIGFjdGlvblJpZ2h0ID8gZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkgOiAnJ1wiXG4gICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJmaXJzdEFjdGlvbi52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24gcG8tY2xpY2thYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWJsZS1hY3Rpb24tZGlzYWJsZWRdPVwiZmlyc3RBY3Rpb24uZGlzYWJsZWQgPyB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pIDogZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cImV4ZWN1dGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJmaXJzdEFjdGlvbi5pY29uXCIgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uLWNvbnRlbnRcIiBbcC1pY29uXT1cImZpcnN0QWN0aW9uLmljb25cIj48L3BvLWljb24+XG4gICAgICB7eyBmaXJzdEFjdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L3RkPlxuXG4gIDx0ZCAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDFcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1hY3Rpb25zXCI+XG4gICAgPHNwYW4gI3BvcHVwVGFyZ2V0IGNsYXNzPVwicG8taWNvbiBwby1pY29uLW1vcmUgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKHJvdywgcG9wdXBUYXJnZXQpXCI+PC9zcGFuPlxuICA8L3RkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyXG4gICpuZ0lmPVwiIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gIFtwLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtwLW1heC1jb2x1bW5zXT1cIm1heENvbHVtbnNcIlxuICBbcC10YXJnZXRdPVwiaGVpZ2h0ID8gY29sdW1uTWFuYWdlclRhcmdldEZpeGVkIDogY29sdW1uTWFuYWdlclRhcmdldFwiXG4gIFtwLWxhc3QtdmlzaWJsZS1jb2x1bW5zLXNlbGVjdGVkXT1cImxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkXCJcbiAgKHAtdmlzaWJsZS1jb2x1bW5zLWNoYW5nZSk9XCJvblZpc2libGVDb2x1bW5zQ2hhbmdlKCRldmVudClcIlxuICAocC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zKT1cIm9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoJGV2ZW50KVwiXG4gIFtwLWNvbHVtbnMtZGVmYXVsdF09XCJpbml0aWFsQ29sdW1uc1wiXG4gIChwLWluaXRpYWwtY29sdW1ucyk9XCJvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKCRldmVudClcIlxuPlxuPC9wby10YWJsZS1jb2x1bW4tbWFuYWdlcj5cbiJdfQ==
|
|
2014
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBS1YsU0FBUyxFQUNULFlBQVksRUFFWixlQUFlLEVBRWhCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUt2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFHbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFdEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNqQ3BHLHdCQUF3RTs7O0lBRDFFLHdDQUFpSDtJQUMvRyxtR0FBd0U7SUFDMUUsaUJBQWU7Ozs7SUFGMkQsMkRBQXNDO0lBQy9GLGVBQXdDO0lBQXhDLHNDQUF3Qzs7O0lBS3JELCtCQUE4QztJQUM1QyxpQ0FBMEY7SUFDNUYsaUJBQU07OztJQUR5QyxlQUErQjtJQUEvQixxREFBK0I7OztJQVl0RSx3QkFBcUU7OztJQUlyRSx3QkFBd0Y7OztJ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QXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDSixhQUFhO2tCQUE3RSxTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNPLGtCQUFrQjtrQkFBdkYsU0FBUzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNBLGdCQUFnQjtrQkFBbkYsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNPLHFCQUFxQjtrQkFBN0YsU0FBUzttQkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUViLGtCQUFrQjtrQkFBM0UsWUFBWTttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDRixjQUFjO2tCQUFuRSxZQUFZO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQXlCZCxtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWRhdGUvcG8tZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVCYXNlQ29tcG9uZW50LCBRdWVyeVBhcmFtc1R5cGUgfSBmcm9tICcuL3BvLXRhYmxlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtcm93LXRlbXBsYXRlL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVN1YnRpdGxlQ29sdW1uIH0gZnJvbSAnLi9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXIvcG8tdGFibGUtc3VidGl0bGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS1hcnJvdy1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tdGFibGUuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvVGFibGVCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYmFzaWNcIiB0aXRsZT1cIlBPIFRhYmxlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1iYXNpYy9zYW1wbGUtcG8tdGFibGUtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWxhYnNcIiB0aXRsZT1cIlBPIFRhYmxlIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuZTJlLXNwZWMudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQucG8udHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtd2l0aC1hcGlcIiB0aXRsZT1cIlBPIFRhYmxlIHVzaW5nIEFQSVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkvc2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS10cmFuc3BvcnRcIiB0aXRsZT1cIlBPIFRhYmxlIC0gVHJhbnNwb3J0XCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWFpcmZhcmVcIiB0aXRsZT1cIlBPIFRhYmxlIC0gQWlyZmFyZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1jb21wb25lbnRzXCIgdGl0bGU9XCJQTyBUYWJsZSAtIFBvIEZpZWxkIENvbXBvbmVudHNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuZW51bS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5jc3NcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb0RhdGVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkKFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGVSb3dUZW1wbGF0ZTogUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUpIHRhYmxlQ2VsbFRlbXBsYXRlOiBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZCgnbm9Db2x1bW5zSGVhZGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5vQ29sdW1uc0hlYWRlcjtcbiAgQFZpZXdDaGlsZCgnbm9Db2x1bW5zSGVhZGVyRml4ZWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbm9Db2x1bW5zSGVhZGVyRml4ZWQ7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcbiAgQFZpZXdDaGlsZCgncG9UYWJsZVRib2R5JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHBvVGFibGVUYm9keTtcbiAgQFZpZXdDaGlsZCgncG9UYWJsZVRoZWFkJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHBvVGFibGVUaGVhZDtcbiAgQFZpZXdDaGlsZCgncG9UYWJsZVRib2R5VmlydHVhbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBwb1RhYmxlVGJvZHlWaXJ0dWFsO1xuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbk1hbmFnZXI7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJGaXhlZCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyRml4ZWQ7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkFjdGlvbkxlZnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQWN0aW9uTGVmdDtcbiAgQFZpZXdDaGlsZCgnY29sdW1uQWN0aW9uTGVmdEZpeGVkJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnRGaXhlZDtcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25zSWNvbkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYWN0aW9uc0ljb25FbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0VsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYWN0aW9uc0VsZW1lbnQ6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gIGhlaWdodFRhYmxlQ29udGFpbmVyOiBudW1iZXI7XG4gIGhlaWdodFRhYmxlVmlydHVhbDogbnVtYmVyO1xuICBwb3B1cFRhcmdldDtcbiAgdGFibGVPcGFjaXR5OiBudW1iZXIgPSAwO1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuICBpdGVtU2l6ZTogbnVtYmVyID0gMzI7XG4gIGxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgZGlmZmVyO1xuICBwcml2YXRlIGZvb3RlckhlaWdodDtcbiAgcHJpdmF0ZSBoZWFkZXJIZWlnaHQ7XG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGNsaWNrTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIEpTT046IEpTT047XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldCcpIHNldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQ7XG4gIH1cblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldEZpeGVkKHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgY29sdW1uTWFuYWdlclRhcmdldEZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9UYWJsZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVSb3dUZW1wbGF0ZT8udGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uID09PSBQb1RhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbi5SaWdodDtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudCgpIHtcbiAgICBjb25zdCBjb2x1bW5Db3VudCA9XG4gICAgICB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArXG4gICAgICAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKSArXG4gICAgICAoIXRoaXMuaGlkZURldGFpbCAmJiB0aGlzLmNvbHVtbk1hc3RlckRldGFpbCAhPT0gdW5kZWZpbmVkID8gMSA6IDApO1xuXG4gICAgcmV0dXJuIGNvbHVtbkNvdW50IHx8IDE7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWwoKSB7XG4gICAgLy8gY2FzbyB0aXZlciBhw6fDtWVzIHNlcsOhIHV0aWxpemFkbyBhIHN1YSBjb2x1bmEgcGFyYSBleGliaXIgbyBjb2x1bW5NYW5hZ2VyXG4gICAgY29uc3QgY29sdW1uTWFuYWdlciA9IHRoaXMuYWN0aW9ucy5sZW5ndGggPyAwIDogMTtcblxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApICsgY29sdW1uTWFuYWdlcjtcbiAgfVxuXG4gIGdldCBkZXRhaWxIaWRlU2VsZWN0KCkge1xuICAgIGNvbnN0IG1hc3RlckRldGFpbCA9IHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsO1xuICAgIHJldHVybiBtYXN0ZXJEZXRhaWwgJiYgbWFzdGVyRGV0YWlsLmRldGFpbCA/IG1hc3RlckRldGFpbC5kZXRhaWwuaGlkZVNlbGVjdCA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGZpcnN0QWN0aW9uKCk6IFBvVGFibGVBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnNbMF07XG4gIH1cblxuICBnZXQgaGFzRm9vdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNNYXN0ZXJEZXRhaWxDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5oaWRlRGV0YWlsICYmICEhKHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsIHx8IHRoaXMuaGFzUm93VGVtcGxhdGUpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlUm93VGVtcGxhdGU7XG4gIH1cblxuICBnZXQgaGFzU2VsZWN0YWJsZUNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNNYWluQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNWYWxpZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52YWxpZENvbHVtbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VidGl0bGVDb2x1bW5zLnNvbWUoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgaXNTaW5nbGVBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgZ2V0IHZpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnMgJiYgdGhpcy5hY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uICYmIGFjdGlvbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBzaG93TW9yZUluZmluaXRlU2Nyb2xsKHsgdGFyZ2V0IH0pOiB2b2lkIHtcbiAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHRhcmdldC5vZmZzZXRIZWlnaHQgKyB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgIGlmICghdGhpcy5zaG93TW9yZURpc2FibGVkICYmIHNjcm9sbFBvc2l0aW9uID49IHRhcmdldC5zY3JvbGxIZWlnaHQgKiAodGhpcy5pbmZpbml0ZVNjcm9sbERpc3RhbmNlIC8gMTEwKSkge1xuICAgICAgdGhpcy5vblNob3dNb3JlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIHRoaXMuY2hlY2tDaGFuZ2VzSXRlbXMoKTtcbiAgICB0aGlzLnZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCk7XG4gICAgLy8gUGVybWl0ZSBxdWUgb3MgY2FiZcOnYWxob3Mgc2VqYW0gY2FsY3VsYWRvcyBuYSBwcmltZWlyYSB2ZXogcXVlIG8gY29tcG9uZW50ZSB0b3JuYS1zZSB2aXPDrXZlbCxcbiAgICAvLyBldml0YW5kbyBjb20gaXNzbywgcHJvYmxlbWFzIGNvbSBUYWJzIG91IERpdnMgcXVlIGluaWNpZW0gZXNjb25kaWRhcy5cbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJFbGVtZW50Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICYmICF0aGlzLnZpc2libGVFbGVtZW50ICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICAgIHRoaXMuY2hlY2tJbmZpbml0ZVNjcm9sbCgpO1xuICAgICAgdGhpcy52aXNpYmxlRWxlbWVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5pdGVtU2l6ZSA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPiAxMzY2ID8gNDQgOiAzMjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIHJlYWxpemFyIGJ1c2NhIG5vIHNlcnZpw6dvIGRlIGRhZG9zIHBvZGVuZG8gaW5mb3JtYXIgZmlsdHJvcyBlIGNvbSBvIHJldG9ybm8sIGF0dWFsaXphIGEgdGFiZWxhLlxuICAgKlxuICAgKiBDYXNvIG7Do28gc2VqYSBpbmZvcm1hZG8gcGFyw6JtZXRybywgbmFkYSBzZXLDoSBhZGljaW9uYWRvIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMFxuICAgKiBgYGBcbiAgICogPiBPYnM6IG9zIHBhcsOibWV0cm9zIGBwYWdlYCBlIGBwYWdlU2l6ZWAgc2VtcHJlIHNlcsOjbyBjaGFtYWRvcyBpbmRlcGVuZGVudGUgZGUgc2VyIGVudmlhZG9zIG91dHJvcyBwYXLDom1ldHJvcy5cbiAgICpcbiAgICogQ2FzbyBzZWphbSBpbmZvcm1hZG9zIG9zIHBhcsOibWV0cm9zIGB7IG5hbWU6ICdKT0hOJywgYWdlOiAnMjMnIH1gLCB0b2RvcyBzZXLDo28gYWRpY2lvbmFkb3MgYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwJm5hbWU9Sk9ITiZhZ2U9MjNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7IHsga2V5OiB2YWx1ZSB9IH0gcXVlcnlQYXJhbXMgRm9ybWF0byBkbyBvYmpldG8gYSBzZXIgZW52aWFkby5cbiAgICogPiBQb2RlIHNlciB1dGlsaXphZGEgcXVhbHF1ZXIgc3RyaW5nIGNvbW8ga2V5LCBlIHF1YWxxdWVyIHN0cmluZyBvdSBudW1iZXIgY29tbyB2YWx1ZS5cbiAgICovXG4gIGFwcGx5RmlsdGVycyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pIHtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEocXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIGNvbnN0IGFycmF5UHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICBpZiAoYXJyYXlQcm9wZXJ0eS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBuZXN0ZWRQcm9wZXJ0aWVzID0gYXJyYXlQcm9wZXJ0eTtcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gcm93O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBuZXN0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcGVydHldIHx8IHZhbHVlW3Byb3BlcnR5XSA9PT0gMCA/IHZhbHVlW3Byb3BlcnR5XSA6ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcm93W2NvbHVtbi5wcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgZ2V0Qm9vbGVhbkxhYmVsKHJvd1ZhbHVlOiBhbnksIGNvbHVtbkJvb2xlYW46IFBvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChyb3dWYWx1ZSB8fCByb3dWYWx1ZSA9PT0gZmFsc2UgfHwgcm93VmFsdWUgPT09IDApIHtcbiAgICAgIHJvd1ZhbHVlID0gY29udmVydFRvQm9vbGVhbihyb3dWYWx1ZSk7XG5cbiAgICAgIGlmIChjb2x1bW5Cb29sZWFuLmJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gY29sdW1uQm9vbGVhbi5ib29sZWFuLnRydWVMYWJlbCB8fCAnU2ltJyA6IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi5mYWxzZUxhYmVsIHx8ICdOw6NvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/ICdTaW0nIDogJ07Do28nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dWYWx1ZTtcbiAgfVxuXG4gIGdldENvbHVtbkljb25zKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCByb3dJY29ucyA9IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pO1xuXG4gICAgaWYgKGNvbHVtbi5pY29ucykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93SWNvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnMsIGNvbHVtbi5pY29ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93SWNvbnM7XG4gIH1cblxuICBnZXRDb2x1bW5MYWJlbChyb3c6IGFueSwgY29sdW1uTGFiZWw6IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlQ29sdW1uTGFiZWwge1xuICAgIHJldHVybiBjb2x1bW5MYWJlbC5sYWJlbHMuZmluZChsYWJlbEl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbkxhYmVsKSA9PT0gbGFiZWxJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlQ29sdW1uKHJvdzogYW55LCBzdWJ0aXRsZUNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHN1YnRpdGxlQ29sdW1uLnN1YnRpdGxlcy5maW5kKHN1YnRpdGxlSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgc3VidGl0bGVDb2x1bW4pID09PSBzdWJ0aXRsZUl0ZW0udmFsdWUpO1xuICB9XG5cbiAgaXNTaG93TWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5oaWRlRGV0YWlsICYmXG4gICAgICB0aGlzLm5hbWVDb2x1bW5EZXRhaWwgJiZcbiAgICAgIHJvdy4kc2hvd0RldGFpbCAmJlxuICAgICAgdGhpcy5jb250YWluc01hc3RlckRldGFpbChyb3cpICYmXG4gICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVxuICAgICk7XG4gIH1cblxuICBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZVJvd1RlbXBsYXRlICYmIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cocm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkNsaWNrTGluayhldmVudCwgcm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoY29sdW1uczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJsZUNvbHVtbnMuZW1pdChjb2x1bW5zKTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzdG9yZU1hbmFnZXIodmFsdWU6IEFycmF5PFN0cmluZz4pIHtcbiAgICB0aGlzLmNvbHVtblJlc3RvcmVNYW5hZ2VyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25WaXNpYmxlQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5oaWRlVGV4dE92ZXJmbG93ICYmIGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCA8IGV2ZW50LnRhcmdldC5zY3JvbGxXaWR0aCAmJiBldmVudC50YXJnZXQuaW5uZXJUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gZXZlbnQudGFyZ2V0LmlubmVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgdGhpcy5jaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVBvcHVwKHJvdywgdGFyZ2V0UmVmKSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUocm93KTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhbGlkYXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRhYmxlQWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbkNvbHVtbk1hbmFnZXIoKSB7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZCA9IFsuLi50aGlzLmNvbHVtbnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZShjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZTogUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlID0gdGhpcy50YWJsZUNvbHVtblRlbXBsYXRlcy5maW5kKFxuICAgICAgdGFibGVDb2x1bW5UZW1wbGF0ZSA9PiB0YWJsZUNvbHVtblRlbXBsYXRlLnRhcmdldFByb3BlcnR5ID09PSBjb2x1bW4ucHJvcGVydHlcbiAgICApO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyB0ZW1wbGF0ZSBwYXJhIGEgY29sdW5hOiAke2NvbHVtbi5wcm9wZXJ0eX0sIHBvciBnZW50aWxlemEgaW5mb3JtZSBhIHByb3ByaWVkYWRlIFtwLXByb3BlcnR5XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIHN5bmNyb25pemVIb3Jpem9udGFsU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMucG9UYWJsZVRoZWFkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMucG9UYWJsZVRib2R5VmlydHVhbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmhlaWdodFxuICAgICAgPyB0aGlzLmNvbHVtbk1hbmFnZXJGaXhlZD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgOiB0aGlzLmNvbHVtbk1hbmFnZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHRcbiAgICAgID8gdGhpcy5jb2x1bW5BY3Rpb25MZWZ0Rml4ZWQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICAgIDogdGhpcy5jb2x1bW5BY3Rpb25MZWZ0Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVWaXJ0dWFsID0gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lclxuICAgICAgPyB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUhlYWRlcigpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0luZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0luZmluaXRlU2Nyb2xsKCkpIHtcbiAgICAgIGlmICh0aGlzLnBvVGFibGVUYm9keVZpcnR1YWwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPj0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VSZXNpemUoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgdGhpcy50aW1lb3V0UmVzaXplID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBzaG93IHRoZSB0YWJsZVxuICAgICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCBjdXN0b21JY29uID0gY29sdW1uLmljb25zLmZpbmQoaWNvbiA9PiByb3dJY29ucyA9PT0gaWNvbi52YWx1ZSk7XG4gICAgcmV0dXJuIGN1c3RvbUljb24gPyBbY3VzdG9tSWNvbl0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEhlaWdodFRhYmxlRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudCA/IHRoaXMudGFibGVGb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVpZ2h0VGFibGVIZWFkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9UYWJsZVRoZWFkPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHRcbiAgICAgID8gdGhpcy5wb1RhYmxlVGhlYWQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgIDogdGhpcy5pdGVtU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzSW5maW5pdGVTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgJiZcbiAgICAgIHRoaXMuaGFzSXRlbXMgJiZcbiAgICAgICF0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ICYmXG4gICAgICB0aGlzLmhlaWdodCAmJlxuICAgICAgdGhpcy5wb1RhYmxlVGJvZHlWaXJ0dWFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcih0aGlzLnBvVGFibGVUYm9keVZpcnR1YWwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCA9IHRoaXMuc2Nyb2xsRXZlbnQkLnN1YnNjcmliZShldmVudCA9PiB0aGlzLnNob3dNb3JlSW5maW5pdGVTY3JvbGwoZXZlbnQpKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUN1c3RvbUljb25zKHJvd0ljb25zOiBBcnJheTxzdHJpbmc+LCBjdXN0b21JY29uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IG1lcmdlZEljb25zID0gW107XG5cbiAgICByb3dJY29ucy5mb3JFYWNoKGNvbHVtblZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kQ3VzdG9tSWNvbiA9IGN1c3RvbUljb25zLmZpbmQoXG4gICAgICAgIGN1c3RvbUljb24gPT4gY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24uaWNvbiB8fCBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi52YWx1ZVxuICAgICAgKTtcbiAgICAgIGZvdW5kQ3VzdG9tSWNvbiA/IG1lcmdlZEljb25zLnB1c2goZm91bmRDdXN0b21JY29uKSA6IG1lcmdlZEljb25zLnB1c2goY29sdW1uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEljb25zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVPcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlT3BhY2l0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q2hhbmdlSGVpZ2h0SW5IZWFkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVySGVpZ2h0ICE9PSB0aGlzLmdldEhlaWdodFRhYmxlSGVhZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG5cbiAgICAgIGlmICh0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluSGVhZGVyKCkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlSGVhZGVyKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIodGhpcy5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0KGNvbXBhcmUsIHNlbGVjdFZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21wYXJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtID09PSBjb21wYXJlKSB7XG4gICAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBzZWxlY3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGNvbXBhcmUoaXRlbSkpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZyBbcC1uby1zaGFkb3ddPVwiY29udGFpbmVyID09PSAnYm9yZGVyJ1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDb250YWluZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9wby1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVDb250YWluZXJUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3MucG8tdGFibGUtY29udGFpbmVyLXJlbGF0aXZlXT1cImxvYWRpbmdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicG8tdGFibGUtb3ZlcmxheVwiPlxuICAgICAgPHBvLWxvYWRpbmcgY2xhc3M9XCJwby10YWJsZS1vdmVybGF5LWNvbnRlbnRcIiBbcC10ZXh0XT1cImxpdGVyYWxzLmxvYWRpbmdEYXRhXCI+PC9wby1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLW1haW4tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICN0YWJsZVdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJwby10YWJsZS13cmFwcGVyXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1jb2x1bW5zLXBpeGVsc109XCJhbGxDb2x1bW5zV2lkdGhQaXhlbHNcIlxuICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0YWJsZU9wYWNpdHlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVpZ2h0XCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZpeGVkIHBvLXRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlSGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgI3BvVGFibGVUYm9keSBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lci1maXhlZC1pbm5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiB0YWJsZUJvZHlUZW1wbGF0ZTsgZWxzZSB0YWJsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGVpZ2h0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWZvb3RlclwiICpuZ0lmPVwiaGFzRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHN1YnRpdGxlQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWZvb3RlciBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiIFtwLXN1YnRpdGxlc109XCJjb2x1bW4uc3VidGl0bGVzXCI+IDwvcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXZcbiAgKm5nSWY9XCIhaW5maW5pdGVTY3JvbGxcIlxuICBjbGFzcz1cInBvLXJvdyBwby10YWJsZS1mb290ZXItc2hvdy1tb3JlXCJcbiAgW2NsYXNzLnBvLWludmlzaWJsZV09XCJzaG93TW9yZS5vYnNlcnZlcnMubGVuZ3RoID09PSAwICYmICFoYXNTZXJ2aWNlXCJcbiAgI3RhYmxlRm9vdGVyXG4+XG4gIDxwby1idXR0b25cbiAgICBjbGFzcz1cInBvLW9mZnNldC14bC00IHBvLW9mZnNldC1sZy00IHBvLW9mZnNldC1tZC0zIHBvLWxnLTQgcG8tbWQtNlwiXG4gICAgW3AtZGlzYWJsZWRdPVwic2hvd01vcmVEaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCJcbiAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdTaG93TW9yZVwiXG4gICAgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCJcbiAgPlxuICA8L3BvLWJ1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RhYmxlSGVhZGVyVGVtcGxhdGU+XG4gIDx0YWJsZSBjbGFzcz1cInBvLXRhYmxlXCIgW2NsYXNzLnBvLXRhYmxlLXN0cmlwZWRdPVwic3RyaXBlZFwiIFtjbGFzcy5wby10YWJsZS1sYXlvdXQtZml4ZWRdPVwiaGlkZVRleHRPdmVyZmxvd1wiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0ciBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cImhlaWdodFwiPlxuICAgICAgICA8dGggKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICBbcC1jaGVja2JveFZhbHVlXT1cInNlbGVjdEFsbCA9PT0gbnVsbCA/ICdtaXhlZCcgOiBzZWxlY3RBbGxcIlxuICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICA8dGhcbiAgICAgICAgICAjY29sdW1uQWN0aW9uTGVmdEZpeGVkXG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyRml4ZWQgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGhpZGVDb2x1bW5zTWFuYWdlciAmJiBhY3Rpb25SaWdodFwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItYWN0aW9uc109XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAjY29sdW1uTWFuYWdlckZpeGVkXG4gICAgICAgICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlcl09XCIhaXNTaW5nbGVBY3Rpb24gfHwgIWFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCIhaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cImhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPyBjb2x1bW5NYW5hZ2VyRml4ZWQub2Zmc2V0V2lkdGggOiB1bmRlZmluZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgI2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZFxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJ1dHRvbiBwby1pY29uIHBvLWljb24tc2V0dGluZ3MgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gc8OzIHZpcnR1YWwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlQm9keVRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3BvVGFibGVUYm9keVZpcnR1YWxcbiAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0VGFibGVWaXJ0dWFsXCJcbiAgICBbbWluQnVmZmVyUHhdPVwiaGVpZ2h0VGFibGVWaXJ0dWFsIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVWaXJ0dWFsXCJcbiAgICBbbWF4QnVmZmVyUHhdPVwiaGVpZ2h0VGFibGVWaXJ0dWFsIDwgMjAwID8gMjAwIDogaGVpZ2h0VGFibGVWaXJ0dWFsXCJcbiAgICAoc2Nyb2xsKT1cInN5bmNyb25pemVIb3Jpem9udGFsU2Nyb2xsKClcIlxuICA+XG4gICAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgaXRlbXM7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYXNTZWxlY3RhYmxlUm93KCkgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWNlbGwgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1ib2R5LWVsbGlwc2lzXT1cImhpZGVUZXh0T3ZlcmZsb3dcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5vQ29sdW1uc0hlYWRlckZpeGVkPy5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQsIGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbHVtblRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNlbGxUZW1wbGF0ZT8udGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdDonc3ltYm9sJzonMS4yLTInIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBwYXJhIG7Do28gZmljYXIgZW0gYnJhbmNvIG5hcyBsaW5oYXMgZGUgZ2VyZW5jaWFtZW50byAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1lbXB0eVwiPjwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bW4gTWFuYWdlciAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cIiFoYXNWaXNpYmxlQWN0aW9ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW5cIlxuICAgICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyIFtjbGFzcy5wby10YWJsZS1oZWFkZXJdPVwiIWhlaWdodFwiPlxuICAgICAgICA8dGggKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICBbcC1jaGVja2JveFZhbHVlXT1cInNlbGVjdEFsbCA9PT0gbnVsbCA/ICdtaXhlZCcgOiBzZWxlY3RBbGxcIlxuICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICA8dGhcbiAgICAgICAgICAjY29sdW1uQWN0aW9uTGVmdFxuICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoICpuZ0lmPVwiIWhhc01haW5Db2x1bW5zXCIgI25vQ29sdW1uc0hlYWRlciBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQgJiYgKGhhc1Zpc2libGVBY3Rpb25zIHx8IGhpZGVDb2x1bW5zTWFuYWdlcilcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgaGlkZUNvbHVtbnNNYW5hZ2VyICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItYWN0aW9uc109XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAjY29sdW1uTWFuYWdlclxuICAgICAgICAgICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXJdPVwiIWlzU2luZ2xlQWN0aW9uIHx8ICFhY3Rpb25SaWdodFwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1ib3JkZXJdPVwiIWhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvbiAmJiBhY3Rpb25SaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCJoZWlnaHQgJiYgY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgdmlzaWJsZUFjdGlvbnMubGVuZ3RoID8gY29sdW1uTWFuYWdlci5vZmZzZXRXaWR0aCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJ1dHRvbiBwby1pY29uIHBvLWljb24tc2V0dGluZ3MgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIG5vdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWJvZHktZWxsaXBzaXNdPVwiaGlkZVRleHRPdmVyZmxvd1wiXG4gICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQsIGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbHVtblRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNlbGxUZW1wbGF0ZT8udGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRCb29sZWFuTGFiZWwoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGN1cnJlbmN5OiBjb2x1bW4uZm9ybWF0OidzeW1ib2wnOicxLjItMicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBwYXJhIG7Do28gZmljYXIgZW0gYnJhbmNvIG5hcyBsaW5oYXMgZGUgZ2VyZW5jaWFtZW50byAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKSAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctbm8tZGF0YSBwby10YWJsZS1jb2x1bW4tZW1wdHlcIj48L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bW4gTWFuYWdlciAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiIWhhc1Zpc2libGVBY3Rpb25zICYmICFoaWRlQ29sdW1uc01hbmFnZXIgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW5cIlxuICAgICAgICAgID48L3RkPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy10ZW1wbGF0ZS1jb250YWluZXJcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbFwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgIFtwLWRldGFpbF09XCJjb2x1bW5NYXN0ZXJEZXRhaWwuZGV0YWlsXCJcbiAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby1wb3B1cCAjcG9wdXAgW3AtYWN0aW9uc109XCJhY3Rpb25zXCIgW3AtdGFyZ2V0XT1cInBvcHVwVGFyZ2V0XCI+IDwvcG8tcG9wdXA+XG5cbjxuZy10ZW1wbGF0ZSAjcG9UYWJsZUNvbHVtbkRldGFpbCBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIihjb250YWluc01hc3RlckRldGFpbChyb3cpICYmICFoYXNSb3dUZW1wbGF0ZSkgfHwgKGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpICYmIGhhc1Jvd1RlbXBsYXRlKVwiXG4gICAgY2xhc3M9XCJwby1pY29uIHBvLWNsaWNrYWJsZVwiXG4gICAgW2NsYXNzLnBvLWljb24tYXJyb3ctdXBdPVwicm93LiRzaG93RGV0YWlsXCJcbiAgICBbY2xhc3MucG8taWNvbi1hcnJvdy1kb3duXT1cIiFyb3cuJHNob3dEZXRhaWxcIlxuICA+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRSYWRpbyBsZXQtcm93PlxuICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJwby10YWJsZS1yYWRpb1wiIFtjbGFzcy5wby10YWJsZS1yYWRpby1jaGVja2VkXT1cInJvdy4kc2VsZWN0ZWRcIiAvPlxuICA8bGFiZWwgY2xhc3M9XCJwby10YWJsZS1yYWRpby1sYWJlbCBwby1jbGlja2FibGVcIiAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIj48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dENoZWNrYm94IGxldC1yb3c+XG4gIDxwby1jaGVja2JveFxuICAgIG5hbWU9XCJjaGVja2JveFwiXG4gICAgKHAtY2hhbmdlKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICBbcC1jaGVja2JveFZhbHVlXT1cInJvdy4kc2VsZWN0ZWRcIlxuICA+PC9wby1jaGVja2JveD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEhlYWRlclRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxzcGFuXG4gICAgI2NvbHVtbkhlYWRlclxuICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgPlxuICAgIHt7IGNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi11bnNlbGVjdGVkXT1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tZGVzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1hc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gID5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRoSGVpZ2h0PlxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXCIgW3N0eWxlLndpZHRoLnB4XT1cIm5vQ29sdW1uc0hlYWRlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aFwiPlxuICAgIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db2x1bW5zV2l0aG91dEhlaWdodD5cbiAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRlbXBsYXRlIGRlIGHDp8O1ZXMgLS0+XG48bmctdGVtcGxhdGUgI0FjdGlvbnNDb2x1bW5UZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPHRkXG4gICAgKm5nSWY9XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4gcG8tdGFibGUtY29sdW1uLXNpbmdsZS1hY3Rpb25cIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgYWN0aW9uUmlnaHQgPyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSA6ICcnXCJcbiAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImhlaWdodCAmJiAhYWN0aW9uUmlnaHQgPyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkgOiAnJ1wiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiAhYWN0aW9uUmlnaHQgPyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkgOiAnJ1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImZpcnN0QWN0aW9uLnZpc2libGUgIT09IGZhbHNlXCJcbiAgICAgIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbiBwby1jbGlja2FibGVcIlxuICAgICAgW2NsYXNzLnBvLXRhYmxlLWFjdGlvbi1kaXNhYmxlZF09XCJmaXJzdEFjdGlvbi5kaXNhYmxlZCA/IHZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbikgOiBmYWxzZVwiXG4gICAgICAoY2xpY2spPVwiZXhlY3V0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pXCJcbiAgICA+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImZpcnN0QWN0aW9uLmljb25cIiBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24tY29udGVudFwiIFtwLWljb25dPVwiZmlyc3RBY3Rpb24uaWNvblwiPjwvcG8taWNvbj5cbiAgICAgIHt7IGZpcnN0QWN0aW9uLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvdGQ+XG5cbiAgPHRkICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWFjdGlvbnNcIj5cbiAgICA8c3BhbiAjcG9wdXBUYXJnZXQgY2xhc3M9XCJwby1pY29uIHBvLWljb24tbW9yZSBwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAocm93LCBwb3B1cFRhcmdldClcIj48L3NwYW4+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tdGFibGUtY29sdW1uLW1hbmFnZXJcbiAgKm5nSWY9XCIhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgW3AtY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW3AtbWF4LWNvbHVtbnNdPVwibWF4Q29sdW1uc1wiXG4gIFtwLXRhcmdldF09XCJoZWlnaHQgPyBjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQgOiBjb2x1bW5NYW5hZ2VyVGFyZ2V0XCJcbiAgW3AtbGFzdC12aXNpYmxlLWNvbHVtbnMtc2VsZWN0ZWRdPVwibGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWRcIlxuICAocC12aXNpYmxlLWNvbHVtbnMtY2hhbmdlKT1cIm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoJGV2ZW50KVwiXG4gIChwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMpPVwib25DaGFuZ2VWaXNpYmxlQ29sdW1ucygkZXZlbnQpXCJcbiAgW3AtY29sdW1ucy1kZWZhdWx0XT1cImluaXRpYWxDb2x1bW5zXCJcbiAgKHAtaW5pdGlhbC1jb2x1bW5zKT1cIm9uQ29sdW1uUmVzdG9yZU1hbmFnZXIoJGV2ZW50KVwiXG4+XG48L3BvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyPlxuIl19
|