@po-ui/ng-components 17.26.13 → 17.26.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-table/po-table.component.mjs +380 -399
- package/esm2022/lib/services/po-i18n/index.mjs +2 -1
- package/esm2022/lib/services/po-i18n/interfaces/po-i18n-config-context.interface.mjs +2 -0
- package/esm2022/lib/services/po-i18n/interfaces/po-i18n-config.interface.mjs +1 -1
- package/esm2022/lib/services/po-i18n/po-i18n-base.service.mjs +1 -1
- package/esm2022/lib/services/po-i18n/po-i18n-config-injection-token.mjs +1 -1
- package/esm2022/lib/services/po-i18n/po-i18n.module.mjs +7 -8
- package/esm2022/lib/services/po-i18n/po-i18n.service.mjs +26 -3
- package/fesm2022/po-ui-ng-components.mjs +411 -408
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-table/po-table.component.d.ts +1 -0
- package/lib/services/po-i18n/index.d.ts +1 -0
- package/lib/services/po-i18n/interfaces/po-i18n-config-context.interface.d.ts +18 -0
- package/lib/services/po-i18n/interfaces/po-i18n-config.interface.d.ts +2 -1
- package/lib/services/po-i18n/po-i18n-config-injection-token.d.ts +1 -1
- package/lib/services/po-i18n/po-i18n.module.d.ts +1 -2
- package/lib/services/po-i18n/po-i18n.service.d.ts +2 -1
- package/package.json +4 -4
- package/po-ui-ng-components-17.26.14.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/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-17.26.13.tgz +0 -0
|
@@ -384,15 +384,15 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template(rf
|
|
|
384
384
|
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
|
|
385
385
|
const _c19 = (a0, a1) => ({ row: a0, rowIndex: a1 });
|
|
386
386
|
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
387
|
-
const
|
|
387
|
+
const _r108 = i0.ɵɵgetCurrentView();
|
|
388
388
|
i0.ɵɵelementStart(0, "td", 99);
|
|
389
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
389
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r108); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r106 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r106.toggleDetail(row_r93)); });
|
|
390
390
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
391
391
|
i0.ɵɵelementEnd();
|
|
392
392
|
} if (rf & 2) {
|
|
393
|
-
const
|
|
394
|
-
const row_r93 =
|
|
395
|
-
const rowIndex_r94 =
|
|
393
|
+
const ctx_r109 = i0.ɵɵnextContext();
|
|
394
|
+
const row_r93 = ctx_r109.$implicit;
|
|
395
|
+
const rowIndex_r94 = ctx_r109.index;
|
|
396
396
|
i0.ɵɵnextContext(3);
|
|
397
397
|
const _r13 = i0.ɵɵreference(15);
|
|
398
398
|
i0.ɵɵadvance();
|
|
@@ -402,197 +402,181 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_ng_template_0_
|
|
|
402
402
|
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
|
|
403
403
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 100);
|
|
404
404
|
} if (rf & 2) {
|
|
405
|
-
const
|
|
406
|
-
const row_r93 =
|
|
407
|
-
const rowIndex_r94 =
|
|
405
|
+
const ctx_r111 = i0.ɵɵnextContext();
|
|
406
|
+
const row_r93 = ctx_r111.$implicit;
|
|
407
|
+
const rowIndex_r94 = ctx_r111.index;
|
|
408
408
|
i0.ɵɵnextContext(3);
|
|
409
409
|
const _r25 = i0.ɵɵreference(27);
|
|
410
410
|
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
|
|
411
411
|
} }
|
|
412
|
-
function
|
|
413
|
-
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
414
|
-
const _r116 = i0.ɵɵgetCurrentView();
|
|
415
|
-
i0.ɵɵelementStart(0, "td", 99);
|
|
416
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r116); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r114 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r114.toggleDetail(row_r93)); });
|
|
417
|
-
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
418
|
-
i0.ɵɵelementEnd();
|
|
419
|
-
} if (rf & 2) {
|
|
420
|
-
const ctx_r117 = i0.ɵɵnextContext();
|
|
421
|
-
const row_r93 = ctx_r117.$implicit;
|
|
422
|
-
const rowIndex_r94 = ctx_r117.index;
|
|
423
|
-
i0.ɵɵnextContext(3);
|
|
424
|
-
const _r13 = i0.ɵɵreference(15);
|
|
425
|
-
i0.ɵɵadvance();
|
|
426
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
|
|
427
|
-
} }
|
|
428
|
-
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
412
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
429
413
|
i0.ɵɵelementContainer(0);
|
|
430
414
|
} }
|
|
431
|
-
function
|
|
415
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
432
416
|
i0.ɵɵelementStart(0, "span");
|
|
433
|
-
i0.ɵɵtemplate(1,
|
|
417
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
|
|
434
418
|
i0.ɵɵelementEnd();
|
|
435
419
|
} if (rf & 2) {
|
|
436
|
-
const
|
|
420
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
437
421
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
438
|
-
const
|
|
422
|
+
const ctx_r114 = i0.ɵɵnextContext(3);
|
|
439
423
|
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
424
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r114.getTemplate(column_r112))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r114.getCellData(row_r93, column_r112)));
|
|
441
425
|
} }
|
|
442
|
-
function
|
|
426
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
443
427
|
i0.ɵɵelementContainer(0);
|
|
444
428
|
} }
|
|
445
429
|
const _c20 = (a0, a1) => ({ row: a0, column: a1 });
|
|
446
|
-
function
|
|
430
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
447
431
|
i0.ɵɵelementStart(0, "span");
|
|
448
|
-
i0.ɵɵtemplate(1,
|
|
432
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
|
|
449
433
|
i0.ɵɵelementEnd();
|
|
450
434
|
} if (rf & 2) {
|
|
451
|
-
const
|
|
435
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
452
436
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
453
|
-
const
|
|
437
|
+
const ctx_r115 = i0.ɵɵnextContext(3);
|
|
454
438
|
i0.ɵɵadvance();
|
|
455
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
439
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r115.tableCellTemplate == null ? null : ctx_r115.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r93, column_r112));
|
|
456
440
|
} }
|
|
457
|
-
function
|
|
441
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
458
442
|
i0.ɵɵelementStart(0, "span");
|
|
459
443
|
i0.ɵɵtext(1);
|
|
460
444
|
i0.ɵɵelementEnd();
|
|
461
445
|
} if (rf & 2) {
|
|
462
|
-
const
|
|
446
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
463
447
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
464
|
-
const
|
|
448
|
+
const ctx_r116 = i0.ɵɵnextContext(3);
|
|
465
449
|
i0.ɵɵadvance();
|
|
466
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
450
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r116.getBooleanLabel(ctx_r116.getCellData(row_r93, column_r112), column_r112), " ");
|
|
467
451
|
} }
|
|
468
|
-
function
|
|
452
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
469
453
|
i0.ɵɵelementStart(0, "span");
|
|
470
454
|
i0.ɵɵtext(1);
|
|
471
455
|
i0.ɵɵpipe(2, "currency");
|
|
472
456
|
i0.ɵɵelementEnd();
|
|
473
457
|
} if (rf & 2) {
|
|
474
|
-
const
|
|
458
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
475
459
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
476
|
-
const
|
|
460
|
+
const ctx_r117 = i0.ɵɵnextContext(3);
|
|
477
461
|
i0.ɵɵadvance();
|
|
478
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1,
|
|
462
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r117.getCellData(row_r93, column_r112), column_r112.format, "symbol", "1.2-2"), " ");
|
|
479
463
|
} }
|
|
480
|
-
function
|
|
464
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
481
465
|
i0.ɵɵelementStart(0, "span");
|
|
482
466
|
i0.ɵɵtext(1);
|
|
483
467
|
i0.ɵɵpipe(2, "date");
|
|
484
468
|
i0.ɵɵelementEnd();
|
|
485
469
|
} if (rf & 2) {
|
|
486
|
-
const
|
|
470
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
487
471
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
488
|
-
const
|
|
472
|
+
const ctx_r118 = i0.ɵɵnextContext(3);
|
|
489
473
|
i0.ɵɵadvance();
|
|
490
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
474
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r118.getCellData(row_r93, column_r112), column_r112.format || "dd/MM/yyyy"), " ");
|
|
491
475
|
} }
|
|
492
|
-
function
|
|
476
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
493
477
|
i0.ɵɵelementStart(0, "span");
|
|
494
478
|
i0.ɵɵtext(1);
|
|
495
479
|
i0.ɵɵpipe(2, "po_time");
|
|
496
480
|
i0.ɵɵelementEnd();
|
|
497
481
|
} if (rf & 2) {
|
|
498
|
-
const
|
|
482
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
499
483
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
500
|
-
const
|
|
484
|
+
const ctx_r119 = i0.ɵɵnextContext(3);
|
|
501
485
|
i0.ɵɵadvance();
|
|
502
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
486
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r119.getCellData(row_r93, column_r112), column_r112.format || "HH:mm:ss.ffffff"), " ");
|
|
503
487
|
} }
|
|
504
|
-
function
|
|
488
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
505
489
|
i0.ɵɵelementStart(0, "span");
|
|
506
490
|
i0.ɵɵtext(1);
|
|
507
491
|
i0.ɵɵpipe(2, "date");
|
|
508
492
|
i0.ɵɵelementEnd();
|
|
509
493
|
} if (rf & 2) {
|
|
510
|
-
const
|
|
494
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
511
495
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
512
|
-
const
|
|
496
|
+
const ctx_r120 = i0.ɵɵnextContext(3);
|
|
513
497
|
i0.ɵɵadvance();
|
|
514
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
498
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r120.getCellData(row_r93, column_r112), column_r112.format || "dd/MM/yyyy HH:mm:ss"), " ");
|
|
515
499
|
} }
|
|
516
|
-
function
|
|
500
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
517
501
|
i0.ɵɵelementStart(0, "span");
|
|
518
502
|
i0.ɵɵtext(1);
|
|
519
503
|
i0.ɵɵelementEnd();
|
|
520
504
|
} if (rf & 2) {
|
|
521
|
-
const
|
|
505
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
522
506
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
523
|
-
const
|
|
507
|
+
const ctx_r121 = i0.ɵɵnextContext(3);
|
|
524
508
|
i0.ɵɵadvance();
|
|
525
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
509
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r121.formatNumber(ctx_r121.getCellData(row_r93, column_r112), column_r112.format), " ");
|
|
526
510
|
} }
|
|
527
|
-
function
|
|
528
|
-
const
|
|
511
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
const _r147 = i0.ɵɵgetCurrentView();
|
|
529
513
|
i0.ɵɵelementStart(0, "po-table-column-link", 107);
|
|
530
|
-
i0.ɵɵlistener("click", function
|
|
514
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r147); const column_r112 = i0.ɵɵnextContext().$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r145 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r145.onClickLink($event, row_r93, column_r112)); });
|
|
531
515
|
i0.ɵɵelementEnd();
|
|
532
516
|
} if (rf & 2) {
|
|
533
|
-
const
|
|
517
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
534
518
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
535
|
-
const
|
|
536
|
-
i0.ɵɵproperty("p-action",
|
|
519
|
+
const ctx_r122 = i0.ɵɵnextContext(3);
|
|
520
|
+
i0.ɵɵproperty("p-action", column_r112.action)("p-disabled", ctx_r122.checkDisabled(row_r93, column_r112))("p-link", row_r93[column_r112.link])("p-row", row_r93)("p-value", ctx_r122.getCellData(row_r93, column_r112));
|
|
537
521
|
} }
|
|
538
|
-
function
|
|
522
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
539
523
|
i0.ɵɵelement(0, "po-table-column-icon", 108);
|
|
540
524
|
} if (rf & 2) {
|
|
541
|
-
const
|
|
525
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
542
526
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
543
|
-
const
|
|
544
|
-
i0.ɵɵproperty("p-column",
|
|
527
|
+
const ctx_r123 = i0.ɵɵnextContext(3);
|
|
528
|
+
i0.ɵɵproperty("p-column", column_r112)("p-icons", ctx_r123.getColumnIcons(row_r93, column_r112))("p-row", row_r93);
|
|
545
529
|
} }
|
|
546
|
-
function
|
|
530
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
547
531
|
i0.ɵɵelementStart(0, "span");
|
|
548
532
|
i0.ɵɵelement(1, "po-table-subtitle-circle", 109);
|
|
549
533
|
i0.ɵɵelementEnd();
|
|
550
534
|
} if (rf & 2) {
|
|
551
|
-
const
|
|
535
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
552
536
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
553
|
-
const
|
|
537
|
+
const ctx_r124 = i0.ɵɵnextContext(3);
|
|
554
538
|
i0.ɵɵadvance();
|
|
555
|
-
i0.ɵɵproperty("p-subtitle",
|
|
539
|
+
i0.ɵɵproperty("p-subtitle", ctx_r124.getSubtitleColumn(row_r93, column_r112));
|
|
556
540
|
} }
|
|
557
|
-
function
|
|
541
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
558
542
|
i0.ɵɵelementStart(0, "span");
|
|
559
543
|
i0.ɵɵelement(1, "po-table-column-label", 110);
|
|
560
544
|
i0.ɵɵelementEnd();
|
|
561
545
|
} if (rf & 2) {
|
|
562
|
-
const
|
|
546
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
563
547
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
564
|
-
const
|
|
548
|
+
const ctx_r125 = i0.ɵɵnextContext(3);
|
|
565
549
|
i0.ɵɵadvance();
|
|
566
|
-
i0.ɵɵproperty("p-value",
|
|
550
|
+
i0.ɵɵproperty("p-value", ctx_r125.getColumnLabel(row_r93, column_r112));
|
|
567
551
|
} }
|
|
568
|
-
function
|
|
552
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
569
553
|
i0.ɵɵelementStart(0, "span");
|
|
570
554
|
i0.ɵɵtext(1);
|
|
571
555
|
i0.ɵɵelementEnd();
|
|
572
556
|
} if (rf & 2) {
|
|
573
|
-
const
|
|
557
|
+
const column_r112 = i0.ɵɵnextContext().$implicit;
|
|
574
558
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
575
|
-
const
|
|
559
|
+
const ctx_r126 = i0.ɵɵnextContext(3);
|
|
576
560
|
i0.ɵɵadvance();
|
|
577
|
-
i0.ɵɵtextInterpolate(
|
|
561
|
+
i0.ɵɵtextInterpolate(ctx_r126.getCellData(row_r93, column_r112));
|
|
578
562
|
} }
|
|
579
|
-
function
|
|
580
|
-
const
|
|
563
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
const _r160 = i0.ɵɵgetCurrentView();
|
|
581
565
|
i0.ɵɵelementStart(0, "td", 101);
|
|
582
|
-
i0.ɵɵlistener("click", function
|
|
566
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r160); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r159 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r159.hasSelectableRow() ? ctx_r159.selectRow(row_r93) : "javascript:;"); });
|
|
583
567
|
i0.ɵɵelementStart(1, "div", 102);
|
|
584
|
-
i0.ɵɵlistener("mouseenter", function
|
|
585
|
-
i0.ɵɵtemplate(2,
|
|
568
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r160); const column_r112 = restoredCtx.$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r162 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r162.tooltipMouseEnter($event, column_r112, row_r93)); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r160); const ctx_r164 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r164.tooltipMouseLeave()); });
|
|
569
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_14_Template, 2, 1, "span", 106);
|
|
586
570
|
i0.ɵɵelementEnd()();
|
|
587
571
|
} if (rf & 2) {
|
|
588
|
-
const
|
|
572
|
+
const column_r112 = ctx.$implicit;
|
|
589
573
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
590
|
-
const
|
|
591
|
-
i0.ɵɵstyleProp("width",
|
|
592
|
-
i0.ɵɵclassProp("po-table-column",
|
|
593
|
-
i0.ɵɵproperty("pFrozenColumn",
|
|
574
|
+
const ctx_r98 = i0.ɵɵnextContext(3);
|
|
575
|
+
i0.ɵɵstyleProp("width", column_r112.width)("max-width", column_r112.width)("min-width", column_r112.width);
|
|
576
|
+
i0.ɵɵclassProp("po-table-column", column_r112.type !== "icon")("po-table-column-right", column_r112.type === "currency" || column_r112.type === "number")("po-table-column-center", column_r112.type === "subtitle")("po-table-column-icons", column_r112.type === "icon");
|
|
577
|
+
i0.ɵɵproperty("pFrozenColumn", column_r112.fixed)("ngClass", ctx_r98.getClassColor(row_r93, column_r112));
|
|
594
578
|
i0.ɵɵadvance();
|
|
595
|
-
i0.ɵɵproperty("ngSwitch",
|
|
579
|
+
i0.ɵɵproperty("ngSwitch", column_r112.type)("p-tooltip", ctx_r98.tooltipText)("p-append-in-body", true);
|
|
596
580
|
i0.ɵɵadvance();
|
|
597
581
|
i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
|
|
598
582
|
i0.ɵɵadvance();
|
|
@@ -618,67 +602,67 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template(rf
|
|
|
618
602
|
i0.ɵɵadvance();
|
|
619
603
|
i0.ɵɵproperty("ngSwitchCase", "label");
|
|
620
604
|
} }
|
|
621
|
-
function
|
|
622
|
-
function
|
|
623
|
-
const
|
|
605
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_ng_template_1_Template(rf, ctx) { }
|
|
606
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
607
|
+
const _r169 = i0.ɵɵgetCurrentView();
|
|
624
608
|
i0.ɵɵelementStart(0, "td", 99);
|
|
625
|
-
i0.ɵɵlistener("click", function
|
|
626
|
-
i0.ɵɵtemplate(1,
|
|
609
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r169); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r167 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r167.toggleDetail(row_r93)); });
|
|
610
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
627
611
|
i0.ɵɵelementEnd();
|
|
628
612
|
} if (rf & 2) {
|
|
629
|
-
const
|
|
630
|
-
const row_r93 =
|
|
631
|
-
const rowIndex_r94 =
|
|
613
|
+
const ctx_r170 = i0.ɵɵnextContext();
|
|
614
|
+
const row_r93 = ctx_r170.$implicit;
|
|
615
|
+
const rowIndex_r94 = ctx_r170.index;
|
|
632
616
|
i0.ɵɵnextContext(3);
|
|
633
617
|
const _r13 = i0.ɵɵreference(15);
|
|
634
618
|
i0.ɵɵadvance();
|
|
635
619
|
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
|
|
636
620
|
} }
|
|
637
|
-
function
|
|
638
|
-
function
|
|
639
|
-
i0.ɵɵtemplate(0,
|
|
621
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_ng_template_0_Template(rf, ctx) { }
|
|
622
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_Template(rf, ctx) { if (rf & 1) {
|
|
623
|
+
i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_ng_template_0_Template, 0, 0, "ng-template", 100);
|
|
640
624
|
} if (rf & 2) {
|
|
641
|
-
const
|
|
642
|
-
const row_r93 =
|
|
643
|
-
const rowIndex_r94 =
|
|
625
|
+
const ctx_r172 = i0.ɵɵnextContext();
|
|
626
|
+
const row_r93 = ctx_r172.$implicit;
|
|
627
|
+
const rowIndex_r94 = ctx_r172.index;
|
|
644
628
|
i0.ɵɵnextContext(3);
|
|
645
629
|
const _r25 = i0.ɵɵreference(27);
|
|
646
630
|
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
|
|
647
631
|
} }
|
|
648
|
-
function
|
|
632
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_ng_template_2_Template(rf, ctx) { }
|
|
649
633
|
const _c21 = (a0, a1) => ({ $implicit: a0, rowIndex: a1 });
|
|
650
|
-
function
|
|
634
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_Template(rf, ctx) { if (rf & 1) {
|
|
651
635
|
i0.ɵɵelementStart(0, "tr")(1, "td", 111);
|
|
652
|
-
i0.ɵɵtemplate(2,
|
|
636
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_ng_template_2_Template, 0, 0, "ng-template", 100);
|
|
653
637
|
i0.ɵɵelementEnd()();
|
|
654
638
|
} if (rf & 2) {
|
|
655
|
-
const
|
|
656
|
-
const row_r93 =
|
|
657
|
-
const rowIndex_r94 =
|
|
658
|
-
const
|
|
639
|
+
const ctx_r174 = i0.ɵɵnextContext();
|
|
640
|
+
const row_r93 = ctx_r174.$implicit;
|
|
641
|
+
const rowIndex_r94 = ctx_r174.index;
|
|
642
|
+
const ctx_r101 = i0.ɵɵnextContext(3);
|
|
659
643
|
i0.ɵɵadvance();
|
|
660
|
-
i0.ɵɵproperty("colSpan",
|
|
644
|
+
i0.ɵɵproperty("colSpan", ctx_r101.columnCountForMasterDetail);
|
|
661
645
|
i0.ɵɵadvance();
|
|
662
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
646
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r101.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r93, rowIndex_r94));
|
|
663
647
|
} }
|
|
664
|
-
function
|
|
665
|
-
const
|
|
648
|
+
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
|
|
649
|
+
const _r176 = i0.ɵɵgetCurrentView();
|
|
666
650
|
i0.ɵɵelementStart(0, "tr")(1, "td", 112)(2, "po-table-detail", 113);
|
|
667
|
-
i0.ɵɵlistener("p-select-row", function
|
|
651
|
+
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r176); const ctx_r175 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r175.selectDetailRow($event)); });
|
|
668
652
|
i0.ɵɵelementEnd()()();
|
|
669
653
|
} if (rf & 2) {
|
|
670
654
|
const row_r93 = i0.ɵɵnextContext().$implicit;
|
|
671
|
-
const
|
|
655
|
+
const ctx_r102 = i0.ɵɵnextContext(3);
|
|
672
656
|
i0.ɵɵadvance();
|
|
673
|
-
i0.ɵɵproperty("colSpan",
|
|
657
|
+
i0.ɵɵproperty("colSpan", ctx_r102.columnCountForMasterDetail);
|
|
674
658
|
i0.ɵɵadvance();
|
|
675
|
-
i0.ɵɵproperty("p-selectable",
|
|
659
|
+
i0.ɵɵproperty("p-selectable", ctx_r102.selectable && !ctx_r102.detailHideSelect)("p-detail", ctx_r102.columnMasterDetail.detail)("p-items", row_r93[ctx_r102.nameColumnDetail])("p-parent-row", row_r93);
|
|
676
660
|
} }
|
|
677
661
|
function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx) { if (rf & 1) {
|
|
678
662
|
i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 95);
|
|
679
|
-
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template,
|
|
663
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template, 15, 31, "td", 98)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template, 2, 5, "td", 97)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_Template, 1, 5, null, 43);
|
|
680
664
|
i0.ɵɵelementEnd();
|
|
681
|
-
i0.ɵɵtemplate(
|
|
665
|
+
i0.ɵɵtemplate(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_Template, 3, 6, "tr", 43)(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template, 3, 5, "tr", 43);
|
|
682
666
|
i0.ɵɵelementEnd();
|
|
683
667
|
} if (rf & 2) {
|
|
684
668
|
const row_r93 = ctx.$implicit;
|
|
@@ -689,12 +673,10 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx
|
|
|
689
673
|
i0.ɵɵadvance();
|
|
690
674
|
i0.ɵɵproperty("ngIf", ctx_r92.selectable);
|
|
691
675
|
i0.ɵɵadvance();
|
|
692
|
-
i0.ɵɵproperty("ngIf", ctx_r92.columnMasterDetail && !ctx_r92.hideDetail && !ctx_r92.hasRowTemplate);
|
|
676
|
+
i0.ɵɵproperty("ngIf", ctx_r92.columnMasterDetail && !ctx_r92.hideDetail && !ctx_r92.hasRowTemplate || ctx_r92.hasRowTemplate && !ctx_r92.hasRowTemplateWithArrowDirectionRight);
|
|
693
677
|
i0.ɵɵadvance();
|
|
694
678
|
i0.ɵɵproperty("ngIf", !ctx_r92.actionRight && (ctx_r92.visibleActions.length > 1 || ctx_r92.isSingleAction));
|
|
695
679
|
i0.ɵɵadvance();
|
|
696
|
-
i0.ɵɵproperty("ngIf", ctx_r92.hasRowTemplate && !ctx_r92.hasRowTemplateWithArrowDirectionRight);
|
|
697
|
-
i0.ɵɵadvance();
|
|
698
680
|
i0.ɵɵproperty("ngForOf", ctx_r92.mainColumns)("ngForTrackBy", ctx_r92.trackBy);
|
|
699
681
|
i0.ɵɵadvance();
|
|
700
682
|
i0.ɵɵproperty("ngIf", ctx_r92.hasRowTemplateWithArrowDirectionRight);
|
|
@@ -707,7 +689,7 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx
|
|
|
707
689
|
} }
|
|
708
690
|
function PoTableComponent_ng_template_8_ng_container_16_Template(rf, ctx) { if (rf & 1) {
|
|
709
691
|
i0.ɵɵelementContainerStart(0);
|
|
710
|
-
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template,
|
|
692
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template, 10, 11, "tbody", 94);
|
|
711
693
|
i0.ɵɵelementContainerEnd();
|
|
712
694
|
} if (rf & 2) {
|
|
713
695
|
const ctx_r70 = i0.ɵɵnextContext(2);
|
|
@@ -717,9 +699,9 @@ function PoTableComponent_ng_template_8_ng_container_16_Template(rf, ctx) { if (
|
|
|
717
699
|
const _c22 = (a0, a1, a2, a3, a4) => ({ "po-table-interactive": a0, "po-table-selectable": a1, "po-table-striped": a2, "po-table-data-fixed-columns": a3, "po-table-text-wrap-enabled": a4 });
|
|
718
700
|
const _c23 = (a0, a1) => ({ "no-hover": a0, "po-table-column-drag": a1 });
|
|
719
701
|
function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
720
|
-
const
|
|
702
|
+
const _r179 = i0.ɵɵgetCurrentView();
|
|
721
703
|
i0.ɵɵelementStart(0, "table", 56, 57)(2, "thead")(3, "tr", 58);
|
|
722
|
-
i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_8_Template_tr_cdkDropListDropped_3_listener($event) { i0.ɵɵrestoreView(
|
|
704
|
+
i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_8_Template_tr_cdkDropListDropped_3_listener($event) { i0.ɵɵrestoreView(_r179); const ctx_r178 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r178.drop($event)); });
|
|
723
705
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_th_4_Template, 3, 5, "th", 59)(5, PoTableComponent_ng_template_8_th_5_Template, 1, 0, "th", 60)(6, PoTableComponent_ng_template_8_th_6_Template, 2, 4, "th", 61)(7, PoTableComponent_ng_template_8_th_7_Template, 3, 3, "th", 62)(8, PoTableComponent_ng_template_8_ng_container_8_Template, 1, 0, "ng-container", 63)(9, PoTableComponent_ng_template_8_ng_template_9_Template, 1, 2, "ng-template", null, 64, i0.ɵɵtemplateRefExtractor)(11, PoTableComponent_ng_template_8_ng_template_11_Template, 1, 2, "ng-template", null, 65, i0.ɵɵtemplateRefExtractor)(13, PoTableComponent_ng_template_8_th_13_Template, 1, 0, "th", 60)(14, PoTableComponent_ng_template_8_th_14_Template, 1, 4, "th", 66);
|
|
724
706
|
i0.ɵɵelementEnd()();
|
|
725
707
|
i0.ɵɵtemplate(15, PoTableComponent_ng_template_8_tbody_15_Template, 5, 2, "tbody", 67)(16, PoTableComponent_ng_template_8_ng_container_16_Template, 2, 2, "ng-container", 43);
|
|
@@ -738,7 +720,7 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
738
720
|
i0.ɵɵadvance();
|
|
739
721
|
i0.ɵɵproperty("ngIf", ctx_r7.hasSelectableColumn);
|
|
740
722
|
i0.ɵɵadvance();
|
|
741
|
-
i0.ɵɵproperty("ngIf", (ctx_r7.hasMasterDetailColumn || ctx_r7.hasRowTemplate) && !ctx_r7.hasRowTemplateWithArrowDirectionRight);
|
|
723
|
+
i0.ɵɵproperty("ngIf", (ctx_r7.hasMasterDetailColumn || ctx_r7.hasRowTemplate) && ctx_r7.hasMainColumns && !ctx_r7.hasRowTemplateWithArrowDirectionRight);
|
|
742
724
|
i0.ɵɵadvance();
|
|
743
725
|
i0.ɵɵproperty("ngIf", !ctx_r7.actionRight && (ctx_r7.visibleActions.length > 1 || ctx_r7.isSingleAction));
|
|
744
726
|
i0.ɵɵadvance();
|
|
@@ -746,7 +728,7 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
746
728
|
i0.ɵɵadvance();
|
|
747
729
|
i0.ɵɵproperty("ngIf", ctx_r7.isDraggable || ctx_r7.hasSomeFixed())("ngIfThen", _r64)("ngIfElse", _r66);
|
|
748
730
|
i0.ɵɵadvance(5);
|
|
749
|
-
i0.ɵɵproperty("ngIf", ctx_r7.hasRowTemplateWithArrowDirectionRight && (ctx_r7.hasVisibleActions || ctx_r7.hideColumnsManager));
|
|
731
|
+
i0.ɵɵproperty("ngIf", ctx_r7.hasRowTemplateWithArrowDirectionRight && (ctx_r7.hasVisibleActions || ctx_r7.hideColumnsManager) && ctx_r7.hasMainColumns);
|
|
750
732
|
i0.ɵɵadvance();
|
|
751
733
|
i0.ɵɵproperty("ngIf", ctx_r7.hasVisibleActions && ctx_r7.actionRight && (ctx_r7.visibleActions.length > 1 || ctx_r7.isSingleAction));
|
|
752
734
|
i0.ɵɵadvance();
|
|
@@ -755,25 +737,25 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
755
737
|
i0.ɵɵproperty("ngIf", ctx_r7.hasMainColumns);
|
|
756
738
|
} }
|
|
757
739
|
function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
|
|
758
|
-
const
|
|
740
|
+
const _r196 = i0.ɵɵgetCurrentView();
|
|
759
741
|
i0.ɵɵelementStart(0, "po-checkbox", 70);
|
|
760
|
-
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(
|
|
742
|
+
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r196); const ctx_r195 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r195.selectAllRows()); });
|
|
761
743
|
i0.ɵɵelementEnd();
|
|
762
744
|
} if (rf & 2) {
|
|
763
|
-
const
|
|
764
|
-
i0.ɵɵproperty("p-checkboxValue",
|
|
745
|
+
const ctx_r194 = i0.ɵɵnextContext(3);
|
|
746
|
+
i0.ɵɵproperty("p-checkboxValue", ctx_r194.selectAll === null ? "mixed" : ctx_r194.selectAll);
|
|
765
747
|
} }
|
|
766
748
|
function PoTableComponent_ng_template_10_th_5_Template(rf, ctx) { if (rf & 1) {
|
|
767
749
|
i0.ɵɵelementStart(0, "th", 68)(1, "div");
|
|
768
750
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template, 1, 1, "po-checkbox", 69);
|
|
769
751
|
i0.ɵɵelementEnd()();
|
|
770
752
|
} if (rf & 2) {
|
|
771
|
-
const
|
|
772
|
-
i0.ɵɵstyleProp("pointer-events",
|
|
753
|
+
const ctx_r181 = i0.ɵɵnextContext(2);
|
|
754
|
+
i0.ɵɵstyleProp("pointer-events", ctx_r181.hideSelectAll ? "none" : "auto");
|
|
773
755
|
i0.ɵɵadvance();
|
|
774
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner",
|
|
756
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r181.height);
|
|
775
757
|
i0.ɵɵadvance();
|
|
776
|
-
i0.ɵɵproperty("ngIf", !
|
|
758
|
+
i0.ɵɵproperty("ngIf", !ctx_r181.hideSelectAll);
|
|
777
759
|
} }
|
|
778
760
|
function PoTableComponent_ng_template_10_th_6_Template(rf, ctx) { if (rf & 1) {
|
|
779
761
|
i0.ɵɵelement(0, "th", 71);
|
|
@@ -781,8 +763,8 @@ function PoTableComponent_ng_template_10_th_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
781
763
|
function PoTableComponent_ng_template_10_th_7_Template(rf, ctx) { if (rf & 1) {
|
|
782
764
|
i0.ɵɵelement(0, "th", null, 72);
|
|
783
765
|
} if (rf & 2) {
|
|
784
|
-
const
|
|
785
|
-
i0.ɵɵclassProp("po-table-header-master-detail", !
|
|
766
|
+
const ctx_r183 = i0.ɵɵnextContext(2);
|
|
767
|
+
i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r183.isSingleAction)("po-table-header-single-action", ctx_r183.isSingleAction);
|
|
786
768
|
} }
|
|
787
769
|
function PoTableComponent_ng_template_10_th_8_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
788
770
|
i0.ɵɵelementContainer(0);
|
|
@@ -792,11 +774,11 @@ function PoTableComponent_ng_template_10_th_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
792
774
|
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_th_8_ng_container_2_Template, 1, 0, "ng-container", 63);
|
|
793
775
|
i0.ɵɵelementEnd();
|
|
794
776
|
} if (rf & 2) {
|
|
795
|
-
const
|
|
777
|
+
const ctx_r184 = i0.ɵɵnextContext(2);
|
|
796
778
|
const _r21 = i0.ɵɵreference(23);
|
|
797
779
|
const _r23 = i0.ɵɵreference(25);
|
|
798
780
|
i0.ɵɵadvance(2);
|
|
799
|
-
i0.ɵɵproperty("ngIf",
|
|
781
|
+
i0.ɵɵproperty("ngIf", ctx_r184.height)("ngIfThen", _r21)("ngIfElse", _r23);
|
|
800
782
|
} }
|
|
801
783
|
function PoTableComponent_ng_template_10_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
802
784
|
i0.ɵɵelementContainer(0);
|
|
@@ -815,75 +797,75 @@ function PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_Temp
|
|
|
815
797
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_po_icon_1_Template, 1, 0, "po-icon", 79)(2, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4__svg_svg_2_Template, 7, 0, "svg", 80);
|
|
816
798
|
i0.ɵɵelementContainerEnd();
|
|
817
799
|
} if (rf & 2) {
|
|
818
|
-
const
|
|
800
|
+
const ctx_r203 = i0.ɵɵnextContext(4);
|
|
819
801
|
i0.ɵɵadvance();
|
|
820
|
-
i0.ɵɵproperty("ngIf",
|
|
802
|
+
i0.ɵɵproperty("ngIf", ctx_r203.iconNameLib === "PhosphorIcon");
|
|
821
803
|
i0.ɵɵadvance();
|
|
822
|
-
i0.ɵɵproperty("ngIf",
|
|
804
|
+
i0.ɵɵproperty("ngIf", ctx_r203.iconNameLib === "PoIcon");
|
|
823
805
|
} }
|
|
824
806
|
function PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
825
807
|
i0.ɵɵelementContainer(0);
|
|
826
808
|
} }
|
|
827
809
|
function PoTableComponent_ng_template_10_ng_template_10_th_0_Template(rf, ctx) { if (rf & 1) {
|
|
828
|
-
const
|
|
810
|
+
const _r208 = i0.ɵɵgetCurrentView();
|
|
829
811
|
i0.ɵɵelementStart(0, "th", 76);
|
|
830
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_10_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
812
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_10_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r208); const column_r201 = restoredCtx.$implicit; const ctx_r207 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r207.sortColumn(column_r201)); });
|
|
831
813
|
i0.ɵɵpipe(1, "lowercase");
|
|
832
814
|
i0.ɵɵpipe(2, "titlecase");
|
|
833
815
|
i0.ɵɵelementStart(3, "div", 77);
|
|
834
816
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_Template, 3, 2, "ng-container", 43)(5, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_5_Template, 1, 0, "ng-container", 78);
|
|
835
817
|
i0.ɵɵelementEnd()();
|
|
836
818
|
} if (rf & 2) {
|
|
837
|
-
const
|
|
838
|
-
const
|
|
819
|
+
const column_r201 = ctx.$implicit;
|
|
820
|
+
const ctx_r200 = i0.ɵɵnextContext(3);
|
|
839
821
|
const _r19 = i0.ɵɵreference(21);
|
|
840
|
-
i0.ɵɵstyleProp("width",
|
|
841
|
-
i0.ɵɵclassProp("po-clickable",
|
|
842
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(30, _c16,
|
|
843
|
-
i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 26,
|
|
822
|
+
i0.ɵɵstyleProp("width", column_r201.width)("max-width", column_r201.width)("min-width", column_r201.width);
|
|
823
|
+
i0.ɵɵclassProp("po-clickable", ctx_r200.sort && column_r201.sortable !== false || ctx_r200.hasService)("po-table-header-subtitle", column_r201.type === "subtitle")("po-table-column-drag-box", ctx_r200.isDraggable);
|
|
824
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(30, _c16, ctx_r200.sort && ctx_r200.JSON.stringify(ctx_r200.sortedColumn == null ? null : ctx_r200.sortedColumn.property) === ctx_r200.JSON.stringify(column_r201) && (ctx_r200.sortedColumn.ascending || !ctx_r200.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(32, _c17, !ctx_r200.hasItems ? "100%" : ctx_r200.applyFixedColumns() ? column_r201.width : "auto"))("cdkDragDisabled", column_r201.fixed ? "true" : "false")("pFrozenColumn", column_r201.fixed);
|
|
825
|
+
i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 26, column_r201.label || i0.ɵɵpipeBind1(2, 28, column_r201.property)));
|
|
844
826
|
i0.ɵɵadvance(3);
|
|
845
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner",
|
|
827
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r200.height)("po-table-header-flex-right", column_r201.type === "currency" || column_r201.type === "number")("po-table-header-flex-center", column_r201.type === "subtitle");
|
|
846
828
|
i0.ɵɵadvance();
|
|
847
|
-
i0.ɵɵproperty("ngIf",
|
|
829
|
+
i0.ɵɵproperty("ngIf", ctx_r200.isDraggable && !column_r201.fixed);
|
|
848
830
|
i0.ɵɵadvance();
|
|
849
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(34, _c18,
|
|
831
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(34, _c18, column_r201));
|
|
850
832
|
} }
|
|
851
833
|
function PoTableComponent_ng_template_10_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
852
834
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_template_10_th_0_Template, 6, 36, "th", 75);
|
|
853
835
|
} if (rf & 2) {
|
|
854
|
-
const
|
|
855
|
-
i0.ɵɵproperty("ngForOf",
|
|
836
|
+
const ctx_r186 = i0.ɵɵnextContext(2);
|
|
837
|
+
i0.ɵɵproperty("ngForOf", ctx_r186.mainColumns)("ngForTrackBy", ctx_r186.trackBy);
|
|
856
838
|
} }
|
|
857
839
|
function PoTableComponent_ng_template_10_ng_template_12_th_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
858
840
|
i0.ɵɵelementContainer(0);
|
|
859
841
|
} }
|
|
860
842
|
function PoTableComponent_ng_template_10_ng_template_12_th_0_Template(rf, ctx) { if (rf & 1) {
|
|
861
|
-
const
|
|
843
|
+
const _r214 = i0.ɵɵgetCurrentView();
|
|
862
844
|
i0.ɵɵelementStart(0, "th", 121);
|
|
863
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_12_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
845
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_12_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r214); const column_r210 = restoredCtx.$implicit; const ctx_r213 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r213.sortColumn(column_r210)); });
|
|
864
846
|
i0.ɵɵpipe(1, "lowercase");
|
|
865
847
|
i0.ɵɵpipe(2, "titlecase");
|
|
866
848
|
i0.ɵɵelementStart(3, "div", 77);
|
|
867
849
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_10_ng_template_12_th_0_ng_container_4_Template, 1, 0, "ng-container", 78);
|
|
868
850
|
i0.ɵɵelementEnd()();
|
|
869
851
|
} if (rf & 2) {
|
|
870
|
-
const
|
|
871
|
-
const
|
|
852
|
+
const column_r210 = ctx.$implicit;
|
|
853
|
+
const ctx_r209 = i0.ɵɵnextContext(3);
|
|
872
854
|
const _r19 = i0.ɵɵreference(21);
|
|
873
|
-
i0.ɵɵstyleProp("width",
|
|
874
|
-
i0.ɵɵclassProp("po-clickable",
|
|
875
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(26, _c16,
|
|
876
|
-
i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 22,
|
|
855
|
+
i0.ɵɵstyleProp("width", column_r210.width)("max-width", column_r210.width)("min-width", column_r210.width);
|
|
856
|
+
i0.ɵɵclassProp("po-clickable", ctx_r209.sort && column_r210.sortable !== false || ctx_r209.hasService)("po-table-header-subtitle", column_r210.type === "subtitle");
|
|
857
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(26, _c16, ctx_r209.sort && ctx_r209.JSON.stringify(ctx_r209.sortedColumn == null ? null : ctx_r209.sortedColumn.property) === ctx_r209.JSON.stringify(column_r210) && (ctx_r209.sortedColumn.ascending || !ctx_r209.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(28, _c17, !ctx_r209.hasItems ? "100%" : ctx_r209.applyFixedColumns() ? column_r210.width : "auto"))("pFrozenColumn", column_r210.fixed);
|
|
858
|
+
i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 22, column_r210.label || i0.ɵɵpipeBind1(2, 24, column_r210.property)));
|
|
877
859
|
i0.ɵɵadvance(3);
|
|
878
|
-
i0.ɵɵclassProp("po-table-header-fixed-inner",
|
|
860
|
+
i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r209.height)("po-table-header-flex-right", column_r210.type === "currency" || column_r210.type === "number")("po-table-header-flex-center", column_r210.type === "subtitle");
|
|
879
861
|
i0.ɵɵadvance();
|
|
880
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(30, _c18,
|
|
862
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(30, _c18, column_r210));
|
|
881
863
|
} }
|
|
882
864
|
function PoTableComponent_ng_template_10_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
883
865
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_template_12_th_0_Template, 5, 32, "th", 120);
|
|
884
866
|
} if (rf & 2) {
|
|
885
|
-
const
|
|
886
|
-
i0.ɵɵproperty("ngForOf",
|
|
867
|
+
const ctx_r188 = i0.ɵɵnextContext(2);
|
|
868
|
+
i0.ɵɵproperty("ngForOf", ctx_r188.mainColumns)("ngForTrackBy", ctx_r188.trackBy);
|
|
887
869
|
} }
|
|
888
870
|
function PoTableComponent_ng_template_10_th_14_Template(rf, ctx) { if (rf & 1) {
|
|
889
871
|
i0.ɵɵelement(0, "th", 71);
|
|
@@ -891,19 +873,19 @@ function PoTableComponent_ng_template_10_th_14_Template(rf, ctx) { if (rf & 1) {
|
|
|
891
873
|
function PoTableComponent_ng_template_10_th_15_Template(rf, ctx) { if (rf & 1) {
|
|
892
874
|
i0.ɵɵelement(0, "th");
|
|
893
875
|
} if (rf & 2) {
|
|
894
|
-
const
|
|
895
|
-
i0.ɵɵclassProp("po-table-header-single-action",
|
|
876
|
+
const ctx_r191 = i0.ɵɵnextContext(2);
|
|
877
|
+
i0.ɵɵclassProp("po-table-header-single-action", ctx_r191.isSingleAction)("po-table-header-actions", !ctx_r191.isSingleAction);
|
|
896
878
|
} }
|
|
897
879
|
function PoTableComponent_ng_template_10_tbody_16_Template(rf, ctx) { if (rf & 1) {
|
|
898
880
|
i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 92)(2, "td", 93)(3, "span");
|
|
899
881
|
i0.ɵɵtext(4);
|
|
900
882
|
i0.ɵɵelementEnd()()()();
|
|
901
883
|
} if (rf & 2) {
|
|
902
|
-
const
|
|
884
|
+
const ctx_r192 = i0.ɵɵnextContext(2);
|
|
903
885
|
i0.ɵɵadvance(2);
|
|
904
|
-
i0.ɵɵproperty("colSpan",
|
|
886
|
+
i0.ɵɵproperty("colSpan", ctx_r192.columnCount);
|
|
905
887
|
i0.ɵɵadvance(2);
|
|
906
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
888
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r192.literals.noData, " ");
|
|
907
889
|
} }
|
|
908
890
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
909
891
|
i0.ɵɵelementContainer(0);
|
|
@@ -913,223 +895,207 @@ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template(r
|
|
|
913
895
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 78);
|
|
914
896
|
i0.ɵɵelementEnd();
|
|
915
897
|
} if (rf & 2) {
|
|
916
|
-
const
|
|
917
|
-
const
|
|
898
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
899
|
+
const ctx_r218 = i0.ɵɵnextContext(3);
|
|
918
900
|
const _r15 = i0.ɵɵreference(17);
|
|
919
901
|
const _r17 = i0.ɵɵreference(19);
|
|
920
902
|
i0.ɵɵadvance();
|
|
921
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
903
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r218.singleSelect ? _r15 : _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, row_r216));
|
|
922
904
|
} }
|
|
923
905
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
|
|
924
906
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
925
|
-
const
|
|
907
|
+
const _r231 = i0.ɵɵgetCurrentView();
|
|
926
908
|
i0.ɵɵelementStart(0, "td", 99);
|
|
927
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(
|
|
909
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r231); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r229 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r229.toggleDetail(row_r216)); });
|
|
928
910
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
929
911
|
i0.ɵɵelementEnd();
|
|
930
912
|
} if (rf & 2) {
|
|
931
|
-
const
|
|
932
|
-
const
|
|
933
|
-
const
|
|
913
|
+
const ctx_r232 = i0.ɵɵnextContext();
|
|
914
|
+
const row_r216 = ctx_r232.$implicit;
|
|
915
|
+
const rowIndex_r217 = ctx_r232.index;
|
|
934
916
|
i0.ɵɵnextContext(3);
|
|
935
917
|
const _r13 = i0.ɵɵreference(15);
|
|
936
918
|
i0.ɵɵadvance();
|
|
937
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19,
|
|
919
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
|
|
938
920
|
} }
|
|
939
921
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_ng_template_0_Template(rf, ctx) { }
|
|
940
922
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
|
|
941
923
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 100);
|
|
942
924
|
} if (rf & 2) {
|
|
943
|
-
const
|
|
944
|
-
const
|
|
945
|
-
const
|
|
925
|
+
const ctx_r234 = i0.ɵɵnextContext();
|
|
926
|
+
const row_r216 = ctx_r234.$implicit;
|
|
927
|
+
const rowIndex_r217 = ctx_r234.index;
|
|
946
928
|
i0.ɵɵnextContext(3);
|
|
947
929
|
const _r25 = i0.ɵɵreference(27);
|
|
948
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19,
|
|
949
|
-
} }
|
|
950
|
-
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
|
|
951
|
-
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
952
|
-
const _r245 = i0.ɵɵgetCurrentView();
|
|
953
|
-
i0.ɵɵelementStart(0, "td", 99);
|
|
954
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r245); const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r243 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r243.toggleDetail(row_r222)); });
|
|
955
|
-
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
956
|
-
i0.ɵɵelementEnd();
|
|
957
|
-
} if (rf & 2) {
|
|
958
|
-
const ctx_r246 = i0.ɵɵnextContext();
|
|
959
|
-
const row_r222 = ctx_r246.$implicit;
|
|
960
|
-
const rowIndex_r223 = ctx_r246.index;
|
|
961
|
-
i0.ɵɵnextContext(3);
|
|
962
|
-
const _r13 = i0.ɵɵreference(15);
|
|
963
|
-
i0.ɵɵadvance();
|
|
964
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
|
|
930
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
|
|
965
931
|
} }
|
|
966
|
-
function
|
|
932
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
967
933
|
i0.ɵɵelementContainer(0);
|
|
968
934
|
} }
|
|
969
|
-
function
|
|
935
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
970
936
|
i0.ɵɵelementStart(0, "span");
|
|
971
|
-
i0.ɵɵtemplate(1,
|
|
937
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
|
|
972
938
|
i0.ɵɵelementEnd();
|
|
973
939
|
} if (rf & 2) {
|
|
974
|
-
const
|
|
975
|
-
const
|
|
976
|
-
const
|
|
940
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
941
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
942
|
+
const ctx_r237 = i0.ɵɵnextContext(3);
|
|
977
943
|
i0.ɵɵadvance();
|
|
978
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
944
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r237.getTemplate(column_r235))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r237.getCellData(row_r216, column_r235)));
|
|
979
945
|
} }
|
|
980
|
-
function
|
|
946
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
981
947
|
i0.ɵɵelementContainer(0);
|
|
982
948
|
} }
|
|
983
|
-
function
|
|
949
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
984
950
|
i0.ɵɵelementStart(0, "span");
|
|
985
|
-
i0.ɵɵtemplate(1,
|
|
951
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
|
|
986
952
|
i0.ɵɵelementEnd();
|
|
987
953
|
} if (rf & 2) {
|
|
988
|
-
const
|
|
989
|
-
const
|
|
990
|
-
const
|
|
954
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
955
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
956
|
+
const ctx_r238 = i0.ɵɵnextContext(3);
|
|
991
957
|
i0.ɵɵadvance();
|
|
992
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
958
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r238.tableCellTemplate == null ? null : ctx_r238.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r216, column_r235));
|
|
993
959
|
} }
|
|
994
|
-
function
|
|
960
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
995
961
|
i0.ɵɵelementStart(0, "span");
|
|
996
962
|
i0.ɵɵtext(1);
|
|
997
963
|
i0.ɵɵelementEnd();
|
|
998
964
|
} if (rf & 2) {
|
|
999
|
-
const
|
|
1000
|
-
const
|
|
1001
|
-
const
|
|
965
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
966
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
967
|
+
const ctx_r239 = i0.ɵɵnextContext(3);
|
|
1002
968
|
i0.ɵɵadvance();
|
|
1003
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
969
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r239.getBooleanLabel(ctx_r239.getCellData(row_r216, column_r235), column_r235), " ");
|
|
1004
970
|
} }
|
|
1005
|
-
function
|
|
971
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
1006
972
|
i0.ɵɵelementStart(0, "span");
|
|
1007
973
|
i0.ɵɵtext(1);
|
|
1008
974
|
i0.ɵɵpipe(2, "currency");
|
|
1009
975
|
i0.ɵɵelementEnd();
|
|
1010
976
|
} if (rf & 2) {
|
|
1011
|
-
const
|
|
1012
|
-
const
|
|
1013
|
-
const
|
|
977
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
978
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
979
|
+
const ctx_r240 = i0.ɵɵnextContext(3);
|
|
1014
980
|
i0.ɵɵadvance();
|
|
1015
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1,
|
|
981
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r240.getCellData(row_r216, column_r235), column_r235.format, "symbol", "1.2-2"), " ");
|
|
1016
982
|
} }
|
|
1017
|
-
function
|
|
983
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
1018
984
|
i0.ɵɵelementStart(0, "span");
|
|
1019
985
|
i0.ɵɵtext(1);
|
|
1020
986
|
i0.ɵɵpipe(2, "date");
|
|
1021
987
|
i0.ɵɵelementEnd();
|
|
1022
988
|
} if (rf & 2) {
|
|
1023
|
-
const
|
|
1024
|
-
const
|
|
1025
|
-
const
|
|
989
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
990
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
991
|
+
const ctx_r241 = i0.ɵɵnextContext(3);
|
|
1026
992
|
i0.ɵɵadvance();
|
|
1027
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
993
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r241.getCellData(row_r216, column_r235), column_r235.format || "dd/MM/yyyy"), " ");
|
|
1028
994
|
} }
|
|
1029
|
-
function
|
|
995
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
1030
996
|
i0.ɵɵelementStart(0, "span");
|
|
1031
997
|
i0.ɵɵtext(1);
|
|
1032
998
|
i0.ɵɵpipe(2, "po_time");
|
|
1033
999
|
i0.ɵɵelementEnd();
|
|
1034
1000
|
} if (rf & 2) {
|
|
1035
|
-
const
|
|
1036
|
-
const
|
|
1037
|
-
const
|
|
1001
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1002
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1003
|
+
const ctx_r242 = i0.ɵɵnextContext(3);
|
|
1038
1004
|
i0.ɵɵadvance();
|
|
1039
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
1005
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r242.getCellData(row_r216, column_r235), column_r235.format || "HH:mm:ss.ffffff"), " ");
|
|
1040
1006
|
} }
|
|
1041
|
-
function
|
|
1007
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
1042
1008
|
i0.ɵɵelementStart(0, "span");
|
|
1043
1009
|
i0.ɵɵtext(1);
|
|
1044
1010
|
i0.ɵɵpipe(2, "date");
|
|
1045
1011
|
i0.ɵɵelementEnd();
|
|
1046
1012
|
} if (rf & 2) {
|
|
1047
|
-
const
|
|
1048
|
-
const
|
|
1049
|
-
const
|
|
1013
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1014
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1015
|
+
const ctx_r243 = i0.ɵɵnextContext(3);
|
|
1050
1016
|
i0.ɵɵadvance();
|
|
1051
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
1017
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r243.getCellData(row_r216, column_r235), column_r235.format || "dd/MM/yyyy HH:mm:ss"), " ");
|
|
1052
1018
|
} }
|
|
1053
|
-
function
|
|
1019
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
1054
1020
|
i0.ɵɵelementStart(0, "span");
|
|
1055
1021
|
i0.ɵɵtext(1);
|
|
1056
1022
|
i0.ɵɵelementEnd();
|
|
1057
1023
|
} if (rf & 2) {
|
|
1058
|
-
const
|
|
1059
|
-
const
|
|
1060
|
-
const
|
|
1024
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1025
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1026
|
+
const ctx_r244 = i0.ɵɵnextContext(3);
|
|
1061
1027
|
i0.ɵɵadvance();
|
|
1062
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1028
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r244.formatNumber(ctx_r244.getCellData(row_r216, column_r235), column_r235.format), " ");
|
|
1063
1029
|
} }
|
|
1064
|
-
function
|
|
1065
|
-
const
|
|
1030
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
|
|
1031
|
+
const _r270 = i0.ɵɵgetCurrentView();
|
|
1066
1032
|
i0.ɵɵelementStart(0, "po-table-column-link", 107);
|
|
1067
|
-
i0.ɵɵlistener("click", function
|
|
1033
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r270); const column_r235 = i0.ɵɵnextContext().$implicit; const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r268 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r268.onClickLink($event, row_r216, column_r235)); });
|
|
1068
1034
|
i0.ɵɵelementEnd();
|
|
1069
1035
|
} if (rf & 2) {
|
|
1070
|
-
const
|
|
1071
|
-
const
|
|
1072
|
-
const
|
|
1073
|
-
i0.ɵɵproperty("p-action",
|
|
1036
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1037
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1038
|
+
const ctx_r245 = i0.ɵɵnextContext(3);
|
|
1039
|
+
i0.ɵɵproperty("p-action", column_r235.action)("p-disabled", ctx_r245.checkDisabled(row_r216, column_r235))("p-link", row_r216[column_r235.link])("p-row", row_r216)("p-value", ctx_r245.getCellData(row_r216, column_r235));
|
|
1074
1040
|
} }
|
|
1075
|
-
function
|
|
1041
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
1076
1042
|
i0.ɵɵelement(0, "po-table-column-icon", 108);
|
|
1077
1043
|
} if (rf & 2) {
|
|
1078
|
-
const
|
|
1079
|
-
const
|
|
1080
|
-
const
|
|
1081
|
-
i0.ɵɵproperty("p-column",
|
|
1044
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1045
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1046
|
+
const ctx_r246 = i0.ɵɵnextContext(3);
|
|
1047
|
+
i0.ɵɵproperty("p-column", column_r235)("p-icons", ctx_r246.getColumnIcons(row_r216, column_r235))("p-row", row_r216);
|
|
1082
1048
|
} }
|
|
1083
|
-
function
|
|
1049
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
1084
1050
|
i0.ɵɵelementStart(0, "span");
|
|
1085
1051
|
i0.ɵɵelement(1, "po-table-subtitle-circle", 109);
|
|
1086
1052
|
i0.ɵɵelementEnd();
|
|
1087
1053
|
} if (rf & 2) {
|
|
1088
|
-
const
|
|
1089
|
-
const
|
|
1090
|
-
const
|
|
1054
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1055
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1056
|
+
const ctx_r247 = i0.ɵɵnextContext(3);
|
|
1091
1057
|
i0.ɵɵadvance();
|
|
1092
|
-
i0.ɵɵproperty("p-subtitle",
|
|
1058
|
+
i0.ɵɵproperty("p-subtitle", ctx_r247.getSubtitleColumn(row_r216, column_r235));
|
|
1093
1059
|
} }
|
|
1094
|
-
function
|
|
1060
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
1095
1061
|
i0.ɵɵelementStart(0, "span");
|
|
1096
1062
|
i0.ɵɵelement(1, "po-table-column-label", 110);
|
|
1097
1063
|
i0.ɵɵelementEnd();
|
|
1098
1064
|
} if (rf & 2) {
|
|
1099
|
-
const
|
|
1100
|
-
const
|
|
1101
|
-
const
|
|
1065
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1066
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1067
|
+
const ctx_r248 = i0.ɵɵnextContext(3);
|
|
1102
1068
|
i0.ɵɵadvance();
|
|
1103
|
-
i0.ɵɵproperty("p-value",
|
|
1069
|
+
i0.ɵɵproperty("p-value", ctx_r248.getColumnLabel(row_r216, column_r235));
|
|
1104
1070
|
} }
|
|
1105
|
-
function
|
|
1071
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
1106
1072
|
i0.ɵɵelementStart(0, "span");
|
|
1107
1073
|
i0.ɵɵtext(1);
|
|
1108
1074
|
i0.ɵɵelementEnd();
|
|
1109
1075
|
} if (rf & 2) {
|
|
1110
|
-
const
|
|
1111
|
-
const
|
|
1112
|
-
const
|
|
1076
|
+
const column_r235 = i0.ɵɵnextContext().$implicit;
|
|
1077
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1078
|
+
const ctx_r249 = i0.ɵɵnextContext(3);
|
|
1113
1079
|
i0.ɵɵadvance();
|
|
1114
|
-
i0.ɵɵtextInterpolate(
|
|
1080
|
+
i0.ɵɵtextInterpolate(ctx_r249.getCellData(row_r216, column_r235));
|
|
1115
1081
|
} }
|
|
1116
|
-
function
|
|
1117
|
-
const
|
|
1082
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
1083
|
+
const _r283 = i0.ɵɵgetCurrentView();
|
|
1118
1084
|
i0.ɵɵelementStart(0, "td", 124);
|
|
1119
|
-
i0.ɵɵlistener("click", function
|
|
1085
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r283); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r282 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r282.hasSelectableRow() ? ctx_r282.selectRow(row_r216) : "javascript:;"); });
|
|
1120
1086
|
i0.ɵɵelementStart(1, "div", 102);
|
|
1121
|
-
i0.ɵɵlistener("mouseenter", function
|
|
1122
|
-
i0.ɵɵtemplate(2,
|
|
1087
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r283); const column_r235 = restoredCtx.$implicit; const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r285 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r285.tooltipMouseEnter($event, column_r235, row_r216)); })("mouseleave", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r283); const ctx_r287 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r287.tooltipMouseLeave()); });
|
|
1088
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_14_Template, 2, 1, "span", 106);
|
|
1123
1089
|
i0.ɵɵelementEnd()();
|
|
1124
1090
|
} if (rf & 2) {
|
|
1125
|
-
const
|
|
1126
|
-
const
|
|
1127
|
-
const
|
|
1128
|
-
i0.ɵɵstyleProp("width",
|
|
1129
|
-
i0.ɵɵclassProp("po-table-column",
|
|
1130
|
-
i0.ɵɵproperty("ngClass",
|
|
1091
|
+
const column_r235 = ctx.$implicit;
|
|
1092
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1093
|
+
const ctx_r221 = i0.ɵɵnextContext(3);
|
|
1094
|
+
i0.ɵɵstyleProp("width", column_r235.width)("max-width", column_r235.width)("min-width", column_r235.width);
|
|
1095
|
+
i0.ɵɵclassProp("po-table-column", column_r235.type !== "icon")("po-table-column-right", column_r235.type === "currency" || column_r235.type === "number")("po-table-column-center", column_r235.type === "subtitle")("po-table-column-icons", column_r235.type === "icon");
|
|
1096
|
+
i0.ɵɵproperty("ngClass", ctx_r221.getClassColor(row_r216, column_r235))("pFrozenColumn", column_r235.fixed);
|
|
1131
1097
|
i0.ɵɵadvance();
|
|
1132
|
-
i0.ɵɵproperty("ngSwitch",
|
|
1098
|
+
i0.ɵɵproperty("ngSwitch", column_r235.type)("p-tooltip", ctx_r221.tooltipText)("p-append-in-body", true);
|
|
1133
1099
|
i0.ɵɵadvance();
|
|
1134
1100
|
i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
|
|
1135
1101
|
i0.ɵɵadvance();
|
|
@@ -1155,112 +1121,110 @@ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template(r
|
|
|
1155
1121
|
i0.ɵɵadvance();
|
|
1156
1122
|
i0.ɵɵproperty("ngSwitchCase", "label");
|
|
1157
1123
|
} }
|
|
1158
|
-
function
|
|
1159
|
-
function
|
|
1160
|
-
const
|
|
1124
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_ng_template_1_Template(rf, ctx) { }
|
|
1125
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
1126
|
+
const _r292 = i0.ɵɵgetCurrentView();
|
|
1161
1127
|
i0.ɵɵelementStart(0, "td", 99);
|
|
1162
|
-
i0.ɵɵlistener("click", function
|
|
1163
|
-
i0.ɵɵtemplate(1,
|
|
1128
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r292); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r290 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r290.toggleDetail(row_r216)); });
|
|
1129
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_ng_template_1_Template, 0, 0, "ng-template", 100);
|
|
1164
1130
|
i0.ɵɵelementEnd();
|
|
1165
1131
|
} if (rf & 2) {
|
|
1166
|
-
const
|
|
1167
|
-
const
|
|
1168
|
-
const
|
|
1132
|
+
const ctx_r293 = i0.ɵɵnextContext();
|
|
1133
|
+
const row_r216 = ctx_r293.$implicit;
|
|
1134
|
+
const rowIndex_r217 = ctx_r293.index;
|
|
1169
1135
|
i0.ɵɵnextContext(3);
|
|
1170
1136
|
const _r13 = i0.ɵɵreference(15);
|
|
1171
1137
|
i0.ɵɵadvance();
|
|
1172
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19,
|
|
1138
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
|
|
1173
1139
|
} }
|
|
1174
|
-
function
|
|
1175
|
-
function
|
|
1176
|
-
i0.ɵɵtemplate(0,
|
|
1140
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_ng_template_0_Template(rf, ctx) { }
|
|
1141
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_Template(rf, ctx) { if (rf & 1) {
|
|
1142
|
+
i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_ng_template_0_Template, 0, 0, "ng-template", 100);
|
|
1177
1143
|
} if (rf & 2) {
|
|
1178
|
-
const
|
|
1179
|
-
const
|
|
1180
|
-
const
|
|
1144
|
+
const ctx_r295 = i0.ɵɵnextContext();
|
|
1145
|
+
const row_r216 = ctx_r295.$implicit;
|
|
1146
|
+
const rowIndex_r217 = ctx_r295.index;
|
|
1181
1147
|
i0.ɵɵnextContext(3);
|
|
1182
1148
|
const _r25 = i0.ɵɵreference(27);
|
|
1183
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19,
|
|
1149
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
|
|
1184
1150
|
} }
|
|
1185
|
-
function
|
|
1186
|
-
function
|
|
1151
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_ng_template_2_Template(rf, ctx) { }
|
|
1152
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_Template(rf, ctx) { if (rf & 1) {
|
|
1187
1153
|
i0.ɵɵelementStart(0, "tr")(1, "td", 111);
|
|
1188
|
-
i0.ɵɵtemplate(2,
|
|
1154
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_ng_template_2_Template, 0, 0, "ng-template", 100);
|
|
1189
1155
|
i0.ɵɵelementEnd()();
|
|
1190
1156
|
} if (rf & 2) {
|
|
1191
|
-
const
|
|
1192
|
-
const
|
|
1193
|
-
const
|
|
1194
|
-
const
|
|
1157
|
+
const ctx_r297 = i0.ɵɵnextContext();
|
|
1158
|
+
const row_r216 = ctx_r297.$implicit;
|
|
1159
|
+
const rowIndex_r217 = ctx_r297.index;
|
|
1160
|
+
const ctx_r224 = i0.ɵɵnextContext(3);
|
|
1195
1161
|
i0.ɵɵadvance();
|
|
1196
|
-
i0.ɵɵproperty("colSpan",
|
|
1162
|
+
i0.ɵɵproperty("colSpan", ctx_r224.columnCountForMasterDetail);
|
|
1197
1163
|
i0.ɵɵadvance();
|
|
1198
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
1164
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r224.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r216, rowIndex_r217));
|
|
1199
1165
|
} }
|
|
1200
|
-
function
|
|
1201
|
-
const
|
|
1166
|
+
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
|
|
1167
|
+
const _r299 = i0.ɵɵgetCurrentView();
|
|
1202
1168
|
i0.ɵɵelementStart(0, "tr")(1, "td", 112)(2, "po-table-detail", 113);
|
|
1203
|
-
i0.ɵɵlistener("p-select-row", function
|
|
1169
|
+
i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r299); const ctx_r298 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r298.selectDetailRow($event)); });
|
|
1204
1170
|
i0.ɵɵelementEnd()()();
|
|
1205
1171
|
} if (rf & 2) {
|
|
1206
|
-
const
|
|
1207
|
-
const
|
|
1172
|
+
const row_r216 = i0.ɵɵnextContext().$implicit;
|
|
1173
|
+
const ctx_r225 = i0.ɵɵnextContext(3);
|
|
1208
1174
|
i0.ɵɵadvance();
|
|
1209
|
-
i0.ɵɵproperty("colSpan",
|
|
1175
|
+
i0.ɵɵproperty("colSpan", ctx_r225.columnCountForMasterDetail);
|
|
1210
1176
|
i0.ɵɵadvance();
|
|
1211
|
-
i0.ɵɵproperty("p-selectable",
|
|
1177
|
+
i0.ɵɵproperty("p-selectable", ctx_r225.selectable && !ctx_r225.detailHideSelect)("p-detail", ctx_r225.columnMasterDetail.detail)("p-items", row_r216[ctx_r225.nameColumnDetail])("p-parent-row", row_r216);
|
|
1212
1178
|
} }
|
|
1213
1179
|
function PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template(rf, ctx) { if (rf & 1) {
|
|
1214
1180
|
i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 95);
|
|
1215
|
-
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template,
|
|
1181
|
+
i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template, 15, 31, "td", 123)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template, 2, 5, "td", 97)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_Template, 1, 5, null, 43);
|
|
1216
1182
|
i0.ɵɵelementEnd();
|
|
1217
|
-
i0.ɵɵtemplate(
|
|
1183
|
+
i0.ɵɵtemplate(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_Template, 3, 6, "tr", 43)(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template, 3, 5, "tr", 43);
|
|
1218
1184
|
i0.ɵɵelementEnd();
|
|
1219
1185
|
} if (rf & 2) {
|
|
1220
|
-
const
|
|
1221
|
-
const
|
|
1222
|
-
const
|
|
1223
|
-
i0.ɵɵadvance();
|
|
1224
|
-
i0.ɵɵclassProp("po-table-row-active", row_r222.$selected || row_r222.$selected === null && ctx_r221.selectable);
|
|
1186
|
+
const row_r216 = ctx.$implicit;
|
|
1187
|
+
const rowIndex_r217 = ctx.index;
|
|
1188
|
+
const ctx_r215 = i0.ɵɵnextContext(3);
|
|
1225
1189
|
i0.ɵɵadvance();
|
|
1226
|
-
i0.ɵɵ
|
|
1190
|
+
i0.ɵɵclassProp("po-table-row-active", row_r216.$selected || row_r216.$selected === null && ctx_r215.selectable);
|
|
1227
1191
|
i0.ɵɵadvance();
|
|
1228
|
-
i0.ɵɵproperty("ngIf",
|
|
1192
|
+
i0.ɵɵproperty("ngIf", ctx_r215.selectable);
|
|
1229
1193
|
i0.ɵɵadvance();
|
|
1230
|
-
i0.ɵɵproperty("ngIf",
|
|
1194
|
+
i0.ɵɵproperty("ngIf", ctx_r215.columnMasterDetail && !ctx_r215.hideDetail && !ctx_r215.hasRowTemplate || ctx_r215.hasRowTemplate && !ctx_r215.hasRowTemplateWithArrowDirectionRight);
|
|
1231
1195
|
i0.ɵɵadvance();
|
|
1232
|
-
i0.ɵɵproperty("ngIf",
|
|
1196
|
+
i0.ɵɵproperty("ngIf", !ctx_r215.actionRight && (ctx_r215.visibleActions.length > 1 || ctx_r215.isSingleAction));
|
|
1233
1197
|
i0.ɵɵadvance();
|
|
1234
|
-
i0.ɵɵproperty("ngForOf",
|
|
1198
|
+
i0.ɵɵproperty("ngForOf", ctx_r215.mainColumns)("ngForTrackBy", ctx_r215.trackBy);
|
|
1235
1199
|
i0.ɵɵadvance();
|
|
1236
|
-
i0.ɵɵproperty("ngIf",
|
|
1200
|
+
i0.ɵɵproperty("ngIf", ctx_r215.hasRowTemplateWithArrowDirectionRight);
|
|
1237
1201
|
i0.ɵɵadvance();
|
|
1238
|
-
i0.ɵɵproperty("ngIf",
|
|
1202
|
+
i0.ɵɵproperty("ngIf", ctx_r215.actionRight);
|
|
1239
1203
|
i0.ɵɵadvance();
|
|
1240
|
-
i0.ɵɵproperty("ngIf",
|
|
1204
|
+
i0.ɵɵproperty("ngIf", ctx_r215.hasMainColumns && ctx_r215.hasRowTemplate && row_r216.$showDetail && ctx_r215.isShowRowTemplate(row_r216, rowIndex_r217));
|
|
1241
1205
|
i0.ɵɵadvance();
|
|
1242
|
-
i0.ɵɵproperty("ngIf",
|
|
1206
|
+
i0.ɵɵproperty("ngIf", ctx_r215.hasMainColumns && ctx_r215.isShowMasterDetail(row_r216));
|
|
1243
1207
|
} }
|
|
1244
1208
|
function PoTableComponent_ng_template_10_ng_container_17_Template(rf, ctx) { if (rf & 1) {
|
|
1245
1209
|
i0.ɵɵelementContainerStart(0);
|
|
1246
|
-
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template,
|
|
1210
|
+
i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template, 10, 11, "tbody", 122);
|
|
1247
1211
|
i0.ɵɵelementContainerEnd();
|
|
1248
1212
|
} if (rf & 2) {
|
|
1249
|
-
const
|
|
1213
|
+
const ctx_r193 = i0.ɵɵnextContext(2);
|
|
1250
1214
|
i0.ɵɵadvance();
|
|
1251
|
-
i0.ɵɵproperty("cdkVirtualForOf",
|
|
1215
|
+
i0.ɵɵproperty("cdkVirtualForOf", ctx_r193.filteredItems)("cdkVirtualForTrackBy", ctx_r193.trackBy);
|
|
1252
1216
|
} }
|
|
1253
1217
|
function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
1254
|
-
const
|
|
1218
|
+
const _r302 = i0.ɵɵgetCurrentView();
|
|
1255
1219
|
i0.ɵɵelementStart(0, "cdk-virtual-scroll-viewport", 114, 115)(2, "table", 56)(3, "thead", 116)(4, "tr", 117);
|
|
1256
|
-
i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_10_Template_tr_cdkDropListDropped_4_listener($event) { i0.ɵɵrestoreView(
|
|
1220
|
+
i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_10_Template_tr_cdkDropListDropped_4_listener($event) { i0.ɵɵrestoreView(_r302); const ctx_r301 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r301.drop($event)); });
|
|
1257
1221
|
i0.ɵɵtemplate(5, PoTableComponent_ng_template_10_th_5_Template, 3, 5, "th", 59)(6, PoTableComponent_ng_template_10_th_6_Template, 1, 0, "th", 60)(7, PoTableComponent_ng_template_10_th_7_Template, 2, 4, "th", 61)(8, PoTableComponent_ng_template_10_th_8_Template, 3, 3, "th", 62)(9, PoTableComponent_ng_template_10_ng_container_9_Template, 1, 0, "ng-container", 63)(10, PoTableComponent_ng_template_10_ng_template_10_Template, 1, 2, "ng-template", null, 118, i0.ɵɵtemplateRefExtractor)(12, PoTableComponent_ng_template_10_ng_template_12_Template, 1, 2, "ng-template", null, 119, i0.ɵɵtemplateRefExtractor)(14, PoTableComponent_ng_template_10_th_14_Template, 1, 0, "th", 60)(15, PoTableComponent_ng_template_10_th_15_Template, 1, 4, "th", 66);
|
|
1258
1222
|
i0.ɵɵelementEnd()();
|
|
1259
1223
|
i0.ɵɵtemplate(16, PoTableComponent_ng_template_10_tbody_16_Template, 5, 2, "tbody", 67)(17, PoTableComponent_ng_template_10_ng_container_17_Template, 2, 2, "ng-container", 43);
|
|
1260
1224
|
i0.ɵɵelementEnd()();
|
|
1261
1225
|
} if (rf & 2) {
|
|
1262
|
-
const
|
|
1263
|
-
const
|
|
1226
|
+
const _r187 = i0.ɵɵreference(11);
|
|
1227
|
+
const _r189 = i0.ɵɵreference(13);
|
|
1264
1228
|
const ctx_r9 = i0.ɵɵnextContext();
|
|
1265
1229
|
i0.ɵɵstyleProp("height", ctx_r9.heightTableContainer, "px");
|
|
1266
1230
|
i0.ɵɵproperty("itemSize", ctx_r9.itemSize)("minBufferPx", ctx_r9.heightTableContainer < 100 ? 100 : ctx_r9.heightTableContainer)("maxBufferPx", ctx_r9.heightTableContainer < 200 ? 200 : ctx_r9.heightTableContainer);
|
|
@@ -1274,15 +1238,15 @@ function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
1274
1238
|
i0.ɵɵadvance();
|
|
1275
1239
|
i0.ɵɵproperty("ngIf", ctx_r9.hasSelectableColumn);
|
|
1276
1240
|
i0.ɵɵadvance();
|
|
1277
|
-
i0.ɵɵproperty("ngIf", (ctx_r9.hasMasterDetailColumn || ctx_r9.hasRowTemplate) && !ctx_r9.hasRowTemplateWithArrowDirectionRight);
|
|
1241
|
+
i0.ɵɵproperty("ngIf", (ctx_r9.hasMasterDetailColumn || ctx_r9.hasRowTemplate) && ctx_r9.hasMainColumns && !ctx_r9.hasRowTemplateWithArrowDirectionRight);
|
|
1278
1242
|
i0.ɵɵadvance();
|
|
1279
1243
|
i0.ɵɵproperty("ngIf", !ctx_r9.actionRight && (ctx_r9.visibleActions.length > 1 || ctx_r9.isSingleAction));
|
|
1280
1244
|
i0.ɵɵadvance();
|
|
1281
1245
|
i0.ɵɵproperty("ngIf", !ctx_r9.hasMainColumns);
|
|
1282
1246
|
i0.ɵɵadvance();
|
|
1283
|
-
i0.ɵɵproperty("ngIf", ctx_r9.isDraggable || ctx_r9.hasSomeFixed())("ngIfThen",
|
|
1247
|
+
i0.ɵɵproperty("ngIf", ctx_r9.isDraggable || ctx_r9.hasSomeFixed())("ngIfThen", _r187)("ngIfElse", _r189);
|
|
1284
1248
|
i0.ɵɵadvance(5);
|
|
1285
|
-
i0.ɵɵproperty("ngIf", ctx_r9.hasRowTemplateWithArrowDirectionRight && (ctx_r9.hasVisibleActions || ctx_r9.hideColumnsManager));
|
|
1249
|
+
i0.ɵɵproperty("ngIf", ctx_r9.hasRowTemplateWithArrowDirectionRight && ctx_r9.hasMainColumns && (ctx_r9.hasVisibleActions || ctx_r9.hideColumnsManager));
|
|
1286
1250
|
i0.ɵɵadvance();
|
|
1287
1251
|
i0.ɵɵproperty("ngIf", ctx_r9.hasVisibleActions && ctx_r9.actionRight && (ctx_r9.visibleActions.length > 1 || ctx_r9.isSingleAction));
|
|
1288
1252
|
i0.ɵɵadvance();
|
|
@@ -1293,35 +1257,35 @@ function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
1293
1257
|
function PoTableComponent_ng_template_14_po_icon_0_Template(rf, ctx) { if (rf & 1) {
|
|
1294
1258
|
i0.ɵɵelement(0, "po-icon", 126);
|
|
1295
1259
|
} if (rf & 2) {
|
|
1296
|
-
const
|
|
1297
|
-
i0.ɵɵproperty("p-icon",
|
|
1260
|
+
const row_r303 = i0.ɵɵnextContext().row;
|
|
1261
|
+
i0.ɵɵproperty("p-icon", row_r303.$showDetail ? "ICON_ARROW_UP" : "ICON_ARROW_DOWN");
|
|
1298
1262
|
} }
|
|
1299
1263
|
function PoTableComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
1300
1264
|
i0.ɵɵtemplate(0, PoTableComponent_ng_template_14_po_icon_0_Template, 1, 1, "po-icon", 125);
|
|
1301
1265
|
} if (rf & 2) {
|
|
1302
|
-
const
|
|
1303
|
-
const
|
|
1266
|
+
const row_r303 = ctx.row;
|
|
1267
|
+
const rowIndex_r304 = ctx.rowIndex;
|
|
1304
1268
|
const ctx_r12 = i0.ɵɵnextContext();
|
|
1305
|
-
i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(
|
|
1269
|
+
i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r303) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r303, rowIndex_r304) && ctx_r12.hasRowTemplate);
|
|
1306
1270
|
} }
|
|
1307
1271
|
function PoTableComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
|
|
1308
|
-
const
|
|
1272
|
+
const _r309 = i0.ɵɵgetCurrentView();
|
|
1309
1273
|
i0.ɵɵelementStart(0, "po-radio", 127);
|
|
1310
|
-
i0.ɵɵlistener("p-change-selected", function PoTableComponent_ng_template_16_Template_po_radio_p_change_selected_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
1274
|
+
i0.ɵɵlistener("p-change-selected", function PoTableComponent_ng_template_16_Template_po_radio_p_change_selected_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r309); const row_r307 = restoredCtx.$implicit; const ctx_r308 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r308.selectRow(row_r307)); });
|
|
1311
1275
|
i0.ɵɵelementEnd();
|
|
1312
1276
|
} if (rf & 2) {
|
|
1313
|
-
const
|
|
1277
|
+
const row_r307 = ctx.$implicit;
|
|
1314
1278
|
const ctx_r14 = i0.ɵɵnextContext();
|
|
1315
|
-
i0.ɵɵproperty("name", ctx_r14.idRadio)("p-checked",
|
|
1279
|
+
i0.ɵɵproperty("name", ctx_r14.idRadio)("p-checked", row_r307.$selected);
|
|
1316
1280
|
} }
|
|
1317
1281
|
function PoTableComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
|
|
1318
|
-
const
|
|
1282
|
+
const _r312 = i0.ɵɵgetCurrentView();
|
|
1319
1283
|
i0.ɵɵelementStart(0, "po-checkbox", 128);
|
|
1320
|
-
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_18_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(
|
|
1284
|
+
i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_18_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r312); const row_r310 = restoredCtx.$implicit; const ctx_r311 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r311.selectable ? ctx_r311.selectRow(row_r310) : "javascript:;"); });
|
|
1321
1285
|
i0.ɵɵelementEnd();
|
|
1322
1286
|
} if (rf & 2) {
|
|
1323
|
-
const
|
|
1324
|
-
i0.ɵɵproperty("p-checkboxValue",
|
|
1287
|
+
const row_r310 = ctx.$implicit;
|
|
1288
|
+
i0.ɵɵproperty("p-checkboxValue", row_r310.$selected === null ? "mixed" : row_r310.$selected);
|
|
1325
1289
|
} }
|
|
1326
1290
|
function PoTableComponent_ng_template_20_span_4_ng_container_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1327
1291
|
i0.ɵɵelement(0, "po-icon", 134);
|
|
@@ -1337,11 +1301,11 @@ function PoTableComponent_ng_template_20_span_4_ng_container_1_Template(rf, ctx)
|
|
|
1337
1301
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_1_po_icon_1_Template, 1, 0, "po-icon", 132)(2, PoTableComponent_ng_template_20_span_4_ng_container_1__svg_svg_2_Template, 2, 0, "svg", 133);
|
|
1338
1302
|
i0.ɵɵelementContainerEnd();
|
|
1339
1303
|
} if (rf & 2) {
|
|
1340
|
-
const
|
|
1304
|
+
const ctx_r316 = i0.ɵɵnextContext(3);
|
|
1341
1305
|
i0.ɵɵadvance();
|
|
1342
|
-
i0.ɵɵproperty("ngIf",
|
|
1306
|
+
i0.ɵɵproperty("ngIf", ctx_r316.iconNameLib === "PhosphorIcon");
|
|
1343
1307
|
i0.ɵɵadvance();
|
|
1344
|
-
i0.ɵɵproperty("ngIf",
|
|
1308
|
+
i0.ɵɵproperty("ngIf", ctx_r316.iconNameLib === "PoIcon");
|
|
1345
1309
|
} }
|
|
1346
1310
|
function PoTableComponent_ng_template_20_span_4_ng_container_2_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1347
1311
|
i0.ɵɵelement(0, "po-icon", 138);
|
|
@@ -1357,11 +1321,11 @@ function PoTableComponent_ng_template_20_span_4_ng_container_2_Template(rf, ctx)
|
|
|
1357
1321
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_2_po_icon_1_Template, 1, 0, "po-icon", 137)(2, PoTableComponent_ng_template_20_span_4_ng_container_2__svg_svg_2_Template, 2, 0, "svg", 133);
|
|
1358
1322
|
i0.ɵɵelementContainerEnd();
|
|
1359
1323
|
} if (rf & 2) {
|
|
1360
|
-
const
|
|
1324
|
+
const ctx_r317 = i0.ɵɵnextContext(3);
|
|
1361
1325
|
i0.ɵɵadvance();
|
|
1362
|
-
i0.ɵɵproperty("ngIf",
|
|
1326
|
+
i0.ɵɵproperty("ngIf", ctx_r317.iconNameLib === "PhosphorIcon");
|
|
1363
1327
|
i0.ɵɵadvance();
|
|
1364
|
-
i0.ɵɵproperty("ngIf",
|
|
1328
|
+
i0.ɵɵproperty("ngIf", ctx_r317.iconNameLib === "PoIcon");
|
|
1365
1329
|
} }
|
|
1366
1330
|
function PoTableComponent_ng_template_20_span_4_ng_container_3_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1367
1331
|
i0.ɵɵelement(0, "po-icon", 141);
|
|
@@ -1377,43 +1341,43 @@ function PoTableComponent_ng_template_20_span_4_ng_container_3_Template(rf, ctx)
|
|
|
1377
1341
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_3_po_icon_1_Template, 1, 0, "po-icon", 140)(2, PoTableComponent_ng_template_20_span_4_ng_container_3__svg_svg_2_Template, 2, 0, "svg", 133);
|
|
1378
1342
|
i0.ɵɵelementContainerEnd();
|
|
1379
1343
|
} if (rf & 2) {
|
|
1380
|
-
const
|
|
1344
|
+
const ctx_r318 = i0.ɵɵnextContext(3);
|
|
1381
1345
|
i0.ɵɵadvance();
|
|
1382
|
-
i0.ɵɵproperty("ngIf",
|
|
1346
|
+
i0.ɵɵproperty("ngIf", ctx_r318.iconNameLib === "PhosphorIcon");
|
|
1383
1347
|
i0.ɵɵadvance();
|
|
1384
|
-
i0.ɵɵproperty("ngIf",
|
|
1348
|
+
i0.ɵɵproperty("ngIf", ctx_r318.iconNameLib === "PoIcon");
|
|
1385
1349
|
} }
|
|
1386
1350
|
function PoTableComponent_ng_template_20_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
1387
1351
|
i0.ɵɵelementStart(0, "span");
|
|
1388
1352
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_1_Template, 3, 2, "ng-container", 43)(2, PoTableComponent_ng_template_20_span_4_ng_container_2_Template, 3, 2, "ng-container", 43)(3, PoTableComponent_ng_template_20_span_4_ng_container_3_Template, 3, 2, "ng-container", 43);
|
|
1389
1353
|
i0.ɵɵelementEnd();
|
|
1390
1354
|
} if (rf & 2) {
|
|
1391
|
-
const
|
|
1392
|
-
const
|
|
1393
|
-
i0.ɵɵclassProp("po-table-header-icon-unselected",
|
|
1355
|
+
const column_r313 = i0.ɵɵnextContext().$implicit;
|
|
1356
|
+
const ctx_r315 = i0.ɵɵnextContext();
|
|
1357
|
+
i0.ɵɵclassProp("po-table-header-icon-unselected", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) !== ctx_r315.JSON.stringify(column_r313))("po-table-header-icon-descending", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && ctx_r315.sortedColumn.ascending)("po-table-header-icon-ascending", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && !ctx_r315.sortedColumn.ascending);
|
|
1394
1358
|
i0.ɵɵadvance();
|
|
1395
|
-
i0.ɵɵproperty("ngIf",
|
|
1359
|
+
i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) !== ctx_r315.JSON.stringify(column_r313));
|
|
1396
1360
|
i0.ɵɵadvance();
|
|
1397
|
-
i0.ɵɵproperty("ngIf",
|
|
1361
|
+
i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && ctx_r315.sortedColumn.ascending);
|
|
1398
1362
|
i0.ɵɵadvance();
|
|
1399
|
-
i0.ɵɵproperty("ngIf",
|
|
1363
|
+
i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && !ctx_r315.sortedColumn.ascending);
|
|
1400
1364
|
} }
|
|
1401
1365
|
function PoTableComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
|
|
1402
|
-
const
|
|
1366
|
+
const _r327 = i0.ɵɵgetCurrentView();
|
|
1403
1367
|
i0.ɵɵelementStart(0, "span", 129, 130);
|
|
1404
|
-
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_20_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(
|
|
1368
|
+
i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_20_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r327); const ctx_r326 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r326.tooltipMouseEnter($event)); })("mouseleave", function PoTableComponent_ng_template_20_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r327); const ctx_r328 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r328.tooltipMouseLeave()); });
|
|
1405
1369
|
i0.ɵɵtext(2);
|
|
1406
1370
|
i0.ɵɵpipe(3, "titlecase");
|
|
1407
1371
|
i0.ɵɵelementEnd();
|
|
1408
1372
|
i0.ɵɵtemplate(4, PoTableComponent_ng_template_20_span_4_Template, 4, 9, "span", 131);
|
|
1409
1373
|
} if (rf & 2) {
|
|
1410
|
-
const
|
|
1374
|
+
const column_r313 = ctx.$implicit;
|
|
1411
1375
|
const ctx_r18 = i0.ɵɵnextContext();
|
|
1412
1376
|
i0.ɵɵproperty("p-tooltip", ctx_r18.tooltipText)("p-append-in-body", true);
|
|
1413
1377
|
i0.ɵɵadvance(2);
|
|
1414
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1378
|
+
i0.ɵɵtextInterpolate1(" ", column_r313.label || i0.ɵɵpipeBind1(3, 4, column_r313.property), " ");
|
|
1415
1379
|
i0.ɵɵadvance(2);
|
|
1416
|
-
i0.ɵɵproperty("ngIf", ctx_r18.sort &&
|
|
1380
|
+
i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r313.sortable !== false);
|
|
1417
1381
|
} }
|
|
1418
1382
|
function PoTableComponent_ng_template_22_Template(rf, ctx) { if (rf & 1) {
|
|
1419
1383
|
i0.ɵɵelementStart(0, "div", 143);
|
|
@@ -1434,39 +1398,39 @@ function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
|
|
|
1434
1398
|
function PoTableComponent_ng_template_26_td_0_div_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1435
1399
|
i0.ɵɵelement(0, "po-icon", 150);
|
|
1436
1400
|
} if (rf & 2) {
|
|
1437
|
-
const
|
|
1438
|
-
i0.ɵɵproperty("p-icon",
|
|
1401
|
+
const ctx_r334 = i0.ɵɵnextContext(4);
|
|
1402
|
+
i0.ɵɵproperty("p-icon", ctx_r334.firstAction.icon);
|
|
1439
1403
|
} }
|
|
1440
1404
|
function PoTableComponent_ng_template_26_td_0_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
1441
|
-
const
|
|
1405
|
+
const _r337 = i0.ɵɵgetCurrentView();
|
|
1442
1406
|
i0.ɵɵelementStart(0, "div", 148);
|
|
1443
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1407
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r337); const row_r329 = i0.ɵɵnextContext(2).row; const ctx_r335 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r335.executeTableAction(row_r329, ctx_r335.firstAction)); });
|
|
1444
1408
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_26_td_0_div_1_po_icon_1_Template, 1, 1, "po-icon", 149);
|
|
1445
1409
|
i0.ɵɵtext(2);
|
|
1446
1410
|
i0.ɵɵelementEnd();
|
|
1447
1411
|
} if (rf & 2) {
|
|
1448
|
-
const
|
|
1449
|
-
const
|
|
1450
|
-
i0.ɵɵclassProp("po-table-action-disabled",
|
|
1412
|
+
const row_r329 = i0.ɵɵnextContext(2).row;
|
|
1413
|
+
const ctx_r333 = i0.ɵɵnextContext();
|
|
1414
|
+
i0.ɵɵclassProp("po-table-action-disabled", ctx_r333.firstAction.disabled ? ctx_r333.validateTableAction(row_r329, ctx_r333.firstAction) : false);
|
|
1451
1415
|
i0.ɵɵadvance();
|
|
1452
|
-
i0.ɵɵproperty("ngIf",
|
|
1416
|
+
i0.ɵɵproperty("ngIf", ctx_r333.firstAction.icon);
|
|
1453
1417
|
i0.ɵɵadvance();
|
|
1454
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1418
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r333.firstAction.label, " ");
|
|
1455
1419
|
} }
|
|
1456
1420
|
function PoTableComponent_ng_template_26_td_0_Template(rf, ctx) { if (rf & 1) {
|
|
1457
1421
|
i0.ɵɵelementStart(0, "td", 146);
|
|
1458
1422
|
i0.ɵɵtemplate(1, PoTableComponent_ng_template_26_td_0_div_1_Template, 3, 4, "div", 147);
|
|
1459
1423
|
i0.ɵɵelementEnd();
|
|
1460
1424
|
} if (rf & 2) {
|
|
1461
|
-
const
|
|
1462
|
-
i0.ɵɵstyleProp("width",
|
|
1425
|
+
const ctx_r331 = i0.ɵɵnextContext(2);
|
|
1426
|
+
i0.ɵɵstyleProp("width", ctx_r331.height && ctx_r331.actionRight ? ctx_r331.getWidthColumnManager() : "", "px")("max-width", ctx_r331.height && !ctx_r331.actionRight ? ctx_r331.getColumnWidthActionsLeft() : "", "px")("width", ctx_r331.height && !ctx_r331.actionRight ? ctx_r331.getColumnWidthActionsLeft() : "", "px");
|
|
1463
1427
|
i0.ɵɵadvance();
|
|
1464
|
-
i0.ɵɵproperty("ngIf",
|
|
1428
|
+
i0.ɵɵproperty("ngIf", ctx_r331.firstAction.visible !== false);
|
|
1465
1429
|
} }
|
|
1466
1430
|
function PoTableComponent_ng_template_26_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
1467
|
-
const
|
|
1431
|
+
const _r342 = i0.ɵɵgetCurrentView();
|
|
1468
1432
|
i0.ɵɵelementStart(0, "td", 151)(1, "div", 152, 153);
|
|
1469
|
-
i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(
|
|
1433
|
+
i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r342); const _r339 = i0.ɵɵreference(2); const row_r329 = i0.ɵɵnextContext().row; const ctx_r340 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r340.togglePopup(row_r329, _r339)); });
|
|
1470
1434
|
i0.ɵɵelement(3, "po-icon", 154);
|
|
1471
1435
|
i0.ɵɵelementEnd()();
|
|
1472
1436
|
} }
|
|
@@ -1479,9 +1443,9 @@ function PoTableComponent_ng_template_26_Template(rf, ctx) { if (rf & 1) {
|
|
|
1479
1443
|
i0.ɵɵproperty("ngIf", ctx_r24.visibleActions.length > 1);
|
|
1480
1444
|
} }
|
|
1481
1445
|
function PoTableComponent_po_table_column_manager_28_Template(rf, ctx) { if (rf & 1) {
|
|
1482
|
-
const
|
|
1446
|
+
const _r344 = i0.ɵɵgetCurrentView();
|
|
1483
1447
|
i0.ɵɵelementStart(0, "po-table-column-manager", 155);
|
|
1484
|
-
i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(
|
|
1448
|
+
i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r343 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r343.onVisibleColumnsChange($event)); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r345 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r345.onChangeVisibleColumns($event)); })("p-initial-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r346 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r346.onColumnRestoreManager($event)); });
|
|
1485
1449
|
i0.ɵɵelementEnd();
|
|
1486
1450
|
} if (rf & 2) {
|
|
1487
1451
|
const ctx_r26 = i0.ɵɵnextContext();
|
|
@@ -1644,7 +1608,8 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
1644
1608
|
const columnCount = this.mainColumns.length +
|
|
1645
1609
|
(this.actions.length > 0 ? 1 : 0) +
|
|
1646
1610
|
(this.selectable ? 1 : 0) +
|
|
1647
|
-
(!this.hideDetail && this.columnMasterDetail !== undefined ? 1 : 0)
|
|
1611
|
+
(!this.hideDetail && this.columnMasterDetail !== undefined ? 1 : 0) +
|
|
1612
|
+
this.countExtraColumns();
|
|
1648
1613
|
return columnCount || 1;
|
|
1649
1614
|
}
|
|
1650
1615
|
get columnCountForMasterDetail() {
|
|
@@ -2117,6 +2082,22 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2117
2082
|
return (this.tooltipText = columnLabel?.tooltip);
|
|
2118
2083
|
}
|
|
2119
2084
|
}
|
|
2085
|
+
countExtraColumns() {
|
|
2086
|
+
let extraColumns = 0;
|
|
2087
|
+
if (!this.columnMasterDetail && this.hasItems) {
|
|
2088
|
+
if ((this.hasMasterDetailColumn || this.hasRowTemplate) &&
|
|
2089
|
+
this.hasMainColumns &&
|
|
2090
|
+
!this.hasRowTemplateWithArrowDirectionRight) {
|
|
2091
|
+
extraColumns++;
|
|
2092
|
+
}
|
|
2093
|
+
if (this.hasRowTemplateWithArrowDirectionRight &&
|
|
2094
|
+
this.hasMainColumns &&
|
|
2095
|
+
(this.hasVisibleActions || this.hideColumnsManager)) {
|
|
2096
|
+
extraColumns++;
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
return extraColumns;
|
|
2100
|
+
}
|
|
2120
2101
|
debounceResize() {
|
|
2121
2102
|
clearTimeout(this.timeoutResize);
|
|
2122
2103
|
this.timeoutResize = setTimeout(() => {
|
|
@@ -2322,7 +2303,7 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2322
2303
|
}
|
|
2323
2304
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableComponent, [{
|
|
2324
2305
|
type: Component,
|
|
2325
|
-
args: [{ selector: 'po-table', providers: [PoDateService], template: "<div class=\"po-table-actions\">\n <div\n #columnBatchActions\n *ngIf=\"hasValidColumns && itemsSelected.length > 0 && !hideBatchActions\"\n class=\"po-table-actions-batch-actions\"\n >\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n\n <div #columnManager *ngIf=\"hasValidColumns && !hideColumnsManager\" class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n\n <div *ngIf=\"!hideTableSearch && hasValidColumns\" class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n</div>\n<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n <po-loading-overlay *ngIf=\"loading\" [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\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 #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n <div *ngIf=\"virtualScroll\">\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n <div *ngIf=\"!virtualScroll\" class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\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<!-- Show More Button -->\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<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\">\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\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 <ng-container\n *ngIf=\"this.isDraggable || hasSomeFixed(); then tableDefaultThDragDrop; else tableDefaultThDefault\"\n >\n </ng-container>\n <ng-template #tableDefaultThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\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 *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableDefaultThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\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 </ng-template>\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 && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\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 filteredItems; 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 [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\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 </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-parent-row]=\"row\"\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<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead class=\"po-table-header-sticky\" [style.top]=\"inverseOfTranslation\">\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\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 <ng-container\n *ngIf=\"\n this.isDraggable || hasSomeFixed();\n then tableVirtualScrollThDragDrop;\n else tableVirtualScrollThDefault\n \"\n >\n </ng-container>\n <ng-template #tableVirtualScrollThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\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 *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableVirtualScrollThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\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 </ng-template>\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 && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\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\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\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 [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\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 </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-parent-row]=\"row\"\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<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <po-icon\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\"\n class=\"po-clickable\"\n >\n </po-icon>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio [name]=\"idRadio\" [p-checked]=\"row.$selected\" (p-change-selected)=\"selectRow(row)\"></po-radio>\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 === null ? 'mixed' : 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 [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\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 <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.2929 15.2929L17 16.5858L17 10C17 9.44772 16.5523 9 16 9C15.4477 9 15 9.44772 15 10L15 16.5858L13.7071 15.2929C13.3166 14.9024 12.6834 14.9024 12.2929 15.2929C11.9024 15.6834 11.9024 16.3166 12.2929 16.7071L15.2929 19.7071C15.6834 20.0976 16.3166 20.0976 16.7071 19.7071L19.7071 16.7071C20.0976 16.3166 20.0976 15.6834 19.7071 15.2929C19.3166 14.9024 18.6834 14.9024 18.2929 15.2929ZM5.70716 8.7071L7.00006 7.4142L7.00003 14C7.00002 14.5523 7.44774 15 8.00002 15C8.55231 15 9.00002 14.5523 9.00003 14L9.00006 7.41418L10.2929 8.70707C10.6835 9.09759 11.3166 9.09758 11.7072 8.70706C12.0977 8.31653 12.0977 7.68336 11.7072 7.29284L8.70718 4.29286C8.31665 3.90234 7.68349 3.90235 7.29296 4.29287L4.29295 7.29289C3.90242 7.68342 3.90242 8.31658 4.29294 8.70711C4.68347 9.09763 5.31663 9.09762 5.70716 8.7071Z\"\n fill=\"#1D1D30\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_ASC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 9.41421L9.70711 10.7071C9.31658 11.0976 8.68342 11.0976 8.29289 10.7071C7.90237 10.3166 7.90237 9.68342 8.29289 9.29289L11.2929 6.29289C11.6834 5.90237 12.3166 5.90237 12.7071 6.29289L15.7071 9.29289C16.0976 9.68342 16.0976 10.3166 15.7071 10.7071C15.3166 11.0976 14.6834 11.0976 14.2929 10.7071L13 9.41421V16C13 16.5523 12.5523 17 12 17C11.4477 17 11 16.5523 11 16V9.41421Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_DESC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.70711 13.2929L11 14.5858V7C11 6.44772 11.4477 6 12 6C12.5523 6 13 6.44772 13 7V14.5858L14.2929 13.2929C14.6834 12.9024 15.3166 12.9024 15.7071 13.2929C16.0976 13.6834 16.0976 14.3166 15.7071 14.7071L12.7071 17.7071C12.3166 18.0976 11.6834 18.0976 11.2929 17.7071L8.29289 14.7071C7.90237 14.3166 7.90237 13.6834 8.29289 13.2929C8.68342 12.9024 9.31658 12.9024 9.70711 13.2929Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"headerWidth\">\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 <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon p-icon=\"ICON_MORE\"></po-icon>\n </div>\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]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\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\n<po-modal\n #modalDelete\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
|
|
2306
|
+
args: [{ selector: 'po-table', providers: [PoDateService], template: "<div class=\"po-table-actions\">\n <div\n #columnBatchActions\n *ngIf=\"hasValidColumns && itemsSelected.length > 0 && !hideBatchActions\"\n class=\"po-table-actions-batch-actions\"\n >\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n\n <div #columnManager *ngIf=\"hasValidColumns && !hideColumnsManager\" class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n\n <div *ngIf=\"!hideTableSearch && hasValidColumns\" class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n</div>\n<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n <po-loading-overlay *ngIf=\"loading\" [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\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 #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n <div *ngIf=\"virtualScroll\">\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n <div *ngIf=\"!virtualScroll\" class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\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<!-- Show More Button -->\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<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\">\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\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) && hasMainColumns && !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 <ng-container\n *ngIf=\"this.isDraggable || hasSomeFixed(); then tableDefaultThDragDrop; else tableDefaultThDefault\"\n >\n </ng-container>\n <ng-template #tableDefaultThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\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 *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableDefaultThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\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 </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\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 filteredItems; 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 ou pela diretiva -->\n <td\n *ngIf=\"\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n \"\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 <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 [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\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 </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-parent-row]=\"row\"\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<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead class=\"po-table-header-sticky\" [style.top]=\"inverseOfTranslation\">\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\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=\"\n (hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight\n \"\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 <ng-container\n *ngIf=\"\n this.isDraggable || hasSomeFixed();\n then tableVirtualScrollThDragDrop;\n else tableVirtualScrollThDefault\n \"\n >\n </ng-container>\n <ng-template #tableVirtualScrollThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\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 *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableVirtualScrollThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\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 </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\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\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\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 ou pela diretiva -->\n <td\n *ngIf=\"\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n \"\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 <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 [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\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 </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-parent-row]=\"row\"\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<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <po-icon\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\"\n class=\"po-clickable\"\n >\n </po-icon>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio [name]=\"idRadio\" [p-checked]=\"row.$selected\" (p-change-selected)=\"selectRow(row)\"></po-radio>\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 === null ? 'mixed' : 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 [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\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 <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.2929 15.2929L17 16.5858L17 10C17 9.44772 16.5523 9 16 9C15.4477 9 15 9.44772 15 10L15 16.5858L13.7071 15.2929C13.3166 14.9024 12.6834 14.9024 12.2929 15.2929C11.9024 15.6834 11.9024 16.3166 12.2929 16.7071L15.2929 19.7071C15.6834 20.0976 16.3166 20.0976 16.7071 19.7071L19.7071 16.7071C20.0976 16.3166 20.0976 15.6834 19.7071 15.2929C19.3166 14.9024 18.6834 14.9024 18.2929 15.2929ZM5.70716 8.7071L7.00006 7.4142L7.00003 14C7.00002 14.5523 7.44774 15 8.00002 15C8.55231 15 9.00002 14.5523 9.00003 14L9.00006 7.41418L10.2929 8.70707C10.6835 9.09759 11.3166 9.09758 11.7072 8.70706C12.0977 8.31653 12.0977 7.68336 11.7072 7.29284L8.70718 4.29286C8.31665 3.90234 7.68349 3.90235 7.29296 4.29287L4.29295 7.29289C3.90242 7.68342 3.90242 8.31658 4.29294 8.70711C4.68347 9.09763 5.31663 9.09762 5.70716 8.7071Z\"\n fill=\"#1D1D30\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_ASC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 9.41421L9.70711 10.7071C9.31658 11.0976 8.68342 11.0976 8.29289 10.7071C7.90237 10.3166 7.90237 9.68342 8.29289 9.29289L11.2929 6.29289C11.6834 5.90237 12.3166 5.90237 12.7071 6.29289L15.7071 9.29289C16.0976 9.68342 16.0976 10.3166 15.7071 10.7071C15.3166 11.0976 14.6834 11.0976 14.2929 10.7071L13 9.41421V16C13 16.5523 12.5523 17 12 17C11.4477 17 11 16.5523 11 16V9.41421Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_DESC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.70711 13.2929L11 14.5858V7C11 6.44772 11.4477 6 12 6C12.5523 6 13 6.44772 13 7V14.5858L14.2929 13.2929C14.6834 12.9024 15.3166 12.9024 15.7071 13.2929C16.0976 13.6834 16.0976 14.3166 15.7071 14.7071L12.7071 17.7071C12.3166 18.0976 11.6834 18.0976 11.2929 17.7071L8.29289 14.7071C7.90237 14.3166 7.90237 13.6834 8.29289 13.2929C8.68342 12.9024 9.31658 12.9024 9.70711 13.2929Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"headerWidth\">\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 <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon p-icon=\"ICON_MORE\"></po-icon>\n </div>\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]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\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\n<po-modal\n #modalDelete\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
|
|
2326
2307
|
}], () => [{ type: i1.PoDateService }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }, { type: i2.PoLanguageService }, { type: i0.ChangeDetectorRef }, { type: i3.DecimalPipe }, { type: i4.PoTableService }, { type: undefined, decorators: [{
|
|
2327
2308
|
type: Optional
|
|
2328
2309
|
}, {
|
|
@@ -2393,4 +2374,4 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2393
2374
|
args: ['columnManagerTargetFixed']
|
|
2394
2375
|
}] }); })();
|
|
2395
2376
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoTableComponent, { className: "PoTableComponent", filePath: "lib/components/po-table/po-table.component.ts", lineNumber: 107 }); })();
|
|
2396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwr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dWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2Nyb2xsYWJsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVNjcm9sbGFibGU7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZlcnNlT2ZUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52aWV3UG9ydCB8fCAhdGhpcy52aWV3UG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICByZXR1cm4gJy0wcHgnO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXTtcblxuICAgIHJldHVybiBgLSR7b2Zmc2V0fXB4YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWRSYWRpbyA9IGBwby1yYWRpby0ke3V1aWQoKX1gO1xuICB9XG5cbiAgY2hhbmdlSGVhZGVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMubm9Db2x1bW5zSGVhZGVyKSB7XG4gICAgICB0aGlzLmhlYWRlcldpZHRoID0gdGhpcy5ub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlSGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLmNoYW5nZVNpemVMb2FkaW5nKCk7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmFwcGx5Rml4ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcblxuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBjb2x1bW5zIHBvc3N1ZW0gYSBwcm9wcmllZGFkZSB3aWR0aC5cbiAgICovXG4gIGFwcGx5Rml4ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb2x1bW5zLnNvbWUoY29sdW1uID0+ICFjb2x1bW4ud2lkdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcGVsYSBleGNsdXPDo28gZGUgaXRlbnMgZW0gbG90ZS5cbiAgICogQ2FzbyBhIHRhYmVsYSBlc3RlamEgZXhlY3V0YW5kbyBhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtZGVsZXRlYCwgc2Vyw6EgbmVjZXNzw6FyaW8gZXhjbHVpciAxIGl0ZW0gcG9yIHZlei5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgYHAtc2VydmljZS1kZWxldGVgIG1hcyBzZW0gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWFwaWAsIHNlcsOhIHJlc3BvbnNhYmlsaWRhZGUgZG8gdXN1w6FyaW8gbyB0cmF0YW1lbnRvXG4gICAqIGFww7NzIGEgcmVxdWlzacOnw6NvIERFTEVURSBzZXIgZXhlY3V0YWRhLlxuICAgKlxuICAgKiBDYXNvIGEgdGFiZWxhIHV0aWxpemUgYHAtaGVpZ2h0YCBlIGVzdGVqYSBzZW0gc2VydmnDp28sIMOpIG5lY2Vzc8OhcmlvIGEgcmVhdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHV0aWxpemFuZG8gbyBldmVudG8gYChwLWRlbGV0ZS1pdGVtcylgLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqL1xuICBkZWxldGVJdGVtcygpIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcbiAgICBjb25zdCBuZXdJdGVtc0ZpbHRlcmVkID0gWy4uLm5ld0l0ZW1zXS5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2VEZWxldGVBcGkpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtcywgbmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0Q2VsbERhdGEocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IGFueSB7XG4gICAgY29uc3QgYXJyYXlQcm9wZXJ0eSA9IGNvbHVtbi5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgIGlmIChhcnJheVByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BlcnRpZXMgPSBhcnJheVByb3BlcnR5O1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPSByb3c7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5lc3RlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtwcm9wZXJ0eV0gfHwgdmFsdWVbcHJvcGVydHldID09PSAwID8gdmFsdWVbcHJvcGVydHldIDogJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dbY29sdW1uLnByb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBnZXRCb29sZWFuTGFiZWwocm93VmFsdWU6IGFueSwgY29sdW1uQm9vbGVhbjogUG9UYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKHJvd1ZhbHVlIHx8IHJvd1ZhbHVlID09PSBmYWxzZSB8fCByb3dWYWx1ZSA9PT0gMCkge1xuICAgICAgcm93VmFsdWUgPSBjb252ZXJ0VG9Cb29sZWFuKHJvd1ZhbHVlKTtcblxuICAgICAgaWYgKGNvbHVtbkJvb2xlYW4uYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyBjb2x1bW5Cb29sZWFuLmJvb2xlYW4udHJ1ZUxhYmVsIHx8ICdTaW0nIDogY29sdW1uQm9vbGVhbi5ib29sZWFuLmZhbHNlTGFiZWwgfHwgJ07Do28nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gJ1NpbScgOiAnTsOjbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd1ZhbHVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uSWNvbnMocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHJvd0ljb25zID0gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbik7XG5cbiAgICBpZiAoY29sdW1uLmljb25zKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dJY29ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VDdXN0b21JY29ucyhyb3dJY29ucywgY29sdW1uLmljb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dJY29ucztcbiAgfVxuXG4gIGdldENvbHVtbkxhYmVsKHJvdzogYW55LCBjb2x1bW5MYWJlbDogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVDb2x1bW5MYWJlbCB7XG4gICAgcmV0dXJuIGNvbHVtbkxhYmVsLmxhYmVscy5maW5kKGxhYmVsSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uTGFiZWwpID09PSBsYWJlbEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0U3VidGl0bGVDb2x1bW4ocm93OiBhbnksIHN1YnRpdGxlQ29sdW1uOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZVN1YnRpdGxlQ29sdW1uIHtcbiAgICByZXR1cm4gc3VidGl0bGVDb2x1bW4uc3VidGl0bGVzLmZpbmQoc3VidGl0bGVJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBzdWJ0aXRsZUNvbHVtbikgPT09IHN1YnRpdGxlSXRlbS52YWx1ZSk7XG4gIH1cblxuICBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmhpZGVEZXRhaWwgJiZcbiAgICAgIHRoaXMubmFtZUNvbHVtbkRldGFpbCAmJlxuICAgICAgcm93LiRzaG93RGV0YWlsICYmXG4gICAgICB0aGlzLmNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiZcbiAgICAgICF0aGlzLmhhc1Jvd1RlbXBsYXRlXG4gICAgKTtcbiAgfVxuXG4gIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnRhYmxlUm93VGVtcGxhdGUgJiYgdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdyhyb3csIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2tMaW5rKGV2ZW50LCByb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlQ29sdW1ucy5lbWl0KGNvbHVtbnMpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblZpc2libGVDb2x1bW5zQ2hhbmdlKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoIDwgZXZlbnQudGFyZ2V0LnNjcm9sbFdpZHRoICYmIGV2ZW50LnRhcmdldC5pbm5lclRleHQudHJpbSgpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICB0aGlzLmNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlUG9wdXAocm93LCB0YXJnZXRSZWYpIHtcbiAgICB0aGlzLnBvcHVwVGFyZ2V0ID0gdGFyZ2V0UmVmO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5wb1BvcHVwQ29tcG9uZW50LnRvZ2dsZShyb3cpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdmFsaWRhdGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICh0eXBlb2YgdGFibGVBY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ29sdW1uTWFuYWdlcigpIHtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkID0gWy4uLnRoaXMuY29sdW1uc107XG4gIH1cblxuICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UoaXRlbXM6IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHRoaXMuc29ydEFycmF5KHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEFycmF5PHN0cmluZz4+KSB7XG4gICAgaWYgKCF0aGlzLm1haW5Db2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uZml4ZWQpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1haW5Db2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy5oaWRlQ29sdW1uc01hbmFnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zID0gdGhpcy5tYWluQ29sdW1ucztcbiAgICAgICAgY29uc3QgZGV0YWlsID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT09ICdkZXRhaWwnKVswXTtcblxuICAgICAgICBpZiAoZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5wdXNoKGRldGFpbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbHVtbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMubmV3T3JkZXJDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMub25WaXNpYmxlQ29sdW1uc0NoYW5nZSh0aGlzLm5ld09yZGVyQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlOiBQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgPSB0aGlzLnRhYmxlQ29sdW1uVGVtcGxhdGVzPy5maW5kKFxuICAgICAgdGFibGVDb2x1bW5UZW1wbGF0ZSA9PiB0YWJsZUNvbHVtblRlbXBsYXRlLnRhcmdldFByb3BlcnR5ID09PSBjb2x1bW4ucHJvcGVydHlcbiAgICApO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyB0ZW1wbGF0ZSBwYXJhIGEgY29sdW5hOiAke2NvbHVtbi5wcm9wZXJ0eX0sIHBvciBnZW50aWxlemEgaW5mb3JtZSBhIHByb3ByaWVkYWRlIFtwLXByb3BlcnR5XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQWN0aW9uTGVmdD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNTb21lRml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5maXhlZCA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGhlaWdodCk7XG4gICAgdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA9IHZhbHVlID8gdmFsdWUgLSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5oZWlnaHRUYWJsZVZpcnR1YWwgPSB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyID8gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciAtIHRoaXMuaXRlbVNpemUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG5cbiAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIodGhpcy5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0luZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0luZmluaXRlU2Nyb2xsKCkpIHtcbiAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSAwO1xuXG4gICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzY3JvbGxIZWlnaHQgPj0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5saXRlcmFscy5kZWxldGVTdWNjZXNzZnVsKTtcbiAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbmdlU2l6ZUxvYWRpbmcoKSB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodDtcblxuICAgIGlmICh0YWJsZUhlaWdodCA8PSAxNTApIHtcbiAgICAgIHRoaXMuc2l6ZUxvYWRpbmcgPSAnc20nO1xuICAgIH0gZWxzZSBpZiAodGFibGVIZWlnaHQgPiAxNTAgJiYgdGFibGVIZWlnaHQgPCAyNjApIHtcbiAgICAgIHRoaXMuc2l6ZUxvYWRpbmcgPSAnbWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ2xnJztcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDaGFuZ2VzSXRlbXMoKSB7XG4gICAgY29uc3QgY2hhbmdlc0l0ZW1zID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLml0ZW1zKTtcblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgdGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmICF0aGlzLmhhc0NvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KSB7XG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGluaycgJiYgY29sdW1uLnRvb2x0aXAgJiYgIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbi50b29sdGlwKTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsYWJlbCcpIHtcbiAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdGhpcy5nZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW5MYWJlbD8udG9vbHRpcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHNob3cgdGhlIHRhYmxlXG4gICAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtczogQXJyYXk8YW55PiwgbmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zRmlsdGVyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIG5ld0l0ZW1zXG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uJHNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUl0ZW0oaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleC0tO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgdGhpcy5vbkZpbHRlcmVkSXRlbXNDaGFuZ2UobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUl0ZW1zU2VydmljZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLmFkZChcbiAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuZGVsZXRlSXRlbSh0aGlzLnBhcmFtRGVsZXRlQXBpLCB0aGlzLml0ZW1zU2VsZWN0ZWRbMF1bdGhpcy5wYXJhbURlbGV0ZUFwaV0pLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNTZXJ2aWNlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5wYXJhbXNGaWx0ZXIsXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdJdGVtc0ZpbHRlcmVkLmxlbmd0aCArIDEsXG4gICAgICAgICAgICAgIHBhZ2U6IDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLmFkZChcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVSZXNwb25zZVByb3BlcnRpZXMoaXRlbXMpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zRmlsdGVyZWQ7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmxpdGVyYWxzLmRlbGV0ZUFwaUVycm9yKTtcbiAgICAgICAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5ldmVudERlbGV0ZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCBjdXN0b21JY29uID0gY29sdW1uLmljb25zLmZpbmQoaWNvbiA9PiByb3dJY29ucyA9PT0gaWNvbi52YWx1ZSk7XG4gICAgcmV0dXJuIGN1c3RvbUljb24gPyBbY3VzdG9tSWNvbl0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEhlaWdodFRhYmxlRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudCA/IHRoaXMudGFibGVGb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzSW5maW5pdGVTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgbGV0IHNjcm9sbEhlaWdodCA9IDA7XG5cbiAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICBzY3JvbGxIZWlnaHQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbGFibGUpIHtcbiAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluZmluaXRlU2Nyb2xsICYmIHRoaXMuaGFzSXRlbXMgJiYgIXRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgJiYgdGhpcy5oZWlnaHQgPiAwICYmIHNjcm9sbEhlaWdodCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLnBvLXRhYmxlLWNvbnRhaW5lci1vdmVyZmxvdycpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IHRoaXMuZGVmYXVsdFNlcnZpY2Uuc2Nyb2xsTGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUN1c3RvbUljb25zKHJvd0ljb25zOiBBcnJheTxzdHJpbmc+LCBjdXN0b21JY29uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IG1lcmdlZEljb25zID0gW107XG5cbiAgICByb3dJY29ucy5mb3JFYWNoKGNvbHVtblZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kQ3VzdG9tSWNvbiA9IGN1c3RvbUljb25zLmZpbmQoXG4gICAgICAgIGN1c3RvbUljb24gPT4gY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24uaWNvbiB8fCBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi52YWx1ZVxuICAgICAgKTtcbiAgICAgIGZvdW5kQ3VzdG9tSWNvbiA/IG1lcmdlZEljb25zLnB1c2goZm91bmRDdXN0b21JY29uKSA6IG1lcmdlZEljb25zLnB1c2goY29sdW1uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEljb25zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVPcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlT3BhY2l0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0KGNvbXBhcmUsIHNlbGVjdFZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21wYXJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtID09PSBjb21wYXJlKSB7XG4gICAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBzZWxlY3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGNvbXBhcmUoaXRlbSkpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zXCI+XG4gIDxkaXZcbiAgICAjY29sdW1uQmF0Y2hBY3Rpb25zXG4gICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgaXRlbXNTZWxlY3RlZC5sZW5ndGggPiAwICYmICFoaWRlQmF0Y2hBY3Rpb25zXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtYmF0Y2gtYWN0aW9uc1wiXG4gID5cbiAgICA8ZGl2IFtuZ1BsdXJhbF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19sYWJlbFwiPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0wXCI+e3sgbGl0ZXJhbHMubm9JdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0xXCI+e3sgbGl0ZXJhbHMub25lSXRlbSB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJvdGhlclwiPnt7IGl0ZW1zU2VsZWN0ZWQubGVuZ3RoIH19IHt7IGxpdGVyYWxzLm11bHRpcGxlSXRlbXMgfX08L25nLXRlbXBsYXRlPlxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICA8cG8tYnV0dG9uXG4gICAgICAgIHAtaWNvbj1cIklDT05fREVMRVRFXCJcbiAgICAgICAgW3AtZGFuZ2VyXT1cInRydWVcIlxuICAgICAgICBbcC1kaXNhYmxlZF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDEgJiYgc2VydmljZURlbGV0ZUFwaSAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgICAgICAgKHAtY2xpY2spPVwibW9kYWxEZWxldGUub3BlbigpXCJcbiAgICAgID48L3BvLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjY29sdW1uTWFuYWdlciAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWNvbHVtbi1tYW5hZ2VyXCI+XG4gICAgPHBvLWJ1dHRvblxuICAgICAgI2NvbHVtbk1hbmFnZXJUYXJnZXRcbiAgICAgIHAtaWNvbj1cIklDT05fU0VUVElOR1NcIlxuICAgICAgcC1raW5kPVwidGVydGlhcnlcIlxuICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICBbcC1hcmlhLWxhYmVsXT1cImxpdGVyYWxzLmNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgKHAtY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICA+PC9wby1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYmxlU2VhcmNoICYmIGhhc1ZhbGlkQ29sdW1uc1wiIGNsYXNzPVwicG8tdGFibGUtc2VhcmNoXCI+XG4gICAgPHBvLXNlYXJjaFxuICAgICAgW3AtaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgW3AtZmlsdGVyLWtleXNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgIFtwLWZpbHRlci10eXBlXT1cImZpbHRlclR5cGVcIlxuICAgICAgKHAtZmlsdGVyZWQtaXRlbXMtY2hhbmdlKT1cIm9uRmlsdGVyZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9wby1zZWFyY2g+XG4gIDwvZGl2PlxuPC9kaXY+XG48cG8tY29udGFpbmVyICpuZ0lmPVwiY29udGFpbmVyOyBlbHNlIHRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIiBwLW5vLXBhZGRpbmc+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3BvLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRhaW5lclRlbXBsYXRlPlxuICA8ZGl2IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItc3RpY2t5XT1cImxvYWRpbmdcIj5cbiAgICA8cG8tbG9hZGluZy1vdmVybGF5ICpuZ0lmPVwibG9hZGluZ1wiIFtwLXRleHRdPVwibGl0ZXJhbHMubG9hZGluZ0RhdGFcIiBbcC1zaXplXT1cInNpemVMb2FkaW5nXCI+PC9wby1sb2FkaW5nLW92ZXJsYXk+XG4gICAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLW1haW4tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICN0YWJsZVdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJwby10YWJsZS13cmFwcGVyXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1jb2x1bW5zLXBpeGVsc109XCJhbGxDb2x1bW5zV2lkdGhQaXhlbHNcIlxuICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0YWJsZU9wYWNpdHlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVpZ2h0XCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRib2R5IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItZml4ZWQtaW5uZXJdPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiIGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyLW92ZXJmbG93XCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGVpZ2h0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWZvb3RlclwiICpuZ0lmPVwiaGFzRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHN1YnRpdGxlQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWZvb3RlciBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiIFtwLXN1YnRpdGxlc109XCJjb2x1bW4uc3VidGl0bGVzXCI+IDwvcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU2hvdyBNb3JlIEJ1dHRvbiAtLT5cbjxkaXZcbiAgKm5nSWY9XCIhaW5maW5pdGVTY3JvbGxcIlxuICBjbGFzcz1cInBvLXJvdyBwby10YWJsZS1mb290ZXItc2hvdy1tb3JlXCJcbiAgW2NsYXNzLnBvLWludmlzaWJsZV09XCJzaG93TW9yZS5vYnNlcnZlcnMubGVuZ3RoID09PSAwICYmICFoYXNTZXJ2aWNlXCJcbiAgI3RhYmxlRm9vdGVyXG4+XG4gIDxwby1idXR0b25cbiAgICBjbGFzcz1cInBvLW9mZnNldC14bC00IHBvLW9mZnNldC1sZy00IHBvLW9mZnNldC1tZC0zIHBvLWxnLTQgcG8tbWQtNlwiXG4gICAgW3AtZGlzYWJsZWRdPVwic2hvd01vcmVEaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCJcbiAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdTaG93TW9yZVwiXG4gICAgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCJcbiAgPlxuICA8L3BvLWJ1dHRvbj5cbjwvZGl2PlxuXG48IS0tIFRhYmxlIGRlZmF1bHQtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlXG4gICAgI3RhYmxlU2Nyb2xsYWJsZVxuICAgIGNsYXNzPVwicG8tdGFibGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICdwby10YWJsZS1zZWxlY3RhYmxlJzogc2VsZWN0YWJsZSxcbiAgICAgICdwby10YWJsZS1zdHJpcGVkJzogc3RyaXBlZCxcbiAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgJ3BvLXRhYmxlLXRleHQtd3JhcC1lbmFibGVkJzogdGV4dFdyYXBcbiAgICB9XCJcbiAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gID5cbiAgICA8dGhlYWQgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdGlja3ldPVwiaGVpZ2h0ID4gMCAmJiAhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgPHRyXG4gICAgICAgIFtuZ0NsYXNzXT1cIiFoZWlnaHQgPyB7ICduby1ob3Zlcic6IGhpZGVTZWxlY3RBbGwsICdwby10YWJsZS1jb2x1bW4tZHJhZyc6IHRoaXMuaXNEcmFnZ2FibGUgfSA6ICcnXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cImhpZGVTZWxlY3RBbGwgPyAnbm9uZScgOiAnYXV0bydcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7IHRoZW4gdGFibGVEZWZhdWx0VGhEcmFnRHJvcDsgZWxzZSB0YWJsZURlZmF1bHRUaERlZmF1bHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRHJhZ0Ryb3A+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICd3aWR0aCc6XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID4gMCAmJiAhdmlydHVhbFNjcm9sbCA/ICghaGFzSXRlbXMgPyAnMTAwJScgOiBhcHBseUZpeGVkQ29sdW1ucygpID8gY29sdW1uLndpZHRoIDogJ2F1dG8nKSA6ICcnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1kcmFnLWJveF09XCJ0aGlzLmlzRHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgIDxwby1pY29uIGNka0RyYWdIYW5kbGUgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX0RSQUdcIj48L3BvLWljb24+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRGVmYXVsdD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgJ3dpZHRoJzpcbiAgICAgICAgICAgICAgICBoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsID8gKCFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycpIDogJydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG5cbiAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvdyBwby10YWJsZS1yb3ctbm8tZGF0YVwiPlxuICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICBbcC1wYXJlbnQtcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gICAgPlxuICAgICAgPHRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLXN0aWNreVwiIFtzdHlsZS50b3BdPVwiaW52ZXJzZU9mVHJhbnNsYXRpb25cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7XG4gICAgICAgICAgICAgIHRoZW4gdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcDtcbiAgICAgICAgICAgICAgZWxzZSB0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHQ+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uIGV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgICAgW3AtcGFyZW50LXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtZGV0YWlsPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tcG9wdXAgI3BvcHVwIFtwLWFjdGlvbnNdPVwiYWN0aW9uc1wiIFtwLXRhcmdldF09XCJwb3B1cFRhcmdldFwiPiA8L3BvLXBvcHVwPlxuXG48bmctdGVtcGxhdGUgI3BvVGFibGVDb2x1bW5EZXRhaWwgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxwby1pY29uXG4gICAgKm5nSWY9XCIoY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJiAhaGFzUm93VGVtcGxhdGUpIHx8IChpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KSAmJiBoYXNSb3dUZW1wbGF0ZSlcIlxuICAgIFtwLWljb25dPVwicm93LiRzaG93RGV0YWlsID8gJ0lDT05fQVJST1dfVVAnIDogJ0lDT05fQVJST1dfRE9XTidcIlxuICAgIGNsYXNzPVwicG8tY2xpY2thYmxlXCJcbiAgPlxuICA8L3BvLWljb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0UmFkaW8gbGV0LXJvdz5cbiAgPHBvLXJhZGlvIFtuYW1lXT1cImlkUmFkaW9cIiBbcC1jaGVja2VkXT1cInJvdy4kc2VsZWN0ZWRcIiAocC1jaGFuZ2Utc2VsZWN0ZWQpPVwic2VsZWN0Um93KHJvdylcIj48L3BvLXJhZGlvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dENoZWNrYm94IGxldC1yb3c+XG4gIDxwby1jaGVja2JveFxuICAgIG5hbWU9XCJjaGVja2JveFwiXG4gICAgKHAtY2hhbmdlKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICBbcC1jaGVja2JveFZhbHVlXT1cInJvdy4kc2VsZWN0ZWQgPT09IG51bGwgPyAnbWl4ZWQnIDogcm93LiRzZWxlY3RlZFwiXG4gID48L3BvLWNoZWNrYm94PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SGVhZGVyVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPHNwYW5cbiAgICAjY29sdW1uSGVhZGVyXG4gICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudClcIlxuICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICA+XG4gICAge3sgY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwic29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tdW5zZWxlY3RlZF09XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWRlc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tYXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVFwiPjwvcG8taWNvbj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTE4LjI5MjkgMTUuMjkyOUwxNyAxNi41ODU4TDE3IDEwQzE3IDkuNDQ3NzIgMTYuNTUyMyA5IDE2IDlDMTUuNDQ3NyA5IDE1IDkuNDQ3NzIgMTUgMTBMMTUgMTYuNTg1OEwxMy43MDcxIDE1LjI5MjlDMTMuMzE2NiAxNC45MDI0IDEyLjY4MzQgMTQuOTAyNCAxMi4yOTI5IDE1LjI5MjlDMTEuOTAyNCAxNS42ODM0IDExLjkwMjQgMTYuMzE2NiAxMi4yOTI5IDE2LjcwNzFMMTUuMjkyOSAxOS43MDcxQzE1LjY4MzQgMjAuMDk3NiAxNi4zMTY2IDIwLjA5NzYgMTYuNzA3MSAxOS43MDcxTDE5LjcwNzEgMTYuNzA3MUMyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNS42ODM0IDE5LjcwNzEgMTUuMjkyOUMxOS4zMTY2IDE0LjkwMjQgMTguNjgzNCAxNC45MDI0IDE4LjI5MjkgMTUuMjkyOVpNNS43MDcxNiA4LjcwNzFMNy4wMDAwNiA3LjQxNDJMNy4wMDAwMyAxNEM3LjAwMDAyIDE0LjU1MjMgNy40NDc3NCAxNSA4LjAwMDAyIDE1QzguNTUyMzEgMTUgOS4wMDAwMiAxNC41NTIzIDkuMDAwMDMgMTRMOS4wMDAwNiA3LjQxNDE4TDEwLjI5MjkgOC43MDcwN0MxMC42ODM1IDkuMDk3NTkgMTEuMzE2NiA5LjA5NzU4IDExLjcwNzIgOC43MDcwNkMxMi4wOTc3IDguMzE2NTMgMTIuMDk3NyA3LjY4MzM2IDExLjcwNzIgNy4yOTI4NEw4LjcwNzE4IDQuMjkyODZDOC4zMTY2NSAzLjkwMjM0IDcuNjgzNDkgMy45MDIzNSA3LjI5Mjk2IDQuMjkyODdMNC4yOTI5NSA3LjI5Mjg5QzMuOTAyNDIgNy42ODM0MiAzLjkwMjQyIDguMzE2NTggNC4yOTI5NCA4LjcwNzExQzQuNjgzNDcgOS4wOTc2MyA1LjMxNjYzIDkuMDk3NjIgNS43MDcxNiA4LjcwNzFaXCJcbiAgICAgICAgICBmaWxsPVwiIzFEMUQzMFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVF9BU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMSA5LjQxNDIxTDkuNzA3MTEgMTAuNzA3MUM5LjMxNjU4IDExLjA5NzYgOC42ODM0MiAxMS4wOTc2IDguMjkyODkgMTAuNzA3MUM3LjkwMjM3IDEwLjMxNjYgNy45MDIzNyA5LjY4MzQyIDguMjkyODkgOS4yOTI4OUwxMS4yOTI5IDYuMjkyODlDMTEuNjgzNCA1LjkwMjM3IDEyLjMxNjYgNS45MDIzNyAxMi43MDcxIDYuMjkyODlMMTUuNzA3MSA5LjI5Mjg5QzE2LjA5NzYgOS42ODM0MiAxNi4wOTc2IDEwLjMxNjYgMTUuNzA3MSAxMC43MDcxQzE1LjMxNjYgMTEuMDk3NiAxNC42ODM0IDExLjA5NzYgMTQuMjkyOSAxMC43MDcxTDEzIDkuNDE0MjFWMTZDMTMgMTYuNTUyMyAxMi41NTIzIDE3IDEyIDE3QzExLjQ0NzcgMTcgMTEgMTYuNTUyMyAxMSAxNlY5LjQxNDIxWlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiBjZGtEcmFnSGFuZGxlICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9TT1JUX0RFU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk05LjcwNzExIDEzLjI5MjlMMTEgMTQuNTg1OFY3QzExIDYuNDQ3NzIgMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDYuNDQ3NzIgMTMgN1YxNC41ODU4TDE0LjI5MjkgMTMuMjkyOUMxNC42ODM0IDEyLjkwMjQgMTUuMzE2NiAxMi45MDI0IDE1LjcwNzEgMTMuMjkyOUMxNi4wOTc2IDEzLjY4MzQgMTYuMDk3NiAxNC4zMTY2IDE1LjcwNzEgMTQuNzA3MUwxMi43MDcxIDE3LjcwNzFDMTIuMzE2NiAxOC4wOTc2IDExLjY4MzQgMTguMDk3NiAxMS4yOTI5IDE3LjcwNzFMOC4yOTI4OSAxNC43MDcxQzcuOTAyMzcgMTQuMzE2NiA3LjkwMjM3IDEzLjY4MzQgOC4yOTI4OSAxMy4yOTI5QzguNjgzNDIgMTIuOTAyNCA5LjMxNjU4IDEyLjkwMjQgOS43MDcxMSAxMy4yOTI5WlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwiaGVhZGVyV2lkdGhcIj5cbiAgICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhvdXRIZWlnaHQ+XG4gIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBhw6fDtWVzIC0tPlxuPG5nLXRlbXBsYXRlICNBY3Rpb25zQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDx0ZFxuICAgICpuZ0lmPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1zaW5nbGUtYWN0aW9uXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIGFjdGlvblJpZ2h0ID8gZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkgOiAnJ1wiXG4gICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJmaXJzdEFjdGlvbi52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24gcG8tY2xpY2thYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWJsZS1hY3Rpb24tZGlzYWJsZWRdPVwiZmlyc3RBY3Rpb24uZGlzYWJsZWQgPyB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pIDogZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cImV4ZWN1dGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJmaXJzdEFjdGlvbi5pY29uXCIgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uLWNvbnRlbnRcIiBbcC1pY29uXT1cImZpcnN0QWN0aW9uLmljb25cIj48L3BvLWljb24+XG4gICAgICB7eyBmaXJzdEFjdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L3RkPlxuXG4gIDx0ZCAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDFcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1hY3Rpb25zXCI+XG4gICAgPGRpdiAjcG9wdXBUYXJnZXQgY2xhc3M9XCJwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAocm93LCBwb3B1cFRhcmdldClcIj5cbiAgICAgIDxwby1pY29uIHAtaWNvbj1cIklDT05fTU9SRVwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby10YWJsZS1jb2x1bW4tbWFuYWdlclxuICAqbmdJZj1cIiFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICBbcC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcC1tYXgtY29sdW1uc109XCJtYXhDb2x1bW5zXCJcbiAgW3AtdGFyZ2V0XT1cImNvbHVtbk1hbmFnZXJUYXJnZXRcIlxuICBbcC1sYXN0LXZpc2libGUtY29sdW1ucy1zZWxlY3RlZF09XCJsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZFwiXG4gIFtwLWhpZGUtYWN0aW9uLWZpeGVkLWNvbHVtbnNdPVwiaGlkZUFjdGlvbkZpeGVkQ29sdW1uc1wiXG4gIChwLXZpc2libGUtY29sdW1ucy1jaGFuZ2UpPVwib25WaXNpYmxlQ29sdW1uc0NoYW5nZSgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICBbcC1jb2x1bW5zLWRlZmF1bHRdPVwiaW5pdGlhbENvbHVtbnNcIlxuICAocC1pbml0aWFsLWNvbHVtbnMpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbj5cbjwvcG8tdGFibGUtY29sdW1uLW1hbmFnZXI+XG5cbjxwby1tb2RhbFxuICAjbW9kYWxEZWxldGVcbiAgW3AtdGl0bGVdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgW3AtcHJpbWFyeS1hY3Rpb25dPVwiY29uZmlybVwiXG4gIFtwLXNlY29uZGFyeS1hY3Rpb25dPVwiY2xvc2VcIlxuICBbcC1jbGljay1vdXRdPVwidHJ1ZVwiXG4+XG4gIDxwIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+e3sgbGl0ZXJhbHMuYm9keURlbGV0ZSB9fTwvcD5cbjwvcG8tbW9kYWw+XG4iXX0=
|
|
2377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwr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QixtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQjs7a0ZBbEYxQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2Nyb2xsYWJsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVNjcm9sbGFibGU7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKSArXG4gICAgICB0aGlzLmNvdW50RXh0cmFDb2x1bW5zKCk7XG5cbiAgICByZXR1cm4gY29sdW1uQ291bnQgfHwgMTtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbCgpIHtcbiAgICAvLyBjYXNvIHRpdmVyIGHDp8O1ZXMgc2Vyw6EgdXRpbGl6YWRvIGEgc3VhIGNvbHVuYSBwYXJhIGV4aWJpciBvIGNvbHVtbk1hbmFnZXJcbiAgICByZXR1cm4gdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggKyAxICsgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICsgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKTtcbiAgfVxuXG4gIGdldCBkZXRhaWxIaWRlU2VsZWN0KCkge1xuICAgIGNvbnN0IG1hc3RlckRldGFpbCA9IHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsO1xuICAgIHJldHVybiBtYXN0ZXJEZXRhaWwgJiYgbWFzdGVyRGV0YWlsLmRldGFpbCA/IG1hc3RlckRldGFpbC5kZXRhaWwuaGlkZVNlbGVjdCA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGZpcnN0QWN0aW9uKCk6IFBvVGFibGVBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnNbMF07XG4gIH1cblxuICBnZXQgaGFzRm9vdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNNYXN0ZXJEZXRhaWxDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5oaWRlRGV0YWlsICYmICEhKHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsIHx8IHRoaXMuaGFzUm93VGVtcGxhdGUpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlUm93VGVtcGxhdGU7XG4gIH1cblxuICBnZXQgaGFzU2VsZWN0YWJsZUNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNNYWluQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNWYWxpZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52YWxpZENvbHVtbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VidGl0bGVDb2x1bW5zLnNvbWUoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgaXNTaW5nbGVBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgZ2V0IGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW52ZXJzZU9mVHJhbnNsYXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmlld1BvcnQgfHwgIXRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSkge1xuICAgICAgcmV0dXJuICctMHB4JztcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZpZXdQb3J0WydfcmVuZGVyZWRDb250ZW50T2Zmc2V0J107XG5cbiAgICByZXR1cm4gYC0ke29mZnNldH1weGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlkUmFkaW8gPSBgcG8tcmFkaW8tJHt1dWlkKCl9YDtcbiAgfVxuXG4gIGNoYW5nZUhlYWRlcldpZHRoKCkge1xuICAgIGlmICh0aGlzLm5vQ29sdW1uc0hlYWRlcikge1xuICAgICAgdGhpcy5oZWFkZXJXaWR0aCA9IHRoaXMubm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZUhlYWRlcldpZHRoKCk7XG4gICAgdGhpcy5jaGFuZ2VTaXplTG9hZGluZygpO1xuICAgIHRoaXMuYXBwbHlGaXhlZENvbHVtbnMoKTtcbiAgfVxuXG4gIHNob3dNb3JlSW5maW5pdGVTY3JvbGwoeyB0YXJnZXQgfSk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFyZ2V0Lm9mZnNldEhlaWdodCArIHRhcmdldC5zY3JvbGxUb3A7XG4gICAgaWYgKCF0aGlzLnNob3dNb3JlRGlzYWJsZWQgJiYgc2Nyb2xsUG9zaXRpb24gPj0gdGFyZ2V0LnNjcm9sbEhlaWdodCAqICh0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2UgLyAxMTApKSB7XG4gICAgICB0aGlzLm9uU2hvd01vcmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICAgIHRoaXMuY2hlY2tDaGFuZ2VzSXRlbXMoKTtcbiAgICB0aGlzLnZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCk7XG5cbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBjYWJlw6dhbGhvcyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZT8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgYnVzY2Egbm8gc2VydmnDp28gZGUgZGFkb3MgcG9kZW5kbyBpbmZvcm1hciBmaWx0cm9zIGUgY29tIG8gcmV0b3JubywgYXR1YWxpemEgYSB0YWJlbGEuXG4gICAqXG4gICAqIENhc28gbsOjbyBzZWphIGluZm9ybWFkbyBwYXLDom1ldHJvLCBuYWRhIHNlcsOhIGFkaWNpb25hZG8gYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKiA+IE9iczogb3MgcGFyw6JtZXRyb3MgYHBhZ2VgIGUgYHBhZ2VTaXplYCBzZW1wcmUgc2Vyw6NvIGNoYW1hZG9zIGluZGVwZW5kZW50ZSBkZSBzZXIgZW52aWFkb3Mgb3V0cm9zIHBhcsOibWV0cm9zLlxuICAgKlxuICAgKiBDYXNvIHNlamFtIGluZm9ybWFkb3Mgb3MgcGFyw6JtZXRyb3MgYHsgbmFtZTogJ0pPSE4nLCBhZ2U6ICcyMycgfWAsIHRvZG9zIHNlcsOjbyBhZGljaW9uYWRvcyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmbmFtZT1KT0hOJmFnZT0yM1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSBxdWVyeVBhcmFtcyBGb3JtYXRvIGRvIG9iamV0byBhIHNlciBlbnZpYWRvLlxuICAgKiA+IFBvZGUgc2VyIHV0aWxpemFkYSBxdWFscXVlciBzdHJpbmcgY29tbyBrZXksIGUgcXVhbHF1ZXIgc3RyaW5nIG91IG51bWJlciBjb21vIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSkge1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pbml0aWFsaXplRGF0YShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgY29sdW1ucyBwb3NzdWVtIGEgcHJvcHJpZWRhZGUgd2lkdGguXG4gICAqL1xuICBhcHBseUZpeGVkQ29sdW1ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY29sdW1ucy5zb21lKGNvbHVtbiA9PiAhY29sdW1uLndpZHRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBjb2xhcHNhIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBjb2xhcHNhZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGNvbGxhcHNlKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBleHBhbmRlIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBleHBhbmRpZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGV4cGFuZChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBuw6NvIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRVbnNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIGFzIGxpbmhhcyBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIHVuc2VsZWN0Um93cygpIHtcbiAgICBjb25zdCBjb2x1bW5EZXRhaWwgPSB0aGlzLm5hbWVDb2x1bW5EZXRhaWw7XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBkZXRhaWxJdGVtcyA9IGNvbHVtbkRldGFpbCA/IGl0ZW1bY29sdW1uRGV0YWlsXSA6IG51bGw7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbEl0ZW1zKSkge1xuICAgICAgICBkZXRhaWxJdGVtcy5mb3JFYWNoKGRldGFpbEl0ZW0gPT4ge1xuICAgICAgICAgIGRldGFpbEl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRpc2FibGVkID8gY29sdW1uLmRpc2FibGVkKHJvdykgOiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXSAmJiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXS5sZW5ndGg7XG4gIH1cblxuICBleGVjdXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXJvdy5kaXNhYmxlZCAmJiAhdGhpcy52YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgdGFibGVBY3Rpb24pKSB7XG4gICAgICB0YWJsZUFjdGlvbi5hY3Rpb24ocm93KTtcbiAgICAgIHRoaXMudG9nZ2xlUm93QWN0aW9uKHJvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIHVtYSBsaW5oYSBxdWUgZXN0w6Egc2VsZWNpb25hZGEuXG4gICAqL1xuICB1bnNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjaW9uYSB1bWEgbGluaGEgZG8gJ3BvLXRhYmxlJy5cbiAgICovXG4gIHNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgdHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBlbGEgZXhjbHVzw6NvIGRlIGl0ZW5zIGVtIGxvdGUuXG4gICAqIENhc28gYSB0YWJlbGEgZXN0ZWphIGV4ZWN1dGFuZG8gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWRlbGV0ZWAsIHNlcsOhIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgMSBpdGVtIHBvciB2ZXouXG4gICAqXG4gICAqIEFvIHV0aWxpemFyIGBwLXNlcnZpY2UtZGVsZXRlYCBtYXMgc2VtIGEgcHJvcHJpZWRhZGUgYHAtc2VydmljZS1hcGlgLCBzZXLDoSByZXNwb25zYWJpbGlkYWRlIGRvIHVzdcOhcmlvIG8gdHJhdGFtZW50b1xuICAgKiBhcMOzcyBhIHJlcXVpc2nDp8OjbyBERUxFVEUgc2VyIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQ2FzbyBhIHRhYmVsYSB1dGlsaXplIGBwLWhlaWdodGAgZSBlc3RlamEgc2VtIHNlcnZpw6dvLCDDqSBuZWNlc3PDoXJpbyBhIHJlYXRyaWJ1acOnw6NvIGRvcyBpdGVucyB1dGlsaXphbmRvIG8gZXZlbnRvIGAocC1kZWxldGUtaXRlbXMpYCwgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKjxwby10YWJsZVxuICAgKiAgKHAtZGVsZXRlLWl0ZW1zKT1cIml0ZW1zID0gJGV2ZW50XCJcbiAgICogPlxuICAgKjwvcG8tdGFibGU+XG4gICAqIGBgYFxuICAgKi9cbiAgZGVsZXRlSXRlbXMoKSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gICAgY29uc3QgbmV3SXRlbXNGaWx0ZXJlZCA9IFsuLi5uZXdJdGVtc10uZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKTtcblxuICAgIGlmICghdGhpcy5zZXJ2aWNlRGVsZXRlQXBpKSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXMsIG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zU2VydmljZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIGNvbnN0IGFycmF5UHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICBpZiAoYXJyYXlQcm9wZXJ0eS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBuZXN0ZWRQcm9wZXJ0aWVzID0gYXJyYXlQcm9wZXJ0eTtcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gcm93O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBuZXN0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcGVydHldIHx8IHZhbHVlW3Byb3BlcnR5XSA9PT0gMCA/IHZhbHVlW3Byb3BlcnR5XSA6ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcm93W2NvbHVtbi5wcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgZ2V0Qm9vbGVhbkxhYmVsKHJvd1ZhbHVlOiBhbnksIGNvbHVtbkJvb2xlYW46IFBvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChyb3dWYWx1ZSB8fCByb3dWYWx1ZSA9PT0gZmFsc2UgfHwgcm93VmFsdWUgPT09IDApIHtcbiAgICAgIHJvd1ZhbHVlID0gY29udmVydFRvQm9vbGVhbihyb3dWYWx1ZSk7XG5cbiAgICAgIGlmIChjb2x1bW5Cb29sZWFuLmJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gY29sdW1uQm9vbGVhbi5ib29sZWFuLnRydWVMYWJlbCB8fCAnU2ltJyA6IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi5mYWxzZUxhYmVsIHx8ICdOw6NvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/ICdTaW0nIDogJ07Do28nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dWYWx1ZTtcbiAgfVxuXG4gIGdldENvbHVtbkljb25zKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCByb3dJY29ucyA9IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pO1xuXG4gICAgaWYgKGNvbHVtbi5pY29ucykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93SWNvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnMsIGNvbHVtbi5pY29ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93SWNvbnM7XG4gIH1cblxuICBnZXRDb2x1bW5MYWJlbChyb3c6IGFueSwgY29sdW1uTGFiZWw6IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlQ29sdW1uTGFiZWwge1xuICAgIHJldHVybiBjb2x1bW5MYWJlbC5sYWJlbHMuZmluZChsYWJlbEl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbkxhYmVsKSA9PT0gbGFiZWxJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlQ29sdW1uKHJvdzogYW55LCBzdWJ0aXRsZUNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHN1YnRpdGxlQ29sdW1uLnN1YnRpdGxlcy5maW5kKHN1YnRpdGxlSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgc3VidGl0bGVDb2x1bW4pID09PSBzdWJ0aXRsZUl0ZW0udmFsdWUpO1xuICB9XG5cbiAgaXNTaG93TWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5oaWRlRGV0YWlsICYmXG4gICAgICB0aGlzLm5hbWVDb2x1bW5EZXRhaWwgJiZcbiAgICAgIHJvdy4kc2hvd0RldGFpbCAmJlxuICAgICAgdGhpcy5jb250YWluc01hc3RlckRldGFpbChyb3cpICYmXG4gICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVxuICAgICk7XG4gIH1cblxuICBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZVJvd1RlbXBsYXRlICYmIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cocm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkNsaWNrTGluayhldmVudCwgcm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoY29sdW1uczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJsZUNvbHVtbnMuZW1pdChjb2x1bW5zKTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzdG9yZU1hbmFnZXIodmFsdWU6IEFycmF5PFN0cmluZz4pIHtcbiAgICB0aGlzLmNvbHVtblJlc3RvcmVNYW5hZ2VyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25WaXNpYmxlQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b29sdGlwTW91c2VFbnRlcihldmVudDogYW55LCBjb2x1bW4/OiBQb1RhYmxlQ29sdW1uLCByb3c/OiBhbnkpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCA8IGV2ZW50LnRhcmdldC5zY3JvbGxXaWR0aCAmJiBldmVudC50YXJnZXQuaW5uZXJUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gZXZlbnQudGFyZ2V0LmlubmVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgdGhpcy5jaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVBvcHVwKHJvdywgdGFyZ2V0UmVmKSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUocm93KTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhbGlkYXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRhYmxlQWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbkNvbHVtbk1hbmFnZXIoKSB7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZCA9IFsuLi50aGlzLmNvbHVtbnNdO1xuICB9XG5cbiAgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKGl0ZW1zOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5KSB7XG4gICAgICB0aGlzLnNvcnRBcnJheSh0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSwgdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nLCBpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSByZW1vdmUgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgcmVtb3ZpZG8uXG4gICAqID4gQW8gcmVtb3ZlciBvIGl0ZW0sIGEgbGluaGEgcXVlIG8gcmVwcmVzZW50YSBzZXLDoSBleGNsdcOtZGEgZGEgdGFiZWxhLlxuICAgKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihmaWx0ZXJJdGVtID0+IGZpbHRlckl0ZW0gIT09IGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gaXRlbTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgYXR1YWxpemEgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgYXR1YWxpemFkby5cbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSB1cGRhdGVkSXRlbSBJdGVtIHF1ZSBmb2kgYXR1YWxpemFkby5cbiAgICogPiBBbyBhdHVhbGl6YXIgbyBpdGVtLCBhIGluZm9ybWHDp8OjbyBzZXLDoSBhbHRlcmFkYSBuYSB0YWJlbGEuXG4gICAqL1xuICB1cGRhdGVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHVwZGF0ZWRJdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaXRlbSwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGluZGV4SXRlbSA9PiBpbmRleEl0ZW0gPT09IGl0ZW0pO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxBcnJheTxzdHJpbmc+Pikge1xuICAgIGlmICghdGhpcy5tYWluQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdLmZpeGVkKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5tYWluQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcblxuICAgICAgaWYgKHRoaXMuaGlkZUNvbHVtbnNNYW5hZ2VyID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucyA9IHRoaXMubWFpbkNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGRldGFpbCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb3BlcnR5ID09PSAnZGV0YWlsJylbMF07XG5cbiAgICAgICAgaWYgKGRldGFpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMucHVzaChkZXRhaWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0udmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCBpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLm5ld09yZGVyQ29sdW1ucztcblxuICAgICAgICB0aGlzLm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UodGhpcy5uZXdPcmRlckNvbHVtbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZShjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZTogUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlID0gdGhpcy50YWJsZUNvbHVtblRlbXBsYXRlcz8uZmluZChcbiAgICAgIHRhYmxlQ29sdW1uVGVtcGxhdGUgPT4gdGFibGVDb2x1bW5UZW1wbGF0ZS50YXJnZXRQcm9wZXJ0eSA9PT0gY29sdW1uLnByb3BlcnR5XG4gICAgKTtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gdGVtcGxhdGUgcGFyYSBhIGNvbHVuYTogJHtjb2x1bW4ucHJvcGVydHl9LCBwb3IgZ2VudGlsZXphIGluZm9ybWUgYSBwcm9wcmllZGFkZSBbcC1wcm9wZXJ0eV1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkFjdGlvbkxlZnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgaGFzU29tZUZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZml4ZWQgPT09IHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVWaXJ0dWFsID0gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA/IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgLSB0aGlzLml0ZW1TaXplIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCkge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuXG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNJbmZpbml0ZVNjcm9sbCgpKSB7XG4gICAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gMDtcblxuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgICBzY3JvbGxIZWlnaHQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2Nyb2xsSGVpZ2h0ID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZExpc3QoKTtcbiAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMubGl0ZXJhbHMuZGVsZXRlU3VjY2Vzc2Z1bCk7XG4gICAgdGhpcy5ldmVudERlbGV0ZS5lbWl0KG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZVNpemVMb2FkaW5nKCkge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGhpcy50YWJsZVdyYXBwZXJFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQ7XG5cbiAgICBpZiAodGFibGVIZWlnaHQgPD0gMTUwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ3NtJztcbiAgICB9IGVsc2UgaWYgKHRhYmxlSGVpZ2h0ID4gMTUwICYmIHRhYmxlSGVpZ2h0IDwgMjYwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ21kJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplTG9hZGluZyA9ICdsZyc7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY291bnRFeHRyYUNvbHVtbnMoKTogbnVtYmVyIHtcbiAgICBsZXQgZXh0cmFDb2x1bW5zID0gMDtcblxuICAgIGlmICghdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5oYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSkgJiZcbiAgICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJlxuICAgICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XG4gICAgICApIHtcbiAgICAgICAgZXh0cmFDb2x1bW5zKys7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJlxuICAgICAgICB0aGlzLmhhc01haW5Db2x1bW5zICYmXG4gICAgICAgICh0aGlzLmhhc1Zpc2libGVBY3Rpb25zIHx8IHRoaXMuaGlkZUNvbHVtbnNNYW5hZ2VyKVxuICAgICAgKSB7XG4gICAgICAgIGV4dHJhQ29sdW1ucysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBleHRyYUNvbHVtbnM7XG4gIH1cblxuICBwcml2YXRlIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gc2hvdyB0aGUgdGFibGVcbiAgICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc0xvY2FsKG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgbmV3SXRlbXNcbiAgICAgICAgLnNsaWNlKClcbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS4kc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB0aGlzLm9uRmlsdGVyZWRJdGVtc0NoYW5nZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5kZWxldGVJdGVtKHRoaXMucGFyYW1EZWxldGVBcGksIHRoaXMuaXRlbXNTZWxlY3RlZFswXVt0aGlzLnBhcmFtRGVsZXRlQXBpXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogdmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmFtc0ZpbHRlcixcbiAgICAgICAgICAgICAgcGFnZVNpemU6IG5ld0l0ZW1zRmlsdGVyZWQubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgcGFnZTogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmdldEZpbHRlcmVkSXRlbXMoZmlsdGVyZWRQYXJhbXMpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhpdGVtcyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHRoaXMubGl0ZXJhbHMuZGVsZXRlQXBpRXJyb3IpO1xuICAgICAgICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQodGhpcy5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IGN1c3RvbUljb24gPSBjb2x1bW4uaWNvbnMuZmluZChpY29uID0+IHJvd0ljb25zID09PSBpY29uLnZhbHVlKTtcbiAgICByZXR1cm4gY3VzdG9tSWNvbiA/IFtjdXN0b21JY29uXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVGb290ZXJFbGVtZW50ID8gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNJbmZpbml0ZVNjcm9sbCgpOiBib29sZWFuIHtcbiAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gMDtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50YWJsZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnRhYmxlU2Nyb2xsYWJsZSkge1xuICAgICAgc2Nyb2xsSGVpZ2h0ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5maW5pdGVTY3JvbGwgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJiB0aGlzLmhlaWdodCA+IDAgJiYgc2Nyb2xsSGVpZ2h0ID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgZWxlbWVudCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcucG8tdGFibGUtY29udGFpbmVyLW92ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcihlbGVtZW50KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgPSB0aGlzLnNjcm9sbEV2ZW50JC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5zaG93TW9yZUluZmluaXRlU2Nyb2xsKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnNcIj5cbiAgPGRpdlxuICAgICNjb2x1bW5CYXRjaEFjdGlvbnNcbiAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiBpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDAgJiYgIWhpZGVCYXRjaEFjdGlvbnNcIlxuICAgIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zXCJcbiAgPlxuICAgIDxkaXYgW25nUGx1cmFsXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2xhYmVsXCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj57eyBsaXRlcmFscy5ub0l0ZW0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj57eyBsaXRlcmFscy5vbmVJdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+e3sgaXRlbXNTZWxlY3RlZC5sZW5ndGggfX0ge3sgbGl0ZXJhbHMubXVsdGlwbGVJdGVtcyB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2J1dHRvbnNcIj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgcC1pY29uPVwiSUNPTl9ERUxFVEVcIlxuICAgICAgICBbcC1kYW5nZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoID4gMSAmJiBzZXJ2aWNlRGVsZXRlQXBpICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5kZWxldGVcIlxuICAgICAgICAocC1jbGljayk9XCJtb2RhbERlbGV0ZS5vcGVuKClcIlxuICAgICAgPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb2x1bW5NYW5hZ2VyICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtY29sdW1uLW1hbmFnZXJcIj5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgcC1pY29uPVwiSUNPTl9TRVRUSU5HU1wiXG4gICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtwLWFyaWEtbGFiZWxdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAocC1jbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgID48L3BvLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFibGVTZWFyY2ggJiYgaGFzVmFsaWRDb2x1bW5zXCIgY2xhc3M9XCJwby10YWJsZS1zZWFyY2hcIj5cbiAgICA8cG8tc2VhcmNoXG4gICAgICBbcC1pdGVtc109XCJpdGVtc1wiXG4gICAgICBbcC1maWx0ZXIta2V5c109XCJmaWx0ZXJlZENvbHVtbnNcIlxuICAgICAgW3AtZmlsdGVyLXR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAocC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UpPVwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3BvLXNlYXJjaD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1zdGlja3ldPVwibG9hZGluZ1wiPlxuICAgIDxwby1sb2FkaW5nLW92ZXJsYXkgKm5nSWY9XCJsb2FkaW5nXCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiIFtwLXNpemVdPVwic2l6ZUxvYWRpbmdcIj48L3BvLWxvYWRpbmctb3ZlcmxheT5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtbWFpbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3RhYmxlV3JhcHBlclxuICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWNvbHVtbnMtcGl4ZWxzXT1cImFsbENvbHVtbnNXaWR0aFBpeGVsc1wiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cInRhYmxlT3BhY2l0eVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWlnaHRcIiBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0VGFibGVDb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICNwb1RhYmxlVGJvZHkgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1maXhlZC1pbm5lcl09XCJ2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVWaXJ0dWFsU2Nyb2xsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsXCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXItb3ZlcmZsb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoZWlnaHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJoYXNGb290ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc3VidGl0bGVDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8cG8tdGFibGUtc3VidGl0bGUtZm9vdGVyIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCIgW3Atc3VidGl0bGVzXT1cImNvbHVtbi5zdWJ0aXRsZXNcIj4gPC9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaG93IE1vcmUgQnV0dG9uIC0tPlxuPGRpdlxuICAqbmdJZj1cIiFpbmZpbml0ZVNjcm9sbFwiXG4gIGNsYXNzPVwicG8tcm93IHBvLXRhYmxlLWZvb3Rlci1zaG93LW1vcmVcIlxuICBbY2xhc3MucG8taW52aXNpYmxlXT1cInNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPT09IDAgJiYgIWhhc1NlcnZpY2VcIlxuICAjdGFibGVGb290ZXJcbj5cbiAgPHBvLWJ1dHRvblxuICAgIGNsYXNzPVwicG8tb2Zmc2V0LXhsLTQgcG8tb2Zmc2V0LWxnLTQgcG8tb2Zmc2V0LW1kLTMgcG8tbGctNCBwby1tZC02XCJcbiAgICBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCJcbiAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5sb2FkTW9yZURhdGFcIlxuICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1Nob3dNb3JlXCJcbiAgICAocC1jbGljayk9XCJvblNob3dNb3JlKClcIlxuICA+XG4gIDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0gVGFibGUgZGVmYXVsdC0tPlxuPG5nLXRlbXBsYXRlICN0YWJsZVRlbXBsYXRlPlxuICA8dGFibGVcbiAgICAjdGFibGVTY3JvbGxhYmxlXG4gICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BvLXRhYmxlLWludGVyYWN0aXZlJzogc2VsZWN0YWJsZSB8fCBzb3J0LFxuICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgJ3BvLXRhYmxlLXN0cmlwZWQnOiBzdHJpcGVkLFxuICAgICAgJ3BvLXRhYmxlLWRhdGEtZml4ZWQtY29sdW1ucyc6IGFwcGx5Rml4ZWRDb2x1bW5zKCksXG4gICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgIH1cIlxuICAgIFthdHRyLnAtc3BhY2luZ109XCJzcGFjaW5nXCJcbiAgPlxuICAgIDx0aGVhZCBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN0aWNreV09XCJoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICA8dHJcbiAgICAgICAgW25nQ2xhc3NdPVwiIWhlaWdodCA/IHsgJ25vLWhvdmVyJzogaGlkZVNlbGVjdEFsbCwgJ3BvLXRhYmxlLWNvbHVtbi1kcmFnJzogdGhpcy5pc0RyYWdnYWJsZSB9IDogJydcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICA8cG8tY2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAocC1jaGFuZ2UpPVwic2VsZWN0QWxsUm93cygpXCJcbiAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiKGhhc01hc3RlckRldGFpbENvbHVtbiB8fCBoYXNSb3dUZW1wbGF0ZSkgJiYgaGFzTWFpbkNvbHVtbnMgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDwhLS0gQ29sdW5hIGNyaWFkYSBwYXJhIGNhc28gYXMgYcOnw7VlcyBmaXF1ZW0gbm8gbGFkbyBlc3F1ZXJkbyAtLT5cbiAgICAgICAgPHRoXG4gICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTsgdGhlbiB0YWJsZURlZmF1bHRUaERyYWdEcm9wOyBlbHNlIHRhYmxlRGVmYXVsdFRoRGVmYXVsdFwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEcmFnRHJvcD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgJ3dpZHRoJzpcbiAgICAgICAgICAgICAgICBoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsID8gKCFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycpIDogJydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWRyYWctYm94XT1cInRoaXMuaXNEcmFnZ2FibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiY29sdW1uLmZpeGVkID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSAmJiAhY29sdW1uLmZpeGVkXCI+XG4gICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEZWZhdWx0PlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAnd2lkdGgnOlxuICAgICAgICAgICAgICAgIGhlaWdodCA+IDAgJiYgIXZpcnR1YWxTY3JvbGwgPyAoIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJykgOiAnJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQgJiYgKGhhc1Zpc2libGVBY3Rpb25zIHx8IGhpZGVDb2x1bW5zTWFuYWdlcikgJiYgaGFzTWFpbkNvbHVtbnNcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItYWN0aW9uc109XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGZpbHRlcmVkSXRlbXM7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvd1wiIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVNlbGVjdCA/IGlucHV0UmFkaW8gOiBpbnB1dENoZWNrYm94OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsbyBpbnB1dCBkbyBwby10YWJsZSBvdSBwZWxhIGRpcmV0aXZhIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKGNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGUpIHx8XG4gICAgICAgICAgICAgIChoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY29tIGFzIGHDp8O1ZXMgbmEgZXNxdWVyZGEgKHBhZHLDo28pLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICBbcC1wYXJlbnQtcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gICAgPlxuICAgICAgPHRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLXN0aWNreVwiIFtzdHlsZS50b3BdPVwiaW52ZXJzZU9mVHJhbnNsYXRpb25cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKGhhc01hc3RlckRldGFpbENvbHVtbiB8fCBoYXNSb3dUZW1wbGF0ZSkgJiYgaGFzTWFpbkNvbHVtbnMgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7XG4gICAgICAgICAgICAgIHRoZW4gdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcDtcbiAgICAgICAgICAgICAgZWxzZSB0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHQ+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uIGV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiBoYXNNYWluQ29sdW1ucyAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIG91IHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAoY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAoaGFzUm93VGVtcGxhdGUgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uXT1cImNvbHVtbi50eXBlICE9PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1pY29uc109XCJjb2x1bW4udHlwZSA9PT0gJ2ljb24nXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3NDb2xvcihyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhc1NlbGVjdGFibGVSb3coKSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBwby10YWJsZS1ib2R5LWVsbGlwc2lzIG5vdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRCb29sZWFuTGFiZWwoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGN1cnJlbmN5OiBjb2x1bW4uZm9ybWF0IDogJ3N5bWJvbCcgOiAnMS4yLTInIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy10ZW1wbGF0ZS1jb250YWluZXJcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbFwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtwLWRldGFpbF09XCJjb2x1bW5NYXN0ZXJEZXRhaWwuZGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICAgIFtwLXBhcmVudC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8cG8taWNvblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBbcC1pY29uXT1cInJvdy4kc2hvd0RldGFpbCA/ICdJQ09OX0FSUk9XX1VQJyA6ICdJQ09OX0FSUk9XX0RPV04nXCJcbiAgICBjbGFzcz1cInBvLWNsaWNrYWJsZVwiXG4gID5cbiAgPC9wby1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxwby1yYWRpbyBbbmFtZV09XCJpZFJhZGlvXCIgW3AtY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgKHAtY2hhbmdlLXNlbGVjdGVkKT1cInNlbGVjdFJvdyhyb3cpXCI+PC9wby1yYWRpbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgW3AtY2hlY2tib3hWYWx1ZV09XCJyb3cuJHNlbGVjdGVkID09PSBudWxsID8gJ21peGVkJyA6IHJvdy4kc2VsZWN0ZWRcIlxuICA+PC9wby1jaGVja2JveD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEhlYWRlclRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxzcGFuXG4gICAgI2NvbHVtbkhlYWRlclxuICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJ0cnVlXCJcbiAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgPlxuICAgIHt7IGNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW5cbiAgICAqbmdJZj1cInNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLXVuc2VsZWN0ZWRdPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgIT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbilcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1kZXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWFzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX1NPUlRcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xOC4yOTI5IDE1LjI5MjlMMTcgMTYuNTg1OEwxNyAxMEMxNyA5LjQ0NzcyIDE2LjU1MjMgOSAxNiA5QzE1LjQ0NzcgOSAxNSA5LjQ0NzcyIDE1IDEwTDE1IDE2LjU4NThMMTMuNzA3MSAxNS4yOTI5QzEzLjMxNjYgMTQuOTAyNCAxMi42ODM0IDE0LjkwMjQgMTIuMjkyOSAxNS4yOTI5QzExLjkwMjQgMTUuNjgzNCAxMS45MDI0IDE2LjMxNjYgMTIuMjkyOSAxNi43MDcxTDE1LjI5MjkgMTkuNzA3MUMxNS42ODM0IDIwLjA5NzYgMTYuMzE2NiAyMC4wOTc2IDE2LjcwNzEgMTkuNzA3MUwxOS43MDcxIDE2LjcwNzFDMjAuMDk3NiAxNi4zMTY2IDIwLjA5NzYgMTUuNjgzNCAxOS43MDcxIDE1LjI5MjlDMTkuMzE2NiAxNC45MDI0IDE4LjY4MzQgMTQuOTAyNCAxOC4yOTI5IDE1LjI5MjlaTTUuNzA3MTYgOC43MDcxTDcuMDAwMDYgNy40MTQyTDcuMDAwMDMgMTRDNy4wMDAwMiAxNC41NTIzIDcuNDQ3NzQgMTUgOC4wMDAwMiAxNUM4LjU1MjMxIDE1IDkuMDAwMDIgMTQuNTUyMyA5LjAwMDAzIDE0TDkuMDAwMDYgNy40MTQxOEwxMC4yOTI5IDguNzA3MDdDMTAuNjgzNSA5LjA5NzU5IDExLjMxNjYgOS4wOTc1OCAxMS43MDcyIDguNzA3MDZDMTIuMDk3NyA4LjMxNjUzIDEyLjA5NzcgNy42ODMzNiAxMS43MDcyIDcuMjkyODRMOC43MDcxOCA0LjI5Mjg2QzguMzE2NjUgMy45MDIzNCA3LjY4MzQ5IDMuOTAyMzUgNy4yOTI5NiA0LjI5Mjg3TDQuMjkyOTUgNy4yOTI4OUMzLjkwMjQyIDcuNjgzNDIgMy45MDI0MiA4LjMxNjU4IDQuMjkyOTQgOC43MDcxMUM0LjY4MzQ3IDkuMDk3NjMgNS4zMTY2MyA5LjA5NzYyIDUuNzA3MTYgOC43MDcxWlwiXG4gICAgICAgICAgZmlsbD1cIiMxRDFEMzBcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX1NPUlRfQVNDXCI+PC9wby1pY29uPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTEgOS40MTQyMUw5LjcwNzExIDEwLjcwNzFDOS4zMTY1OCAxMS4wOTc2IDguNjgzNDIgMTEuMDk3NiA4LjI5Mjg5IDEwLjcwNzFDNy45MDIzNyAxMC4zMTY2IDcuOTAyMzcgOS42ODM0MiA4LjI5Mjg5IDkuMjkyODlMMTEuMjkyOSA2LjI5Mjg5QzExLjY4MzQgNS45MDIzNyAxMi4zMTY2IDUuOTAyMzcgMTIuNzA3MSA2LjI5Mjg5TDE1LjcwNzEgOS4yOTI4OUMxNi4wOTc2IDkuNjgzNDIgMTYuMDk3NiAxMC4zMTY2IDE1LjcwNzEgMTAuNzA3MUMxNS4zMTY2IDExLjA5NzYgMTQuNjgzNCAxMS4wOTc2IDE0LjI5MjkgMTAuNzA3MUwxMyA5LjQxNDIxVjE2QzEzIDE2LjU1MjMgMTIuNTUyMyAxNyAxMiAxN0MxMS40NDc3IDE3IDExIDE2LjU1MjMgMTEgMTZWOS40MTQyMVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVF9ERVNDXCI+PC9wby1pY29uPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNOS43MDcxMSAxMy4yOTI5TDExIDE0LjU4NThWN0MxMSA2LjQ0NzcyIDExLjQ0NzcgNiAxMiA2QzEyLjU1MjMgNiAxMyA2LjQ0NzcyIDEzIDdWMTQuNTg1OEwxNC4yOTI5IDEzLjI5MjlDMTQuNjgzNCAxMi45MDI0IDE1LjMxNjYgMTIuOTAyNCAxNS43MDcxIDEzLjI5MjlDMTYuMDk3NiAxMy42ODM0IDE2LjA5NzYgMTQuMzE2NiAxNS43MDcxIDE0LjcwNzFMMTIuNzA3MSAxNy43MDcxQzEyLjMxNjYgMTguMDk3NiAxMS42ODM0IDE4LjA5NzYgMTEuMjkyOSAxNy43MDcxTDguMjkyODkgMTQuNzA3MUM3LjkwMjM3IDE0LjMxNjYgNy45MDIzNyAxMy42ODM0IDguMjkyODkgMTMuMjkyOUM4LjY4MzQyIDEyLjkwMjQgOS4zMTY1OCAxMi45MDI0IDkuNzA3MTEgMTMuMjkyOVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRoSGVpZ2h0PlxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImhlYWRlcldpZHRoXCI+XG4gICAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRob3V0SGVpZ2h0PlxuICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgYcOnw7VlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjQWN0aW9uc0NvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8dGRcbiAgICAqbmdJZj1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbiBwby10YWJsZS1jb2x1bW4tc2luZ2xlLWFjdGlvblwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiBhY3Rpb25SaWdodCA/IGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIDogJydcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZmlyc3RBY3Rpb24udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uIHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFibGUtYWN0aW9uLWRpc2FibGVkXT1cImZpcnN0QWN0aW9uLmRpc2FibGVkID8gdmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKSA6IGZhbHNlXCJcbiAgICAgIChjbGljayk9XCJleGVjdXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbilcIlxuICAgID5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiZmlyc3RBY3Rpb24uaWNvblwiIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbi1jb250ZW50XCIgW3AtaWNvbl09XCJmaXJzdEFjdGlvbi5pY29uXCI+PC9wby1pY29uPlxuICAgICAge3sgZmlyc3RBY3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZD5cblxuICA8dGQgKm5nSWY9XCJ2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tYWN0aW9uc1wiPlxuICAgIDxkaXYgI3BvcHVwVGFyZ2V0IGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKHJvdywgcG9wdXBUYXJnZXQpXCI+XG4gICAgICA8cG8taWNvbiBwLWljb249XCJJQ09OX01PUkVcIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tdGFibGUtY29sdW1uLW1hbmFnZXJcbiAgKm5nSWY9XCIhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgW3AtY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW3AtbWF4LWNvbHVtbnNdPVwibWF4Q29sdW1uc1wiXG4gIFtwLXRhcmdldF09XCJjb2x1bW5NYW5hZ2VyVGFyZ2V0XCJcbiAgW3AtbGFzdC12aXNpYmxlLWNvbHVtbnMtc2VsZWN0ZWRdPVwibGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWRcIlxuICBbcC1oaWRlLWFjdGlvbi1maXhlZC1jb2x1bW5zXT1cImhpZGVBY3Rpb25GaXhlZENvbHVtbnNcIlxuICAocC12aXNpYmxlLWNvbHVtbnMtY2hhbmdlKT1cIm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoJGV2ZW50KVwiXG4gIChwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMpPVwib25DaGFuZ2VWaXNpYmxlQ29sdW1ucygkZXZlbnQpXCJcbiAgW3AtY29sdW1ucy1kZWZhdWx0XT1cImluaXRpYWxDb2x1bW5zXCJcbiAgKHAtaW5pdGlhbC1jb2x1bW5zKT1cIm9uQ29sdW1uUmVzdG9yZU1hbmFnZXIoJGV2ZW50KVwiXG4+XG48L3BvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyPlxuXG48cG8tbW9kYWxcbiAgI21vZGFsRGVsZXRlXG4gIFtwLXRpdGxlXT1cImxpdGVyYWxzLmRlbGV0ZVwiXG4gIFtwLXByaW1hcnktYWN0aW9uXT1cImNvbmZpcm1cIlxuICBbcC1zZWNvbmRhcnktYWN0aW9uXT1cImNsb3NlXCJcbiAgW3AtY2xpY2stb3V0XT1cInRydWVcIlxuPlxuICA8cCBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZVwiPnt7IGxpdGVyYWxzLmJvZHlEZWxldGUgfX08L3A+XG48L3BvLW1vZGFsPlxuIl19
|