@bcgov/nr-ngx-component-lib 0.0.26 → 0.0.28
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/components/gap/gap.component.d.ts +10 -7
- package/components/indicator-select/indicator-select.component.d.ts +7 -0
- package/components/list-select/list-select.component.d.ts +25 -0
- package/esm2022/components/expansion-panel/section/expansion-panel-section.component.mjs +3 -3
- package/esm2022/components/gap/gap.component.mjs +50 -17
- package/esm2022/components/indicator-select/indicator-select.component.mjs +35 -0
- package/esm2022/components/list-attachments/list-attachments.component.mjs +3 -3
- package/esm2022/components/list-event-history/list-event-history.component.mjs +3 -3
- package/esm2022/components/list-select/list-select.component.mjs +101 -0
- package/esm2022/components/row-list-desktop/row-list-desktop.component.mjs +2 -2
- package/esm2022/components/row-list-mobile/row-list-mobile.component.mjs +2 -2
- package/esm2022/nr-ngx-component-lib.module.mjs +17 -7
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs +192 -29
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs.map +1 -1
- package/nr-ngx-component-lib.module.d.ts +26 -24
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
1
2
|
import { NrclBase } from '../../directives/nrcl.base';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class GapComponent extends NrclBase {
|
|
4
|
-
horizontal:
|
|
5
|
-
vertical:
|
|
6
|
-
divider:
|
|
4
|
+
export declare class GapComponent extends NrclBase implements OnChanges, OnInit {
|
|
5
|
+
horizontal: any;
|
|
6
|
+
vertical: any;
|
|
7
|
+
divider: any;
|
|
8
|
+
componentClass: any;
|
|
9
|
+
multiple: number;
|
|
10
|
+
ngOnInit(): void;
|
|
11
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
12
|
+
updateState(): void;
|
|
7
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<GapComponent, never>;
|
|
8
14
|
static ɵcmp: i0.ɵɵComponentDeclaration<GapComponent, "nrcl-gap", never, { "horizontal": { "alias": "horizontal"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; "divider": { "alias": "divider"; "required": false; }; }, {}, never, never, false, never>;
|
|
9
|
-
static ngAcceptInputType_horizontal: unknown;
|
|
10
|
-
static ngAcceptInputType_vertical: unknown;
|
|
11
|
-
static ngAcceptInputType_divider: unknown;
|
|
12
15
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { NrclBase } from '../../directives/nrcl.base';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class IndicatorSelectComponent extends NrclBase {
|
|
4
|
+
selected: boolean;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IndicatorSelectComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IndicatorSelectComponent, "nrcl-indicator-select", never, { "selected": { "alias": "selected"; "required": false; }; }, {}, never, never, false, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { LoadRowListResult, RowListBase, RowListState } from "../../directives/row-list.base";
|
|
4
|
+
import { CodeDescription } from "../../utils/code-table.util";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class ListSelectComponent extends RowListBase<{}, CodeDescription> {
|
|
7
|
+
options: CodeDescription[];
|
|
8
|
+
value: string[];
|
|
9
|
+
descriptionLabel: string;
|
|
10
|
+
single: any;
|
|
11
|
+
noRowsMessage: string;
|
|
12
|
+
valueChange: EventEmitter<string[]>;
|
|
13
|
+
searchText: any;
|
|
14
|
+
searchRegexp: RegExp;
|
|
15
|
+
get initialPageState(): RowListState<{}>;
|
|
16
|
+
fetchRowListPage(): Observable<CodeDescription[]>;
|
|
17
|
+
displayRowListPage(res: CodeDescription[]): LoadRowListResult<CodeDescription>;
|
|
18
|
+
isSelected(item: CodeDescription): boolean;
|
|
19
|
+
onRowClick(item: CodeDescription): void;
|
|
20
|
+
onClearFilters(): void;
|
|
21
|
+
onSearchTextChange(ev: any): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ListSelectComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ListSelectComponent, "nrcl-list-select", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "descriptionLabel": { "alias": "descriptionLabel"; "required": false; }; "single": { "alias": "single"; "required": false; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
|
|
24
|
+
static ngAcceptInputType_single: unknown;
|
|
25
|
+
}
|
|
@@ -4,10 +4,10 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "../../gap/gap.component";
|
|
5
5
|
export class ExpansionPanelSectionComponent extends NrclBase {
|
|
6
6
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExpansionPanelSectionComponent, selector: "nrcl-expansion-panel-section", usesInheritance: true, ngImport: i0, template: "<nrcl-gap
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExpansionPanelSectionComponent, selector: "nrcl-expansion-panel-section", usesInheritance: true, ngImport: i0, template: "<nrcl-gap divider/>\n\n<ng-content></ng-content>\n", styles: [":host ::ng-deep h3{font-size:var(--nrcl-font-size-h3);font-weight:400;padding:0;margin:0;padding-bottom:var(--nrcl-gutter-space)}:host>::ng-deep .nrcl-gap{width:calc(100% + 2 * var(--nrcl-gutter-space))}:host>::ng-deep .nrcl-gap .divider{margin-left:calc(-1 * var(--nrcl-gutter-space));margin-right:calc(-1 * var(--nrcl-gutter-space))}\n"], dependencies: [{ kind: "component", type: i1.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }] }); }
|
|
8
8
|
}
|
|
9
9
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelSectionComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
11
|
-
args: [{ selector: "nrcl-expansion-panel-section", template: "<nrcl-gap
|
|
11
|
+
args: [{ selector: "nrcl-expansion-panel-section", template: "<nrcl-gap divider/>\n\n<ng-content></ng-content>\n", styles: [":host ::ng-deep h3{font-size:var(--nrcl-font-size-h3);font-weight:400;padding:0;margin:0;padding-bottom:var(--nrcl-gutter-space)}:host>::ng-deep .nrcl-gap{width:calc(100% + 2 * var(--nrcl-gutter-space))}:host>::ng-deep .nrcl-gap .divider{margin-left:calc(-1 * var(--nrcl-gutter-space));margin-right:calc(-1 * var(--nrcl-gutter-space))}\n"] }]
|
|
12
12
|
}] });
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvZXhwYW5zaW9uLXBhbmVsL3NlY3Rpb24vZXhwYW5zaW9uLXBhbmVsLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvZXhwYW5zaW9uLXBhbmVsL3NlY3Rpb24vZXhwYW5zaW9uLXBhbmVsLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFPekQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFFBQVE7K0dBQS9DLDhCQUE4QjttR0FBOUIsOEJBQThCLDJGQ1IzQyxvREFHQTs7NEZES2EsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5yY2xCYXNlIH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvbnJjbC5iYXNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5yY2wtZXhwYW5zaW9uLXBhbmVsLXNlY3Rpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXhwYW5zaW9uLXBhbmVsLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9leHBhbnNpb24tcGFuZWwtc2VjdGlvbi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEV4cGFuc2lvblBhbmVsU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIE5yY2xCYXNlIHtcbn1cbiIsIjxucmNsLWdhcCBkaXZpZGVyLz5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -1,31 +1,64 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
2
|
import { NrclBase } from '../../directives/nrcl.base';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
const POSITIONS = ['before', 'middle', 'after', 'none'];
|
|
4
5
|
export class GapComponent extends NrclBase {
|
|
5
6
|
constructor() {
|
|
6
7
|
super(...arguments);
|
|
7
|
-
this.
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
this.multiple = 1;
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
super.ngOnInit();
|
|
12
|
+
this.updateState();
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges(changes) {
|
|
15
|
+
this.updateState();
|
|
16
|
+
}
|
|
17
|
+
updateState() {
|
|
18
|
+
let defaultMultiple = 1;
|
|
19
|
+
let direction = 'vertical';
|
|
20
|
+
let dividerPosition = 'none';
|
|
21
|
+
if (this.divider != null && this.divider !== false) {
|
|
22
|
+
if (this.divider == '' || POSITIONS.includes(this.divider)) {
|
|
23
|
+
dividerPosition = this.divider || 'middle';
|
|
24
|
+
if (dividerPosition == 'middle')
|
|
25
|
+
defaultMultiple = 2;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
this.multiple = defaultMultiple;
|
|
29
|
+
if (this.vertical != null && this.vertical !== false) {
|
|
30
|
+
direction = 'vertical';
|
|
31
|
+
this.multiple = parseMultiple(this.vertical, defaultMultiple);
|
|
32
|
+
}
|
|
33
|
+
else if (this.horizontal != null && this.horizontal !== false) {
|
|
34
|
+
direction = 'horizontal';
|
|
35
|
+
this.multiple = parseMultiple(this.horizontal, defaultMultiple);
|
|
36
|
+
}
|
|
37
|
+
this.componentClass = `direction-${direction} divider-position-${dividerPosition}`;
|
|
10
38
|
}
|
|
11
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GapComponent, selector: "nrcl-gap", inputs: { horizontal: "horizontal", vertical: "vertical", divider: "divider" }, host: { properties: { "class": "this.componentClass", "style.--nrcl-gap-multiple": "this.multiple" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"divider\"></div>", styles: [":host.direction-horizontal{display:inline-flex;width:var(--nrcl-gutter-space);align-items:stretch}:host.direction-horizontal.divider-position-before{justify-content:flex-start}:host.direction-horizontal.divider-position-middle{justify-content:center}:host.direction-horizontal.divider-position-after{justify-content:flex-end}:host.direction-horizontal.divider-position-before,:host.direction-horizontal.divider-position-middle,:host.direction-horizontal.divider-position-after{width:calc(var(--nrcl-gap-multiple) * var(--nrcl-gutter-space))}:host.direction-horizontal.divider-position-before .divider,:host.direction-horizontal.divider-position-middle .divider,:host.direction-horizontal.divider-position-after .divider{width:1px;height:100%;border-right:1px solid var(--nrcl-divider-color)}:host.direction-vertical{display:flex;height:var(--nrcl-gutter-space)}:host.direction-vertical.divider-position-before{align-items:flex-start}:host.direction-vertical.divider-position-middle{align-items:center}:host.direction-vertical.divider-position-after{align-items:flex-end}:host.direction-vertical.divider-position-before,:host.direction-vertical.divider-position-middle,:host.direction-vertical.divider-position-after{height:calc(var(--nrcl-gap-multiple) * var(--nrcl-gutter-space))}:host.direction-vertical.divider-position-before .divider,:host.direction-vertical.divider-position-middle .divider,:host.direction-vertical.divider-position-after .divider{height:1px;width:100%;border-bottom:1px solid var(--nrcl-divider-color)}\n"] }); }
|
|
13
41
|
}
|
|
14
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GapComponent, decorators: [{
|
|
15
43
|
type: Component,
|
|
16
|
-
args: [{ selector: 'nrcl-gap', host: {
|
|
17
|
-
'[class.horizontal]': 'horizontal',
|
|
18
|
-
'[class.vertical]': 'vertical',
|
|
19
|
-
'[class.divider]': 'divider',
|
|
20
|
-
}, template: "<div class=\"divider\"></div>", styles: [":host{justify-content:center;align-items:center}:host.horizontal{display:inline-flex;width:var(--nrcl-gutter-space);align-items:stretch}:host.horizontal.divider .divider{width:1px;height:100%;border-right:1px solid var(--nrcl-divider-color)}:host.vertical{display:flex;height:var(--nrcl-gutter-space)}:host.vertical.divider .divider{height:1px;width:100%;border-bottom:1px solid var(--nrcl-divider-color)}\n"] }]
|
|
44
|
+
args: [{ selector: 'nrcl-gap', template: "<div class=\"divider\"></div>", styles: [":host.direction-horizontal{display:inline-flex;width:var(--nrcl-gutter-space);align-items:stretch}:host.direction-horizontal.divider-position-before{justify-content:flex-start}:host.direction-horizontal.divider-position-middle{justify-content:center}:host.direction-horizontal.divider-position-after{justify-content:flex-end}:host.direction-horizontal.divider-position-before,:host.direction-horizontal.divider-position-middle,:host.direction-horizontal.divider-position-after{width:calc(var(--nrcl-gap-multiple) * var(--nrcl-gutter-space))}:host.direction-horizontal.divider-position-before .divider,:host.direction-horizontal.divider-position-middle .divider,:host.direction-horizontal.divider-position-after .divider{width:1px;height:100%;border-right:1px solid var(--nrcl-divider-color)}:host.direction-vertical{display:flex;height:var(--nrcl-gutter-space)}:host.direction-vertical.divider-position-before{align-items:flex-start}:host.direction-vertical.divider-position-middle{align-items:center}:host.direction-vertical.divider-position-after{align-items:flex-end}:host.direction-vertical.divider-position-before,:host.direction-vertical.divider-position-middle,:host.direction-vertical.divider-position-after{height:calc(var(--nrcl-gap-multiple) * var(--nrcl-gutter-space))}:host.direction-vertical.divider-position-before .divider,:host.direction-vertical.divider-position-middle .divider,:host.direction-vertical.divider-position-after .divider{height:1px;width:100%;border-bottom:1px solid var(--nrcl-divider-color)}\n"] }]
|
|
21
45
|
}], propDecorators: { horizontal: [{
|
|
22
|
-
type: Input
|
|
23
|
-
args: [{ transform: booleanAttribute }]
|
|
46
|
+
type: Input
|
|
24
47
|
}], vertical: [{
|
|
25
|
-
type: Input
|
|
26
|
-
args: [{ transform: booleanAttribute }]
|
|
48
|
+
type: Input
|
|
27
49
|
}], divider: [{
|
|
28
|
-
type: Input
|
|
29
|
-
|
|
50
|
+
type: Input
|
|
51
|
+
}], componentClass: [{
|
|
52
|
+
type: HostBinding,
|
|
53
|
+
args: ['class']
|
|
54
|
+
}], multiple: [{
|
|
55
|
+
type: HostBinding,
|
|
56
|
+
args: ['style.--nrcl-gap-multiple']
|
|
30
57
|
}] } });
|
|
31
|
-
|
|
58
|
+
function parseMultiple(v, def) {
|
|
59
|
+
let n = Number.parseInt(v);
|
|
60
|
+
if (Number.isNaN(n))
|
|
61
|
+
return def;
|
|
62
|
+
return n;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL2dhcC9nYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvZ2FwL2dhcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFdEQsTUFBTSxTQUFTLEdBQUcsQ0FBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVcsQ0FBQTtBQVFsRSxNQUFNLE9BQU8sWUFBYSxTQUFRLFFBQVE7SUFMMUM7O1FBY0ksYUFBUSxHQUFHLENBQUMsQ0FBQTtLQW1DZjtJQWpDRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN2QixJQUFJLFNBQVMsR0FBOEIsVUFBVSxDQUFBO1FBQ3JELElBQUksZUFBZSxHQUFhLE1BQU0sQ0FBQTtRQUV0QyxJQUFLLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFHLENBQUM7WUFDbkQsSUFBSyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUUsRUFBRyxDQUFDO2dCQUM3RCxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUE7Z0JBQzFDLElBQUssZUFBZSxJQUFJLFFBQVE7b0JBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQTtZQUMxRCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFBO1FBQy9CLElBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUcsQ0FBQztZQUNyRCxTQUFTLEdBQUcsVUFBVSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFFLENBQUE7UUFDbkUsQ0FBQzthQUNJLElBQUssSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUcsQ0FBQztZQUM5RCxTQUFTLEdBQUcsWUFBWSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFFLENBQUE7UUFDckUsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYyxTQUFVLHFCQUFzQixlQUFnQixFQUFFLENBQUE7SUFDMUYsQ0FBQzsrR0EzQ1EsWUFBWTttR0FBWixZQUFZLG9SQ1h6QiwrQkFBMkI7OzRGRFdkLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0ksVUFBVTs4QkFLWCxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsV0FBVzt1QkFBRSxPQUFPO2dCQUlyQixRQUFRO3NCQURQLFdBQVc7dUJBQUUsMkJBQTJCOztBQXNDN0MsU0FBUyxhQUFhLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUUsQ0FBQTtJQUM1QixJQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFFO1FBQUcsT0FBTyxHQUFHLENBQUE7SUFDbkMsT0FBTyxDQUFDLENBQUE7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOcmNsQmFzZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbnJjbC5iYXNlJztcblxuY29uc3QgUE9TSVRJT05TID0gWyAnYmVmb3JlJywgJ21pZGRsZScsICdhZnRlcicsICdub25lJyBdIGFzIGNvbnN0XG50eXBlIFBvc2l0aW9uID0gKHR5cGVvZiBQT1NJVElPTlMpW251bWJlcl0gXG5cbkBDb21wb25lbnQoIHtcbiAgICBzZWxlY3RvcjogJ25yY2wtZ2FwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2FwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZ2FwLmNvbXBvbmVudC5zY3NzJyxcbn0gKVxuZXhwb3J0IGNsYXNzIEdhcENvbXBvbmVudCBleHRlbmRzIE5yY2xCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGhvcml6b250YWxcbiAgICBASW5wdXQoKSB2ZXJ0aWNhbFxuICAgIEBJbnB1dCgpIGRpdmlkZXJcblxuICAgIEBIb3N0QmluZGluZyggJ2NsYXNzJyApXG4gICAgY29tcG9uZW50Q2xhc3NcblxuICAgIEBIb3N0QmluZGluZyggJ3N0eWxlLi0tbnJjbC1nYXAtbXVsdGlwbGUnIClcbiAgICBtdWx0aXBsZSA9IDFcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpXG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpXG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdGUoKSB7XG4gICAgICAgIGxldCBkZWZhdWx0TXVsdGlwbGUgPSAxXG4gICAgICAgIGxldCBkaXJlY3Rpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAndmVydGljYWwnXG4gICAgICAgIGxldCBkaXZpZGVyUG9zaXRpb246IFBvc2l0aW9uID0gJ25vbmUnXG5cbiAgICAgICAgaWYgKCB0aGlzLmRpdmlkZXIgIT0gbnVsbCAmJiB0aGlzLmRpdmlkZXIgIT09IGZhbHNlICkge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmRpdmlkZXIgPT0gJycgfHwgUE9TSVRJT05TLmluY2x1ZGVzKCB0aGlzLmRpdmlkZXIgKSApIHtcbiAgICAgICAgICAgICAgICBkaXZpZGVyUG9zaXRpb24gPSB0aGlzLmRpdmlkZXIgfHwgJ21pZGRsZSdcbiAgICAgICAgICAgICAgICBpZiAoIGRpdmlkZXJQb3NpdGlvbiA9PSAnbWlkZGxlJyApIGRlZmF1bHRNdWx0aXBsZSA9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSBkZWZhdWx0TXVsdGlwbGVcbiAgICAgICAgaWYgKCB0aGlzLnZlcnRpY2FsICE9IG51bGwgJiYgdGhpcy52ZXJ0aWNhbCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAndmVydGljYWwnXG4gICAgICAgICAgICB0aGlzLm11bHRpcGxlID0gcGFyc2VNdWx0aXBsZSggdGhpcy52ZXJ0aWNhbCwgZGVmYXVsdE11bHRpcGxlIClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICggdGhpcy5ob3Jpem9udGFsICE9IG51bGwgJiYgdGhpcy5ob3Jpem9udGFsICE9PSBmYWxzZSApIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdob3Jpem9udGFsJ1xuICAgICAgICAgICAgdGhpcy5tdWx0aXBsZSA9IHBhcnNlTXVsdGlwbGUoIHRoaXMuaG9yaXpvbnRhbCwgZGVmYXVsdE11bHRpcGxlIClcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9uZW50Q2xhc3MgPSBgZGlyZWN0aW9uLSR7IGRpcmVjdGlvbiB9IGRpdmlkZXItcG9zaXRpb24tJHsgZGl2aWRlclBvc2l0aW9uIH1gXG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZU11bHRpcGxlKCB2LCBkZWYgKSB7XG4gICAgbGV0IG4gPSBOdW1iZXIucGFyc2VJbnQoIHYgKVxuICAgIGlmICggTnVtYmVyLmlzTmFOKCBuICkgKSByZXR1cm4gZGVmXG4gICAgcmV0dXJuIG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+Il19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { NrclBase } from '../../directives/nrcl.base';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../icon/icon.component";
|
|
5
|
+
export class IndicatorSelectComponent extends NrclBase {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.selected = false;
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IndicatorSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: IndicatorSelectComponent, selector: "nrcl-indicator-select", inputs: { selected: "selected" }, host: { properties: { "class.selected": "selected" } }, usesInheritance: true, ngImport: i0, template: `
|
|
12
|
+
@if ( selected ) {
|
|
13
|
+
<nrcl-icon>indeterminate_check_box</nrcl-icon>
|
|
14
|
+
}
|
|
15
|
+
@else {
|
|
16
|
+
<nrcl-icon>add_box</nrcl-icon>
|
|
17
|
+
}
|
|
18
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "nrcl-icon", inputs: ["small", "large"] }] }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IndicatorSelectComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'nrcl-indicator-select', template: `
|
|
23
|
+
@if ( selected ) {
|
|
24
|
+
<nrcl-icon>indeterminate_check_box</nrcl-icon>
|
|
25
|
+
}
|
|
26
|
+
@else {
|
|
27
|
+
<nrcl-icon>add_box</nrcl-icon>
|
|
28
|
+
}
|
|
29
|
+
`, host: {
|
|
30
|
+
'[class.selected]': "selected"
|
|
31
|
+
} }]
|
|
32
|
+
}], propDecorators: { selected: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaWNhdG9yLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9pbmRpY2F0b3Itc2VsZWN0L2luZGljYXRvci1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBaUJ0RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsUUFBUTtJQWZ0RDs7UUFnQmEsYUFBUSxHQUFHLEtBQUssQ0FBQTtLQUM1QjsrR0FGWSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4S0FadkI7Ozs7Ozs7S0FPVDs7NEZBS1Esd0JBQXdCO2tCQWZwQyxTQUFTOytCQUNJLHVCQUF1QixZQUV2Qjs7Ozs7OztLQU9ULFFBQ0s7d0JBQ0Ysa0JBQWtCLEVBQUUsVUFBVTtxQkFDakM7OEJBR1EsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5yY2xCYXNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ucmNsLmJhc2UnO1xuXG5AQ29tcG9uZW50KCB7XG4gICAgc2VsZWN0b3I6ICducmNsLWluZGljYXRvci1zZWxlY3QnLFxuICAgIHN0eWxlVXJsOiAnLi9pbmRpY2F0b3Itc2VsZWN0LmNvbXBvbmVudC5zY3NzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAaWYgKCBzZWxlY3RlZCApIHtcbiAgICAgICAgICAgIDxucmNsLWljb24+aW5kZXRlcm1pbmF0ZV9jaGVja19ib3g8L25yY2wtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICA8bnJjbC1pY29uPmFkZF9ib3g8L25yY2wtaWNvbj5cbiAgICAgICAgfVxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLnNlbGVjdGVkXSc6IFwic2VsZWN0ZWRcIlxuICAgIH1cbn0gKVxuZXhwb3J0IGNsYXNzIEluZGljYXRvclNlbGVjdENvbXBvbmVudCBleHRlbmRzIE5yY2xCYXNlIHtcbiAgICBASW5wdXQoKSBzZWxlY3RlZCA9IGZhbHNlXG59XG4iXX0=
|
|
@@ -67,11 +67,11 @@ export class ListAttachmentsComponent extends RowListBase {
|
|
|
67
67
|
return this.rowListProvider.deleteItem(item);
|
|
68
68
|
}
|
|
69
69
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListAttachmentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListAttachmentsComponent, selector: "nrcl-list-attachments", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", canDownload: "canDownload", noRowsMessage: "noRowsMessage" }, usesInheritance: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n <nrcl-row-list-desktop>\n @if ( rows?.length > 0 ) {\n <table mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <th mat-header-cell *matHeaderCellDef>Attachment Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>File Name</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileName }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <th mat-header-cell *matHeaderCellDef>File Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileExtension }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef>Uploaded By</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedBy }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <th mat-header-cell *matHeaderCellDef>Uploaded Date</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedTimestamp }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <th mat-header-cell *matHeaderCellDef>Download</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <th mat-header-cell *matHeaderCellDef>Delete</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let item; columns: columns;\"></tr>\n </table>\n }\n </nrcl-row-list-desktop>\n \n @if ( totalRowCount == 0 ) {\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap vertical/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-title>\n <section title>\n <h2>{{ item.fileName }}</h2>\n </section>\n\n <section actions>\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </section>\n </mat-card-title>\n\n <mat-card-content>\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n @if ( totalRowCount == 0 ) { \n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{min-width:100px}:host .mat-mdc-table .mat-column-orgUnit{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-fileName{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-sourceObjectNameCode{min-width:80px;max-width:80px}:host .mat-mdc-table .mat-column-uploadedBy{min-width:140px;max-width:140px}:host .mat-mdc-table .mat-column-uploadedTimestamp{min-width:150px;max-width:150px}:host .mat-mdc-table .mat-column-description{width:100%;min-width:200px;max-width:100px}:host .mat-mdc-table .mat-column-download .button-container,:host .mat-mdc-table .mat-column-delete .button-container{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "primary", "secondary", "tertiary", "disabled", "small"], outputs: ["click"] }, { kind: "component", type: i5.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i6.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i7.RowListDesktopComponent, selector: "nrcl-row-list-desktop" }, { kind: "component", type: i8.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i9.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "directive", type: i10.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i10.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i10.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i11.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListAttachmentsComponent, selector: "nrcl-list-attachments", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", canDownload: "canDownload", noRowsMessage: "noRowsMessage" }, usesInheritance: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n <nrcl-row-list-desktop>\n @if ( rows?.length > 0 ) {\n <table mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <th mat-header-cell *matHeaderCellDef>Attachment Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>File Name</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileName }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <th mat-header-cell *matHeaderCellDef>File Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileExtension }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef>Uploaded By</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedBy }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <th mat-header-cell *matHeaderCellDef>Uploaded Date</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedTimestamp }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <th mat-header-cell *matHeaderCellDef>Download</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <th mat-header-cell *matHeaderCellDef>Delete</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let item; columns: columns;\"></tr>\n </table>\n }\n </nrcl-row-list-desktop>\n \n @if ( totalRowCount == 0 ) {\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n @if ( totalRowCount == 0 ) { \n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{min-width:100px}:host .mat-mdc-table .mat-column-orgUnit{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-fileName{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-sourceObjectNameCode{min-width:80px;max-width:80px}:host .mat-mdc-table .mat-column-uploadedBy{min-width:140px;max-width:140px}:host .mat-mdc-table .mat-column-uploadedTimestamp{min-width:150px;max-width:150px}:host .mat-mdc-table .mat-column-description{width:100%;min-width:200px;max-width:100px}:host .mat-mdc-table .mat-column-download .button-container,:host .mat-mdc-table .mat-column-delete .button-container{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "primary", "secondary", "tertiary", "disabled", "small"], outputs: ["click"] }, { kind: "component", type: i5.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i6.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i7.RowListDesktopComponent, selector: "nrcl-row-list-desktop" }, { kind: "component", type: i8.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i9.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "directive", type: i10.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i10.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i10.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i11.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
71
71
|
}
|
|
72
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListAttachmentsComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
|
-
args: [{ selector: "nrcl-list-attachments", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-device-view>\n <ng-template desktop-view>\n <nrcl-row-list-desktop>\n @if ( rows?.length > 0 ) {\n <table mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <th mat-header-cell *matHeaderCellDef>Attachment Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>File Name</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileName }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <th mat-header-cell *matHeaderCellDef>File Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileExtension }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef>Uploaded By</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedBy }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <th mat-header-cell *matHeaderCellDef>Uploaded Date</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedTimestamp }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <th mat-header-cell *matHeaderCellDef>Download</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <th mat-header-cell *matHeaderCellDef>Delete</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let item; columns: columns;\"></tr>\n </table>\n }\n </nrcl-row-list-desktop>\n \n @if ( totalRowCount == 0 ) {\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap
|
|
74
|
+
args: [{ selector: "nrcl-list-attachments", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-device-view>\n <ng-template desktop-view>\n <nrcl-row-list-desktop>\n @if ( rows?.length > 0 ) {\n <table mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <th mat-header-cell *matHeaderCellDef>Attachment Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef>File Name</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileName }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <th mat-header-cell *matHeaderCellDef>File Type</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.fileExtension }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef>Uploaded By</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedBy }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <th mat-header-cell *matHeaderCellDef>Uploaded Date</th>\n <td mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.uploadedTimestamp }}</nrcl-cell-content>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <th mat-header-cell *matHeaderCellDef>Download</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <th mat-header-cell *matHeaderCellDef>Delete</th>\n <td mat-cell *matCellDef=\"let item\">\n <div class=\"button-container\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let item; columns: columns;\"></tr>\n </table>\n }\n </nrcl-row-list-desktop>\n \n @if ( totalRowCount == 0 ) {\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n @if ( totalRowCount == 0 ) { \n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n }\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{min-width:100px}:host .mat-mdc-table .mat-column-orgUnit{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-fileName{min-width:100px;max-width:200px}:host .mat-mdc-table .mat-column-sourceObjectNameCode{min-width:80px;max-width:80px}:host .mat-mdc-table .mat-column-uploadedBy{min-width:140px;max-width:140px}:host .mat-mdc-table .mat-column-uploadedTimestamp{min-width:150px;max-width:150px}:host .mat-mdc-table .mat-column-description{width:100%;min-width:200px;max-width:100px}:host .mat-mdc-table .mat-column-download .button-container,:host .mat-mdc-table .mat-column-delete .button-container{display:flex;justify-content:center;align-items:center}\n"] }]
|
|
75
75
|
}], propDecorators: { rowListProvider: [{
|
|
76
76
|
type: Input
|
|
77
77
|
}], canDelete: [{
|
|
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
81
81
|
}], noRowsMessage: [{
|
|
82
82
|
type: Input
|
|
83
83
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBcUIsV0FBVyxFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWtDckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFdBQW1DO0lBTmpGOztRQVFhLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUFDbEIsa0JBQWEsR0FBRyxpQ0FBaUMsQ0FBQTtRQUUxRCxpQkFBWSxHQUFHLFlBQVksQ0FBQTtRQUMzQixZQUFPLEdBQUcsQ0FBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBRSxDQUFBO0tBc0QzSDtJQXBERyxpQkFBaUI7UUFDYixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1NBQ3hCLENBQUE7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUssSUFBSSxDQUFDLFdBQVc7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsVUFBVSxDQUFFLENBQUE7UUFFbkMsSUFBSyxJQUFJLENBQUMsU0FBUztZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLFFBQVEsQ0FBRSxDQUFBO1FBRWpDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCO1lBQUcsTUFBTSxLQUFLLENBQUUsYUFBYSxDQUFFLENBQUE7UUFFM0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNwQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUUsR0FBUTtRQUN4QixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0I7WUFBRyxNQUFNLEtBQUssQ0FBRSxhQUFhLENBQUUsQ0FBQTtRQUU3RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUUsR0FBRyxDQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUF5QjtRQUN0QyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZO1lBQUcsTUFBTSxLQUFLLENBQUUsYUFBYSxDQUFFLENBQUE7UUFFdkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsYUFBYSxDQUFFLElBQXlCO1FBQ3BDLElBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVU7WUFBRyxNQUFNLEtBQUssQ0FBRSxhQUFhLENBQUUsQ0FBQTtRQUVyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFFLElBQUksQ0FBRSxDQUFBO0lBQ2xELENBQUM7K0dBNURRLHdCQUF3QjttR0FBeEIsd0JBQXdCLHdOQ3JDckMsODFQQTZLQTs7NEZEeElhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExvYWRSb3dMaXN0UmVzdWx0LCBSb3dMaXN0QmFzZSwgUm93TGlzdFN0YXRlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcm93LWxpc3QuYmFzZVwiO1xuaW1wb3J0IHsgREFURV9GT1JNQVRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RhdGUudXRpbFwiO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50c1RhYmxlUm93ID0ge1xuICAgIGF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb246IHN0cmluZ1xuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmdcbiAgICB1cGxvYWRlZEJ5OiBzdHJpbmdcbiAgICB1cGxvYWRlZFRpbWVzdGFtcDogc3RyaW5nXG4gICAgYXR0YWNobWVudERlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBhdHRhY2htZW50SWQ6IHN0cmluZyBcbiAgICBmaWxlSWQ6IHN0cmluZ1xuICAgIHNvdXJjZU9iamVjdFVuaXF1ZUlkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgPSB7IFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciBcbiAgICBwYWdlUm93Q291bnQ6IG51bWJlciBcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcgXG4gICAgc29ydERpcmVjdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFJvd0xpc3RQcm92aWRlcjxSLEw9YW55PiB7XG4gICAgZmV0Y2hBdHRhY2htZW50cyggeDogRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgKTogT2JzZXJ2YWJsZTxMPiAgICBcbiAgICBkaXNwbGF5Um93TGlzdFBhZ2UoIHJlczogTCApOiBMb2FkUm93TGlzdFJlc3VsdDxSPlxuICAgIGRvd25sb2FkSXRlbSggaXRlbTogUiApXG4gICAgZGVsZXRlSXRlbSggaXRlbTogUiApXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5yY2wtbGlzdC1hdHRhY2htZW50c1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpc3RBdHRhY2htZW50c0NvbXBvbmVudCBleHRlbmRzIFJvd0xpc3RCYXNlPHt9LEF0dGFjaG1lbnRzVGFibGVSb3c+IHtcbiAgICBASW5wdXQoKSByb3dMaXN0UHJvdmlkZXI6IEF0dGFjaG1lbnRSb3dMaXN0UHJvdmlkZXI8QXR0YWNobWVudHNUYWJsZVJvdz5cbiAgICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gICAgQElucHV0KCkgY2FuRG93bmxvYWQgPSB0cnVlXG4gICAgQElucHV0KCkgbm9Sb3dzTWVzc2FnZSA9IFwiTm8gYXR0YWNobWVudHMgaGF2ZSBiZWVuIGFkZGVkLlwiXG4gICAgXG4gICAgREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTXG4gICAgY29sdW1ucyA9IFsgJ2F0dGFjaG1lbnRUeXBlQ29kZScsICdmaWxlTmFtZScsICdzb3VyY2VPYmplY3ROYW1lQ29kZScsICd1cGxvYWRlZEJ5JywgJ3VwbG9hZGVkVGltZXN0YW1wJywgJ2Rlc2NyaXB0aW9uJyBdXG5cbiAgICBpbml0aWFsaXplUm93TGlzdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZVJvd0xpc3QoKVxuICAgIH1cblxuICAgIGdldCBpbml0aWFsUGFnZVN0YXRlKCk6IFJvd0xpc3RTdGF0ZTx7fT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyOiB7fSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiA1LFxuICAgICAgICAgICAgcGFnZU51bWJlcjogMSxcbiAgICAgICAgICAgIHNvcnRBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICggdGhpcy5jYW5Eb3dubG9hZCApXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaCggJ2Rvd25sb2FkJyApXG5cbiAgICAgICAgaWYgKCB0aGlzLmNhbkRlbGV0ZSApXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaCggJ2RlbGV0ZScgKVxuICAgICAgICBcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KClcbiAgICB9XG5cbiAgICBmZXRjaFJvd0xpc3RQYWdlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5mZXRjaEF0dGFjaG1lbnRzICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlcicgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5mZXRjaEF0dGFjaG1lbnRzKHtcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBhZ2VSb3dDb3VudDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgfSlcbiAgICB9XG4gICAgXG4gICAgZGlzcGxheVJvd0xpc3RQYWdlKCByZXM6IGFueSApOiBMb2FkUm93TGlzdFJlc3VsdDxBdHRhY2htZW50c1RhYmxlUm93PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kaXNwbGF5Um93TGlzdFBhZ2UgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRpc3BsYXlSb3dMaXN0UGFnZSggcmVzIClcbiAgICB9XG5cbiAgICBvbkRvd25sb2FkQ2xpY2soIGl0ZW06IEF0dGFjaG1lbnRzVGFibGVSb3cgKSB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kb3dubG9hZEl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRvd25sb2FkSXRlbSggaXRlbSApXG4gICAgfVxuXG4gICAgb25EZWxldGVDbGljayggaXRlbTogQXR0YWNobWVudHNUYWJsZVJvdyApIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRlbGV0ZUl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGVsZXRlSXRlbSggaXRlbSApXG4gICAgfVxufVxuIiwiPG5yY2wtZGV2aWNlLXZpZXc+XG4gICAgPG5nLXRlbXBsYXRlIGRlc2t0b3Atdmlldz5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcD5cbiAgICAgICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgPHRhYmxlIG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHsgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Rlc2t0b3AtYXR0YWNobWVudHMnLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogcGFnZVNpemUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2VOdW1iZXIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogdG90YWxSb3dDb3VudCBcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImF0dGFjaG1lbnRUeXBlQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BdHRhY2htZW50IFR5cGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb24gfX08L25yY2wtY2VsbC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5GaWxlIE5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmZpbGVOYW1lIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic291cmNlT2JqZWN0TmFtZUNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RmlsZSBUeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtY2VsbC1jb250ZW50IHRvb2x0aXA+e3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBsb2FkZWRCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5VcGxvYWRlZCBCeTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0udXBsb2FkZWRCeSB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVwbG9hZGVkVGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlVwbG9hZGVkIERhdGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLnVwbG9hZGVkVGltZXN0YW1wIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVzY3JpcHRpb248L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmF0dGFjaG1lbnREZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkb3dubG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Eb3dubG9hZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljayggaXRlbSApXCIgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5EZWxldGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1ucztcIj48L3RyPlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbnJjbC1yb3ctbGlzdC1kZXNrdG9wPlxuICAgICAgICBcbiAgICAgICAgQGlmICggdG90YWxSb3dDb3VudCA9PSAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cImRlc2t0b3AtYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICAgICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgICAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgW25vUm93c01lc3NhZ2VdPVwibm9Sb3dzTWVzc2FnZVwiXG4gICAgICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG1vYmlsZS12aWV3PlxuICAgICAgICA8bnJjbC1nYXAgdmVydGljYWwvPlxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LW1vYmlsZT5cbiAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIHJvd3MgfCBwYWdpbmF0ZTogeyBcbiAgICAgICAgICAgICAgICBpZDogJ21vYmlsZS1hdHRhY2htZW50cycsIFxuICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogcGFnZVNpemUsIFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdlTnVtYmVyLCBcbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0b3RhbFJvd0NvdW50IFxuICAgICAgICAgICAgfTsgdHJhY2sgaXRlbS5hdHRhY2htZW50SWQgKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiB0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+e3sgaXRlbS5maWxlTmFtZSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJEb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBjYW5EZWxldGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUNsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkF0dGFjaG1lbnQgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uYXR0YWNobWVudFR5cGVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpbGUgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uZmlsZUV4dGVuc2lvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVwbG9hZGVkIEJ5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS51cGxvYWRlZEJ5IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VcGxvYWRlZCBEYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS51cGxvYWRlZFRpbWVzdGFtcCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uYXR0YWNobWVudERlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbnJjbC1yb3ctbGlzdC1tb2JpbGU+XG5cbiAgICAgICAgQGlmICggdG90YWxSb3dDb3VudCA9PSAwICkgeyBcbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uSWQ9XCJtb2JpbGUtYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICAgICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgICAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgW25vUm93c01lc3NhZ2VdPVwibm9Sb3dzTWVzc2FnZVwiXG4gICAgICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9ucmNsLWRldmljZS12aWV3PlxuIl19
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBcUIsV0FBVyxFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWtDckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFdBQW1DO0lBTmpGOztRQVFhLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUFDbEIsa0JBQWEsR0FBRyxpQ0FBaUMsQ0FBQTtRQUUxRCxpQkFBWSxHQUFHLFlBQVksQ0FBQTtRQUMzQixZQUFPLEdBQUcsQ0FBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBRSxDQUFBO0tBc0QzSDtJQXBERyxpQkFBaUI7UUFDYixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1NBQ3hCLENBQUE7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUssSUFBSSxDQUFDLFdBQVc7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsVUFBVSxDQUFFLENBQUE7UUFFbkMsSUFBSyxJQUFJLENBQUMsU0FBUztZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLFFBQVEsQ0FBRSxDQUFBO1FBRWpDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCO1lBQUcsTUFBTSxLQUFLLENBQUUsYUFBYSxDQUFFLENBQUE7UUFFM0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNwQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUUsR0FBUTtRQUN4QixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0I7WUFBRyxNQUFNLEtBQUssQ0FBRSxhQUFhLENBQUUsQ0FBQTtRQUU3RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUUsR0FBRyxDQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUF5QjtRQUN0QyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZO1lBQUcsTUFBTSxLQUFLLENBQUUsYUFBYSxDQUFFLENBQUE7UUFFdkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsYUFBYSxDQUFFLElBQXlCO1FBQ3BDLElBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVU7WUFBRyxNQUFNLEtBQUssQ0FBRSxhQUFhLENBQUUsQ0FBQTtRQUVyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFFLElBQUksQ0FBRSxDQUFBO0lBQ2xELENBQUM7K0dBNURRLHdCQUF3QjttR0FBeEIsd0JBQXdCLHdOQ3JDckMsKzVQQThLQTs7NEZEeklhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExvYWRSb3dMaXN0UmVzdWx0LCBSb3dMaXN0QmFzZSwgUm93TGlzdFN0YXRlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcm93LWxpc3QuYmFzZVwiO1xuaW1wb3J0IHsgREFURV9GT1JNQVRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RhdGUudXRpbFwiO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50c1RhYmxlUm93ID0ge1xuICAgIGF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb246IHN0cmluZ1xuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmdcbiAgICB1cGxvYWRlZEJ5OiBzdHJpbmdcbiAgICB1cGxvYWRlZFRpbWVzdGFtcDogc3RyaW5nXG4gICAgYXR0YWNobWVudERlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBhdHRhY2htZW50SWQ6IHN0cmluZyBcbiAgICBmaWxlSWQ6IHN0cmluZ1xuICAgIHNvdXJjZU9iamVjdFVuaXF1ZUlkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgPSB7IFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciBcbiAgICBwYWdlUm93Q291bnQ6IG51bWJlciBcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcgXG4gICAgc29ydERpcmVjdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFJvd0xpc3RQcm92aWRlcjxSLEw9YW55PiB7XG4gICAgZmV0Y2hBdHRhY2htZW50cyggeDogRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgKTogT2JzZXJ2YWJsZTxMPiAgICBcbiAgICBkaXNwbGF5Um93TGlzdFBhZ2UoIHJlczogTCApOiBMb2FkUm93TGlzdFJlc3VsdDxSPlxuICAgIGRvd25sb2FkSXRlbSggaXRlbTogUiApXG4gICAgZGVsZXRlSXRlbSggaXRlbTogUiApXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5yY2wtbGlzdC1hdHRhY2htZW50c1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpc3RBdHRhY2htZW50c0NvbXBvbmVudCBleHRlbmRzIFJvd0xpc3RCYXNlPHt9LEF0dGFjaG1lbnRzVGFibGVSb3c+IHtcbiAgICBASW5wdXQoKSByb3dMaXN0UHJvdmlkZXI6IEF0dGFjaG1lbnRSb3dMaXN0UHJvdmlkZXI8QXR0YWNobWVudHNUYWJsZVJvdz5cbiAgICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gICAgQElucHV0KCkgY2FuRG93bmxvYWQgPSB0cnVlXG4gICAgQElucHV0KCkgbm9Sb3dzTWVzc2FnZSA9IFwiTm8gYXR0YWNobWVudHMgaGF2ZSBiZWVuIGFkZGVkLlwiXG4gICAgXG4gICAgREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTXG4gICAgY29sdW1ucyA9IFsgJ2F0dGFjaG1lbnRUeXBlQ29kZScsICdmaWxlTmFtZScsICdzb3VyY2VPYmplY3ROYW1lQ29kZScsICd1cGxvYWRlZEJ5JywgJ3VwbG9hZGVkVGltZXN0YW1wJywgJ2Rlc2NyaXB0aW9uJyBdXG5cbiAgICBpbml0aWFsaXplUm93TGlzdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZVJvd0xpc3QoKVxuICAgIH1cblxuICAgIGdldCBpbml0aWFsUGFnZVN0YXRlKCk6IFJvd0xpc3RTdGF0ZTx7fT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyOiB7fSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiA1LFxuICAgICAgICAgICAgcGFnZU51bWJlcjogMSxcbiAgICAgICAgICAgIHNvcnRBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICggdGhpcy5jYW5Eb3dubG9hZCApXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaCggJ2Rvd25sb2FkJyApXG5cbiAgICAgICAgaWYgKCB0aGlzLmNhbkRlbGV0ZSApXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaCggJ2RlbGV0ZScgKVxuICAgICAgICBcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KClcbiAgICB9XG5cbiAgICBmZXRjaFJvd0xpc3RQYWdlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5mZXRjaEF0dGFjaG1lbnRzICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlcicgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5mZXRjaEF0dGFjaG1lbnRzKHtcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBhZ2VSb3dDb3VudDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgfSlcbiAgICB9XG4gICAgXG4gICAgZGlzcGxheVJvd0xpc3RQYWdlKCByZXM6IGFueSApOiBMb2FkUm93TGlzdFJlc3VsdDxBdHRhY2htZW50c1RhYmxlUm93PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kaXNwbGF5Um93TGlzdFBhZ2UgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRpc3BsYXlSb3dMaXN0UGFnZSggcmVzIClcbiAgICB9XG5cbiAgICBvbkRvd25sb2FkQ2xpY2soIGl0ZW06IEF0dGFjaG1lbnRzVGFibGVSb3cgKSB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kb3dubG9hZEl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRvd25sb2FkSXRlbSggaXRlbSApXG4gICAgfVxuXG4gICAgb25EZWxldGVDbGljayggaXRlbTogQXR0YWNobWVudHNUYWJsZVJvdyApIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRlbGV0ZUl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyJyApXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGVsZXRlSXRlbSggaXRlbSApXG4gICAgfVxufVxuIiwiPG5yY2wtZGV2aWNlLXZpZXc+XG4gICAgPG5nLXRlbXBsYXRlIGRlc2t0b3Atdmlldz5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcD5cbiAgICAgICAgICAgIEBpZiAoIHJvd3M/Lmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgPHRhYmxlIG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHsgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Rlc2t0b3AtYXR0YWNobWVudHMnLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogcGFnZVNpemUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2VOdW1iZXIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogdG90YWxSb3dDb3VudCBcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImF0dGFjaG1lbnRUeXBlQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BdHRhY2htZW50IFR5cGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb24gfX08L25yY2wtY2VsbC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5GaWxlIE5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLmZpbGVOYW1lIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic291cmNlT2JqZWN0TmFtZUNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RmlsZSBUeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtY2VsbC1jb250ZW50IHRvb2x0aXA+e3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBsb2FkZWRCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5VcGxvYWRlZCBCeTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0udXBsb2FkZWRCeSB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVwbG9hZGVkVGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlVwbG9hZGVkIERhdGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1jZWxsLWNvbnRlbnQgdG9vbHRpcD57eyBpdGVtLnVwbG9hZGVkVGltZXN0YW1wIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVzY3JpcHRpb248L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmF0dGFjaG1lbnREZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkb3dubG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Eb3dubG9hZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljayggaXRlbSApXCIgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5EZWxldGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1ucztcIj48L3RyPlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbnJjbC1yb3ctbGlzdC1kZXNrdG9wPlxuICAgICAgICBcbiAgICAgICAgQGlmICggdG90YWxSb3dDb3VudCA9PSAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cImRlc2t0b3AtYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICAgICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgICAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgW25vUm93c01lc3NhZ2VdPVwibm9Sb3dzTWVzc2FnZVwiXG4gICAgICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG1vYmlsZS12aWV3PlxuICAgICAgICA8bnJjbC1nYXAvPlxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LW1vYmlsZT5cbiAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIHJvd3MgfCBwYWdpbmF0ZTogeyBcbiAgICAgICAgICAgICAgICBpZDogJ21vYmlsZS1hdHRhY2htZW50cycsIFxuICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogcGFnZVNpemUsIFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdlTnVtYmVyLCBcbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0b3RhbFJvd0NvdW50IFxuICAgICAgICAgICAgfTsgdHJhY2sgaXRlbS5hdHRhY2htZW50SWQgKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWxlIG5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmZpbGVOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QXR0YWNobWVudCBUeXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5hdHRhY2htZW50VHlwZURlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RmlsZSBUeXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VXBsb2FkZWQgQnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnVwbG9hZGVkQnkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVwbG9hZGVkIERhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnVwbG9hZGVkVGltZXN0YW1wIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZnVsbC13aWR0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkRlc2NyaXB0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5hdHRhY2htZW50RGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIGNhbkRvd25sb2FkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKCBpdGVtIClcIiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBjYW5EZWxldGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJEZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9ucmNsLXJvdy1saXN0LW1vYmlsZT5cblxuICAgICAgICBAaWYgKCB0b3RhbFJvd0NvdW50ID09IDAgKSB7IFxuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cIm1vYmlsZS1hdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAgICAgKHBhZ2VOdW1iZXJDaGFuZ2UpPVwib25QYWdlTnVtYmVyQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgICAgID48L25yY2wtcm93LWxpc3QtcGFnaW5hdGlvbj5cbiAgICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG48L25yY2wtZGV2aWNlLXZpZXc+XG4iXX0=
|