@rededor/site-front-end-lib 1.3.14 → 1.3.16
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/breadcrumbs/breadcrumbs.component.mjs +51 -45
- package/esm2022/lib/components/filters/filter-generic/filter-generic.component.mjs +2 -2
- package/esm2022/lib/components/filters/filter-planos-convenios/filter-planos-convenios.component.mjs +3 -3
- package/esm2022/lib/components/header/components/header-action-menu/header-action-menu.component.mjs +6 -3
- package/esm2022/lib/components/header/header.component.mjs +6 -3
- package/fesm2022/rededor-site-front-end-lib.mjs +63 -51
- package/fesm2022/rededor-site-front-end-lib.mjs.map +1 -1
- package/lib/components/breadcrumbs/breadcrumbs.component.d.ts +11 -7
- package/lib/components/header/components/header-action-menu/header-action-menu.component.d.ts +2 -1
- package/lib/components/header/header.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA,
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, Input, PLATFORM_ID, ViewChild, } from '@angular/core';
|
|
2
2
|
import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
3
3
|
import { RdsiteLinkDirective } from '../../directives';
|
|
4
4
|
import { LIB_CONFIG } from '../../tokens/LibConfig';
|
|
@@ -10,41 +10,62 @@ import * as i2 from "@angular/common";
|
|
|
10
10
|
export class BreadcrumbsComponent {
|
|
11
11
|
set breadcrumbs(value) {
|
|
12
12
|
this._breadcrumbs = value || [];
|
|
13
|
-
if (value
|
|
13
|
+
if (value?.length) {
|
|
14
14
|
this.setBreadcrumbsJson(value);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
get breadcrumbs() {
|
|
18
18
|
return this._breadcrumbs;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
this.setIsDesktop();
|
|
22
|
-
}
|
|
23
|
-
constructor(curaService, libConfig, document, platformId) {
|
|
20
|
+
constructor(curaService, cdr, libConfig, document, platformId) {
|
|
24
21
|
this.curaService = curaService;
|
|
22
|
+
this.cdr = cdr;
|
|
25
23
|
this.libConfig = libConfig;
|
|
26
24
|
this.document = document;
|
|
27
25
|
this.platformId = platformId;
|
|
28
26
|
this.labelIconColor = 'neutral-purewhite';
|
|
27
|
+
this.isDesktop = null;
|
|
29
28
|
this._breadcrumbs = [];
|
|
30
29
|
this.breadcrumbsJsonTagId = 'breadcrumbsJSON';
|
|
31
30
|
}
|
|
32
31
|
ngAfterViewInit() {
|
|
33
32
|
this.getColors(this.labelIconColor);
|
|
34
|
-
this.
|
|
33
|
+
this.initViewportDetection();
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.resizeObserver?.disconnect();
|
|
37
|
+
}
|
|
38
|
+
initViewportDetection() {
|
|
39
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
40
|
+
this.isDesktop = true;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.checkViewportSize();
|
|
44
|
+
this.setupResizeObserver();
|
|
35
45
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.
|
|
46
|
+
setupResizeObserver() {
|
|
47
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
48
|
+
this.checkViewportSize();
|
|
49
|
+
});
|
|
50
|
+
this.resizeObserver.observe(document.body);
|
|
51
|
+
}
|
|
52
|
+
checkViewportSize() {
|
|
53
|
+
if (!isPlatformBrowser(this.platformId))
|
|
54
|
+
return;
|
|
55
|
+
const newValue = window.innerWidth > MediaQueries.smallBreakpoint;
|
|
56
|
+
if (this.isDesktop !== newValue) {
|
|
57
|
+
this.isDesktop = newValue;
|
|
58
|
+
this.cdr.detectChanges();
|
|
39
59
|
}
|
|
40
60
|
}
|
|
41
61
|
getColors(color) {
|
|
42
|
-
if (isPlatformBrowser(this.platformId)) {
|
|
43
|
-
this.breadCrumbsElement.nativeElement
|
|
44
|
-
|
|
45
|
-
|
|
62
|
+
if (isPlatformBrowser(this.platformId) && this.breadCrumbsElement?.nativeElement) {
|
|
63
|
+
const element = this.breadCrumbsElement.nativeElement;
|
|
64
|
+
element.style.setProperty('--font-family', this.curaService.getFontFamily(''));
|
|
65
|
+
element.style.setProperty('--label-icon-color', this.curaService.getColor(color));
|
|
66
|
+
element.style.setProperty('--divider-color', this.curaService.getColor('neutral-light'));
|
|
46
67
|
const disabledColor = color?.includes('neutral') ? 'primary-lighter' : 'neutral-dark';
|
|
47
|
-
|
|
68
|
+
element.style.setProperty('--disabled-color', this.curaService.getColor(disabledColor));
|
|
48
69
|
}
|
|
49
70
|
}
|
|
50
71
|
getUrl(urls = []) {
|
|
@@ -58,47 +79,35 @@ export class BreadcrumbsComponent {
|
|
|
58
79
|
itemListElement: this.getJsonBreadcrumbItems(items),
|
|
59
80
|
};
|
|
60
81
|
this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);
|
|
61
|
-
return this;
|
|
62
82
|
}
|
|
63
83
|
getBreadcrumbsJSONTag() {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
for (i = 0; i < elements.length; i++) {
|
|
67
|
-
const elem = elements[i];
|
|
68
|
-
if (elem && elem.id === this.breadcrumbsJsonTagId) {
|
|
69
|
-
return elem;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return this.createBreadcrumbsJSONTag();
|
|
84
|
+
const existingTag = this.document.getElementById(this.breadcrumbsJsonTagId);
|
|
85
|
+
return existingTag || this.createBreadcrumbsJSONTag();
|
|
73
86
|
}
|
|
74
87
|
createBreadcrumbsJSONTag() {
|
|
75
88
|
const tag = this.document.createElement('script');
|
|
76
89
|
tag.id = this.breadcrumbsJsonTagId;
|
|
77
90
|
tag.type = 'application/ld+json';
|
|
78
91
|
this.document.head.appendChild(tag);
|
|
79
|
-
this.breadcrumbsJsonTag = tag;
|
|
80
92
|
return tag;
|
|
81
93
|
}
|
|
82
94
|
getJsonBreadcrumbItems(items) {
|
|
83
|
-
return items.map((item, i) => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
};
|
|
92
|
-
return jsonItem;
|
|
93
|
-
});
|
|
95
|
+
return items.map((item, i) => ({
|
|
96
|
+
'@type': 'ListItem',
|
|
97
|
+
position: i + 1,
|
|
98
|
+
item: {
|
|
99
|
+
'@id': `${this.libConfig.siteUrl.replace(/\/$/, '')}${this.getUrl(item.url)}`,
|
|
100
|
+
name: he.encode(item.label),
|
|
101
|
+
},
|
|
102
|
+
}));
|
|
94
103
|
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbsComponent, deps: [{ token: i1.CuraService }, { token: LIB_CONFIG }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BreadcrumbsComponent, isStandalone: true, selector: "rdsite-breadcrumbs", inputs: { labelIconColor: "labelIconColor", breadcrumbs: "breadcrumbs" },
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbsComponent, deps: [{ token: i1.CuraService }, { token: i0.ChangeDetectorRef }, { token: LIB_CONFIG }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BreadcrumbsComponent, isStandalone: true, selector: "rdsite-breadcrumbs", inputs: { labelIconColor: "labelIconColor", breadcrumbs: "breadcrumbs" }, viewQueries: [{ propertyName: "breadCrumbsElement", first: true, predicate: ["breadCrumbsElement"], descendants: true }], ngImport: i0, template: "@if (breadcrumbs.length) {\r\n <nav class=\"breadcrumb\" #breadCrumbsElement>\r\n <ol>\r\n @if (isDesktop !== null && (isDesktop || breadcrumbs.length < 3)) {\r\n <ng-container *ngTemplateOutlet=\"Desktop\"></ng-container>\r\n } @else if (isDesktop !== null) {\r\n <ng-container *ngTemplateOutlet=\"Mobile\"></ng-container>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n\r\n<ng-template #Desktop>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (!last) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n @if (first) {\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n }\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else {\r\n <span [class.last-item]=\"last && !first\">\r\n {{ breadcrumb.label }}\r\n </span>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #Mobile>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (first) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else if (index === breadcrumbs.length - 2) {\r\n <span class=\"back\"><</span>\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n", styles: [".breadcrumb *{font-family:var(--font-family)}.breadcrumb ol{display:flex}.breadcrumb ol li{display:flex;gap:8px}.breadcrumb ol li a{color:var(--label-icon-color);display:flex;gap:4px;text-decoration:none}.breadcrumb ol li a span{text-decoration:underline;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.last-item{color:var(--disabled-color);text-decoration:none;pointer-events:none;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.divider,.breadcrumb ol li span.back{color:var(--divider-color);padding-right:8px;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.back{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RdsiteLinkDirective, selector: "[rdsitelink]", inputs: ["anchorAdjustment", "anchorExtraAdjustment", "phonemodal"] }] }); }
|
|
97
106
|
}
|
|
98
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
|
|
99
108
|
type: Component,
|
|
100
|
-
args: [{ selector: 'rdsite-breadcrumbs', standalone: true, imports: [CommonModule, RdsiteLinkDirective], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if (breadcrumbs.length) {\r\n <nav class=\"breadcrumb\" #breadCrumbsElement>\r\n <ol>\r\n @if (isDesktop || breadcrumbs.length < 3) {\r\n <ng-container *ngTemplateOutlet=\"Desktop\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"Mobile\"></ng-container>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n\r\n<ng-template #Desktop>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (!last) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n @if (first) {\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n }\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else {\r\n <span [class.last-item]=\"last && !first\">\r\n {{ breadcrumb.label }}\r\n </span>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #Mobile>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (first) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else if (index === breadcrumbs.length - 2) {\r\n <span class=\"back\"><</span>\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n", styles: [".breadcrumb *{font-family:var(--font-family)}.breadcrumb ol{display:flex}.breadcrumb ol li{display:flex;gap:8px}.breadcrumb ol li a{color:var(--label-icon-color);display:flex;gap:4px;text-decoration:none}.breadcrumb ol li a span{text-decoration:underline;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.last-item{color:var(--disabled-color);text-decoration:none;pointer-events:none;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.divider,.breadcrumb ol li span.back{color:var(--divider-color);padding-right:8px;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.back{padding:0}\n"] }]
|
|
101
|
-
}], ctorParameters: () => [{ type: i1.CuraService }, { type: undefined, decorators: [{
|
|
109
|
+
args: [{ selector: 'rdsite-breadcrumbs', standalone: true, imports: [CommonModule, RdsiteLinkDirective], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if (breadcrumbs.length) {\r\n <nav class=\"breadcrumb\" #breadCrumbsElement>\r\n <ol>\r\n @if (isDesktop !== null && (isDesktop || breadcrumbs.length < 3)) {\r\n <ng-container *ngTemplateOutlet=\"Desktop\"></ng-container>\r\n } @else if (isDesktop !== null) {\r\n <ng-container *ngTemplateOutlet=\"Mobile\"></ng-container>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n\r\n<ng-template #Desktop>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (!last) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n @if (first) {\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n }\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else {\r\n <span [class.last-item]=\"last && !first\">\r\n {{ breadcrumb.label }}\r\n </span>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #Mobile>\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.label; let first = $first; let last = $last; let index = $index) {\r\n <li>\r\n @if (first) {\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <cura-icon name=\"home\" [attr.color]=\"labelIconColor\" size=\"16\"> </cura-icon>\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n <span class=\"divider\">/</span>\r\n } @else if (index === breadcrumbs.length - 2) {\r\n <span class=\"back\"><</span>\r\n <a rdsitelink [href]=\"getUrl(breadcrumb.url)\">\r\n <span>\r\n {{ breadcrumb.label }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n", styles: [".breadcrumb *{font-family:var(--font-family)}.breadcrumb ol{display:flex}.breadcrumb ol li{display:flex;gap:8px}.breadcrumb ol li a{color:var(--label-icon-color);display:flex;gap:4px;text-decoration:none}.breadcrumb ol li a span{text-decoration:underline;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.last-item{color:var(--disabled-color);text-decoration:none;pointer-events:none;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.divider,.breadcrumb ol li span.back{color:var(--divider-color);padding-right:8px;font-size:12px;font-weight:500;line-height:16px;letter-spacing:.72px}.breadcrumb ol li span.back{padding:0}\n"] }]
|
|
110
|
+
}], ctorParameters: () => [{ type: i1.CuraService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
102
111
|
type: Inject,
|
|
103
112
|
args: [LIB_CONFIG]
|
|
104
113
|
}] }, { type: Document, decorators: [{
|
|
@@ -114,8 +123,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
114
123
|
}], breadCrumbsElement: [{
|
|
115
124
|
type: ViewChild,
|
|
116
125
|
args: ['breadCrumbsElement']
|
|
117
|
-
}], onWindowResize: [{
|
|
118
|
-
type: HostListener,
|
|
119
|
-
args: ['window:resize']
|
|
120
126
|
}] } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1icy9icmVhZGNydW1icy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLHNCQUFzQixFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBVTFELE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsSUFDSSxXQUFXLENBQUMsS0FBeUI7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBUUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFDVSxXQUF3QixFQUNKLFNBQW9CLEVBQ3RCLFFBQWtCLEVBQ04sVUFBa0I7UUFIaEQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDSixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBN0JqRCxtQkFBYyxHQUFXLG1CQUFtQixDQUFDO1FBRzlDLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQWF0Qyx5QkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztJQWM5QyxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUN2SCxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3hILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWlCLEVBQUU7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUF5QjtRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUc7WUFDWCxVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsZUFBZSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7U0FDcEQsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBUyxDQUFDO1FBQ2QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBc0IsQ0FBQztZQUM5QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNsRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE1BQU0sR0FBRyxHQUFzQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNuQyxHQUFHLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQXlCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQixNQUFNLFFBQVEsR0FBd0I7Z0JBQ3BDLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2YsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzdFLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQzVCO2FBQ0YsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F0R1Usb0JBQW9CLDZDQTRCckIsVUFBVSxhQUNWLFFBQVEsYUFDUixXQUFXO21HQTlCVixvQkFBb0IsZ1ZDbEJqQyw2eURBd0RBLDZ2QkQzQ1ksWUFBWSxzTUFBRSxtQkFBbUI7OzRGQUtoQyxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxXQUNuQyxDQUFDLHNCQUFzQixDQUFDOzswQkFnQzlCLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxXQUFXO3lDQTdCWixjQUFjO3NCQUF0QixLQUFLO2dCQUtGLFdBQVc7c0JBRGQsS0FBSztnQkFjMkIsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFHL0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJzSXRlbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMtaXRlbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXJhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2N1cmEvY3VyYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmRzaXRlTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic0pzb25JdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLWpzb24taXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IExJQl9DT05GSUcsIExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL3Rva2Vucy9MaWJDb25maWcnO1xyXG5pbXBvcnQgKiBhcyBoZSBmcm9tICdoZSc7XHJcbmltcG9ydCB7IE1lZGlhUXVlcmllcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbWVkaWFRdWVyaWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmRzaXRlLWJyZWFkY3J1bWJzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJkc2l0ZUxpbmtEaXJlY3RpdmVdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1ic0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGxhYmVsSWNvbkNvbG9yOiBzdHJpbmcgPSAnbmV1dHJhbC1wdXJld2hpdGUnO1xyXG4gIGlzRGVza3RvcCE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2JyZWFkY3J1bWJzOiBCcmVhZGNydW1ic0l0ZW1zW10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBicmVhZGNydW1icyh2YWx1ZTogQnJlYWRjcnVtYnNJdGVtc1tdKSB7XHJcbiAgICB0aGlzLl9icmVhZGNydW1icyA9IHZhbHVlIHx8IFtdO1xyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNldEJyZWFkY3J1bWJzSnNvbih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBicmVhZGNydW1icygpIHtcclxuICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1icztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnITogSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBicmVhZGNydW1ic0pzb25UYWdJZCA9ICdicmVhZGNydW1ic0pTT04nO1xyXG5cclxuICBAVmlld0NoaWxkKCdicmVhZENydW1ic0VsZW1lbnQnKSBicmVhZENydW1ic0VsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLnNldElzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGN1cmFTZXJ2aWNlOiBDdXJhU2VydmljZSxcclxuICAgIEBJbmplY3QoTElCX0NPTkZJRykgcHJpdmF0ZSBsaWJDb25maWc6IExpYkNvbmZpZyxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkOiBvYmplY3QsXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENvbG9ycyh0aGlzLmxhYmVsSWNvbkNvbG9yKTtcclxuICAgIHRoaXMuc2V0SXNEZXNrdG9wKCk7XHJcbiAgfVxyXG5cclxuICBzZXRJc0Rlc2t0b3AoKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IHdpbmRvdy5pbm5lcldpZHRoID4gTWVkaWFRdWVyaWVzLnNtYWxsQnJlYWtwb2ludDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbG9ycyhjb2xvcjogc3RyaW5nKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmJyZWFkQ3J1bWJzRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWZvbnQtZmFtaWx5JywgdGhpcy5jdXJhU2VydmljZS5nZXRGb250RmFtaWx5KCcnKSk7XHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYnNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGFiZWwtaWNvbi1jb2xvcicsIHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoY29sb3IpKTtcclxuICAgICAgdGhpcy5icmVhZENydW1ic0VsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1kaXZpZGVyLWNvbG9yJywgdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpKTtcclxuICAgICAgY29uc3QgZGlzYWJsZWRDb2xvciA9IGNvbG9yPy5pbmNsdWRlcygnbmV1dHJhbCcpID8gJ3ByaW1hcnktbGlnaHRlcicgOiAnbmV1dHJhbC1kYXJrJztcclxuICAgICAgdGhpcy5icmVhZENydW1ic0VsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1kaXNhYmxlZC1jb2xvcicsIHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoZGlzYWJsZWRDb2xvcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VXJsKHVybHM6IHN0cmluZ1tdID0gW10pIHtcclxuICAgIHJldHVybiB1cmxzLmpvaW4oJycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1ic0pzb24oaXRlbXM6IEJyZWFkY3J1bWJzSXRlbXNbXSkge1xyXG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0aGlzLmdldEJyZWFkY3J1bWJzSlNPTlRhZygpO1xyXG4gICAgY29uc3QganNvbiA9IHtcclxuICAgICAgJ0Bjb250ZXh0JzogJ2h0dHA6Ly9zY2hlbWEub3JnJyxcclxuICAgICAgJ0B0eXBlJzogJ0JyZWFkY3J1bWJMaXN0JyxcclxuICAgICAgaXRlbUxpc3RFbGVtZW50OiB0aGlzLmdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXMpLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJyZWFkY3J1bWJzSlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxTY3JpcHRFbGVtZW50O1xyXG4gICAgICBpZiAoZWxlbSAmJiBlbGVtLmlkID09PSB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZ0lkKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUJyZWFkY3J1bWJzSlNPTlRhZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1ic0pTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xyXG4gICAgY29uc3QgdGFnOiBIVE1MU2NyaXB0RWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICB0YWcuaWQgPSB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZ0lkO1xyXG4gICAgdGFnLnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XHJcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnID0gdGFnO1xyXG4gICAgcmV0dXJuIHRhZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SnNvbkJyZWFkY3J1bWJJdGVtcyhpdGVtczogQnJlYWRjcnVtYnNJdGVtc1tdKTogQnJlYWRjcnVtYnNKc29uSXRlbVtdIHtcclxuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgY29uc3QganNvbkl0ZW06IEJyZWFkY3J1bWJzSnNvbkl0ZW0gPSB7XHJcbiAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcclxuICAgICAgICBwb3NpdGlvbjogaSArIDEsXHJcbiAgICAgICAgaXRlbToge1xyXG4gICAgICAgICAgJ0BpZCc6IGAke3RoaXMubGliQ29uZmlnLnNpdGVVcmwucmVwbGFjZSgvXFwvJC8sICcnKX0ke3RoaXMuZ2V0VXJsKGl0ZW0udXJsKX1gLFxyXG4gICAgICAgICAgbmFtZTogaGUuZW5jb2RlKGl0ZW0ubGFiZWwpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBqc29uSXRlbTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGJyZWFkY3J1bWJzLmxlbmd0aCkge1xyXG4gIDxuYXYgY2xhc3M9XCJicmVhZGNydW1iXCIgI2JyZWFkQ3J1bWJzRWxlbWVudD5cclxuICAgIDxvbD5cclxuICAgICAgQGlmIChpc0Rlc2t0b3AgfHwgYnJlYWRjcnVtYnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEZXNrdG9wXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJNb2JpbGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9vbD5cclxuICA8L25hdj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNEZXNrdG9wPlxyXG4gIEBmb3IgKGJyZWFkY3J1bWIgb2YgYnJlYWRjcnVtYnM7IHRyYWNrIGJyZWFkY3J1bWIubGFiZWw7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgICA8bGk+XHJcbiAgICAgIEBpZiAoIWxhc3QpIHtcclxuICAgICAgICA8YSByZHNpdGVsaW5rIFtocmVmXT1cImdldFVybChicmVhZGNydW1iLnVybClcIj5cclxuICAgICAgICAgIEBpZiAoZmlyc3QpIHtcclxuICAgICAgICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiaG9tZVwiIFthdHRyLmNvbG9yXT1cImxhYmVsSWNvbkNvbG9yXCIgc2l6ZT1cIjE2XCI+IDwvY3VyYS1pY29uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+Lzwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPHNwYW4gW2NsYXNzLmxhc3QtaXRlbV09XCJsYXN0ICYmICFmaXJzdFwiPlxyXG4gICAgICAgICAge3sgYnJlYWRjcnVtYi5sYWJlbCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgPC9saT5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI01vYmlsZT5cclxuICBAZm9yIChicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzOyB0cmFjayBicmVhZGNydW1iLmxhYmVsOyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3Q7IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgPGxpPlxyXG4gICAgICBAaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgPGEgcmRzaXRlbGluayBbaHJlZl09XCJnZXRVcmwoYnJlYWRjcnVtYi51cmwpXCI+XHJcbiAgICAgICAgICA8Y3VyYS1pY29uIG5hbWU9XCJob21lXCIgW2F0dHIuY29sb3JdPVwibGFiZWxJY29uQ29sb3JcIiBzaXplPVwiMTZcIj4gPC9jdXJhLWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAge3sgYnJlYWRjcnVtYi5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj4vPC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIGlmIChpbmRleCA9PT0gYnJlYWRjcnVtYnMubGVuZ3RoIC0gMikge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmFja1wiPjw8L3NwYW4+XHJcbiAgICAgICAgPGEgcmRzaXRlbGluayBbaHJlZl09XCJnZXRVcmwoYnJlYWRjcnVtYi51cmwpXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAge3sgYnJlYWRjcnVtYi5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgfVxyXG4gICAgPC9saT5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1icy9icmVhZGNydW1icy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBRXRCLE1BQU0sRUFDTixLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFVMUQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixJQUNJLFdBQVcsQ0FBQyxLQUF5QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFRRCxZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ0YsU0FBb0IsRUFDdEIsUUFBa0IsRUFDTixVQUFrQjtRQUpoRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLGVBQVUsR0FBVixVQUFVLENBQVE7UUExQmpELG1CQUFjLEdBQVcsbUJBQW1CLENBQUM7UUFDdEQsY0FBUyxHQUFtQixJQUFJLENBQUM7UUFFekIsaUJBQVksR0FBdUIsRUFBRSxDQUFDO1FBYTdCLHlCQUFvQixHQUFHLGlCQUFpQixDQUFDO0lBV3ZELENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFDbEUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztZQUN0RCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFFekYsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUN0RixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWlCLEVBQUU7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUF5QjtRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUc7WUFDWCxVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsZUFBZSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7U0FDcEQsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBc0IsQ0FBQztRQUNqRyxPQUFPLFdBQVcsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ25DLEdBQUcsQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQXlCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0IsT0FBTyxFQUFFLFVBQVU7WUFDbkIsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2YsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdFLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDNUI7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7K0dBbkhVLG9CQUFvQiw4RUF5QnJCLFVBQVUsYUFDVixRQUFRLGFBQ1IsV0FBVzttR0EzQlYsb0JBQW9CLGtSQzdCakMsNjFEQXdEQSw2dkJEaENZLFlBQVksc01BQUUsbUJBQW1COzs0RkFLaEMsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsV0FDbkMsQ0FBQyxzQkFBc0IsQ0FBQzs7MEJBNkI5QixNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVzt5Q0ExQlosY0FBYztzQkFBdEIsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBZTJCLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFBMQVRGT1JNX0lELFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic0l0ZW1zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLWl0ZW1zLm1vZGVsJztcclxuaW1wb3J0IHsgQ3VyYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jdXJhL2N1cmEuc2VydmljZSc7XHJcbmltcG9ydCB7IFJkc2l0ZUxpbmtEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYnNKc29uSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9icmVhZGNydW1icy9icmVhZGNydW1icy1qc29uLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBMSUJfQ09ORklHLCBMaWJDb25maWcgfSBmcm9tICcuLi8uLi90b2tlbnMvTGliQ29uZmlnJztcclxuaW1wb3J0ICogYXMgaGUgZnJvbSAnaGUnO1xyXG5pbXBvcnQgeyBNZWRpYVF1ZXJpZXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL21lZGlhUXVlcmllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Jkc2l0ZS1icmVhZGNydW1icycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZHNpdGVMaW5rRGlyZWN0aXZlXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGxhYmVsSWNvbkNvbG9yOiBzdHJpbmcgPSAnbmV1dHJhbC1wdXJld2hpdGUnO1xyXG4gIGlzRGVza3RvcDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9icmVhZGNydW1iczogQnJlYWRjcnVtYnNJdGVtc1tdID0gW107XHJcbiAgQElucHV0KClcclxuICBzZXQgYnJlYWRjcnVtYnModmFsdWU6IEJyZWFkY3J1bWJzSXRlbXNbXSkge1xyXG4gICAgdGhpcy5fYnJlYWRjcnVtYnMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYnNKc29uKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGJyZWFkY3J1bWJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBicmVhZGNydW1ic0pzb25UYWchOiBIVE1MU2NyaXB0RWxlbWVudDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJzSnNvblRhZ0lkID0gJ2JyZWFkY3J1bWJzSlNPTic7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdicmVhZENydW1ic0VsZW1lbnQnKSBicmVhZENydW1ic0VsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGN1cmFTZXJ2aWNlOiBDdXJhU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoTElCX0NPTkZJRykgcHJpdmF0ZSBsaWJDb25maWc6IExpYkNvbmZpZyxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkOiBvYmplY3QsXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENvbG9ycyh0aGlzLmxhYmVsSWNvbkNvbG9yKTtcclxuICAgIHRoaXMuaW5pdFZpZXdwb3J0RGV0ZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFZpZXdwb3J0RGV0ZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuaXNEZXNrdG9wID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIHRoaXMuc2V0dXBSZXNpemVPYnNlcnZlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFJlc2l6ZU9ic2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tWaWV3cG9ydFNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHdpbmRvdy5pbm5lcldpZHRoID4gTWVkaWFRdWVyaWVzLnNtYWxsQnJlYWtwb2ludDtcclxuICAgIGlmICh0aGlzLmlzRGVza3RvcCAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSBuZXdWYWx1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3JzKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHRoaXMuYnJlYWRDcnVtYnNFbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmJyZWFkQ3J1bWJzRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWZvbnQtZmFtaWx5JywgdGhpcy5jdXJhU2VydmljZS5nZXRGb250RmFtaWx5KCcnKSk7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGFiZWwtaWNvbi1jb2xvcicsIHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoY29sb3IpKTtcclxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1kaXZpZGVyLWNvbG9yJywgdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpKTtcclxuXHJcbiAgICAgIGNvbnN0IGRpc2FibGVkQ29sb3IgPSBjb2xvcj8uaW5jbHVkZXMoJ25ldXRyYWwnKSA/ICdwcmltYXJ5LWxpZ2h0ZXInIDogJ25ldXRyYWwtZGFyayc7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZGlzYWJsZWQtY29sb3InLCB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKGRpc2FibGVkQ29sb3IpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVybCh1cmxzOiBzdHJpbmdbXSA9IFtdKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB1cmxzLmpvaW4oJycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1ic0pzb24oaXRlbXM6IEJyZWFkY3J1bWJzSXRlbXNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0aGlzLmdldEJyZWFkY3J1bWJzSlNPTlRhZygpO1xyXG4gICAgY29uc3QganNvbiA9IHtcclxuICAgICAgJ0Bjb250ZXh0JzogJ2h0dHA6Ly9zY2hlbWEub3JnJyxcclxuICAgICAgJ0B0eXBlJzogJ0JyZWFkY3J1bWJMaXN0JyxcclxuICAgICAgaXRlbUxpc3RFbGVtZW50OiB0aGlzLmdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXMpLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmVhZGNydW1ic0pTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xyXG4gICAgY29uc3QgZXhpc3RpbmdUYWcgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnSWQpIGFzIEhUTUxTY3JpcHRFbGVtZW50O1xyXG4gICAgcmV0dXJuIGV4aXN0aW5nVGFnIHx8IHRoaXMuY3JlYXRlQnJlYWRjcnVtYnNKU09OVGFnKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUJyZWFkY3J1bWJzSlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XHJcbiAgICBjb25zdCB0YWcgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgdGFnLmlkID0gdGhpcy5icmVhZGNydW1ic0pzb25UYWdJZDtcclxuICAgIHRhZy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nO1xyXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XHJcbiAgICByZXR1cm4gdGFnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRKc29uQnJlYWRjcnVtYkl0ZW1zKGl0ZW1zOiBCcmVhZGNydW1ic0l0ZW1zW10pOiBCcmVhZGNydW1ic0pzb25JdGVtW10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSwgaSkgPT4gKHtcclxuICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcclxuICAgICAgcG9zaXRpb246IGkgKyAxLFxyXG4gICAgICBpdGVtOiB7XHJcbiAgICAgICAgJ0BpZCc6IGAke3RoaXMubGliQ29uZmlnLnNpdGVVcmwucmVwbGFjZSgvXFwvJC8sICcnKX0ke3RoaXMuZ2V0VXJsKGl0ZW0udXJsKX1gLFxyXG4gICAgICAgIG5hbWU6IGhlLmVuY29kZShpdGVtLmxhYmVsKSxcclxuICAgICAgfSxcclxuICAgIH0pKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChicmVhZGNydW1icy5sZW5ndGgpIHtcclxuICA8bmF2IGNsYXNzPVwiYnJlYWRjcnVtYlwiICNicmVhZENydW1ic0VsZW1lbnQ+XHJcbiAgICA8b2w+XHJcbiAgICAgIEBpZiAoaXNEZXNrdG9wICE9PSBudWxsICYmIChpc0Rlc2t0b3AgfHwgYnJlYWRjcnVtYnMubGVuZ3RoIDwgMykpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGVza3RvcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBlbHNlIGlmIChpc0Rlc2t0b3AgIT09IG51bGwpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTW9iaWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvb2w+XHJcbiAgPC9uYXY+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjRGVza3RvcD5cclxuICBAZm9yIChicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzOyB0cmFjayBicmVhZGNydW1iLmxhYmVsOyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3Q7IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgPGxpPlxyXG4gICAgICBAaWYgKCFsYXN0KSB7XHJcbiAgICAgICAgPGEgcmRzaXRlbGluayBbaHJlZl09XCJnZXRVcmwoYnJlYWRjcnVtYi51cmwpXCI+XHJcbiAgICAgICAgICBAaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICAgIDxjdXJhLWljb24gbmFtZT1cImhvbWVcIiBbYXR0ci5jb2xvcl09XCJsYWJlbEljb25Db2xvclwiIHNpemU9XCIxNlwiPiA8L2N1cmEtaWNvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICB7eyBicmVhZGNydW1iLmxhYmVsIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPi88L3NwYW4+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxzcGFuIFtjbGFzcy5sYXN0LWl0ZW1dPVwibGFzdCAmJiAhZmlyc3RcIj5cclxuICAgICAgICAgIHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIDwvbGk+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNNb2JpbGU+XHJcbiAgQGZvciAoYnJlYWRjcnVtYiBvZiBicmVhZGNydW1iczsgdHJhY2sgYnJlYWRjcnVtYi5sYWJlbDsgbGV0IGZpcnN0ID0gJGZpcnN0OyBsZXQgbGFzdCA9ICRsYXN0OyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcclxuICAgIDxsaT5cclxuICAgICAgQGlmIChmaXJzdCkge1xyXG4gICAgICAgIDxhIHJkc2l0ZWxpbmsgW2hyZWZdPVwiZ2V0VXJsKGJyZWFkY3J1bWIudXJsKVwiPlxyXG4gICAgICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiaG9tZVwiIFthdHRyLmNvbG9yXT1cImxhYmVsSWNvbkNvbG9yXCIgc2l6ZT1cIjE2XCI+IDwvY3VyYS1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+Lzwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSBpZiAoaW5kZXggPT09IGJyZWFkY3J1bWJzLmxlbmd0aCAtIDIpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhY2tcIj48PC9zcGFuPlxyXG4gICAgICAgIDxhIHJkc2l0ZWxpbmsgW2hyZWZdPVwiZ2V0VXJsKGJyZWFkY3J1bWIudXJsKVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7IGJyZWFkY3J1bWIubGFiZWwgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIH1cclxuICAgIDwvbGk+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -173,11 +173,11 @@ export class FilterGenericComponent {
|
|
|
173
173
|
return Object.values(filterData).every((val) => val === null || val === '' || (Array.isArray(val) && val.length === 0));
|
|
174
174
|
}
|
|
175
175
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterGenericComponent, deps: [{ token: i1.CuraService }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterGenericComponent, isStandalone: true, selector: "rdsite-filter-generic", inputs: { withContainerStyle: "withContainerStyle", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showCloseButton: "showCloseButton", disableButtonsWithoutSelection: "disableButtonsWithoutSelection", showBadge: "showBadge", showToggleIcon: "showToggleIcon", isFilterOpen: "isFilterOpen", mobileBehavior: "mobileBehavior", forceCollapsed: "forceCollapsed", emitOnReset: "emitOnReset", textTitle: "textTitle", sections: "sections" }, outputs: { filterChange: "filterChange", closeModal: "closeModal", openMobileFilter: "openMobileFilter" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:16px;align-items:center}.filter-actions .divider-strong{height:1px;width:100%;margin-top:20px;margin-bottom:16px;background:linear-gradient(90deg,#e2e2e2 70%,transparent 70%);background-size:4px 1px;background-repeat:repeat-x}.filter-actions .close-action-wrapper{display:flex;justify-content:center;width:100%}.filter-actions .close-action{display:inline-flex;align-items:center;gap:8px}.filter-actions .close-action cura-button-transparent{padding:0;margin:0;background:transparent;border:none;color:inherit}.filter-actions cura-button,.filter-actions cura-button-transparent{flex:1}@media screen and (max-width: 1024px){.filter-checkboxes:after{background-color:transparent}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterGenericComponent, isStandalone: true, selector: "rdsite-filter-generic", inputs: { withContainerStyle: "withContainerStyle", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showCloseButton: "showCloseButton", disableButtonsWithoutSelection: "disableButtonsWithoutSelection", showBadge: "showBadge", showToggleIcon: "showToggleIcon", isFilterOpen: "isFilterOpen", mobileBehavior: "mobileBehavior", forceCollapsed: "forceCollapsed", emitOnReset: "emitOnReset", textTitle: "textTitle", sections: "sections" }, outputs: { filterChange: "filterChange", closeModal: "closeModal", openMobileFilter: "openMobileFilter" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:24px;align-items:center}.filter-actions .divider-strong{height:1px;width:100%;margin-top:20px;margin-bottom:16px;background:linear-gradient(90deg,#e2e2e2 70%,transparent 70%);background-size:4px 1px;background-repeat:repeat-x}.filter-actions .close-action-wrapper{display:flex;justify-content:center;width:100%}.filter-actions .close-action{display:inline-flex;align-items:center;gap:8px}.filter-actions .close-action cura-button-transparent{padding:0;margin:0;background:transparent;border:none;color:inherit}.filter-actions cura-button,.filter-actions cura-button-transparent{flex:1}@media screen and (max-width: 1024px){.filter-checkboxes:after{background-color:transparent}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
177
177
|
}
|
|
178
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterGenericComponent, decorators: [{
|
|
179
179
|
type: Component,
|
|
180
|
-
args: [{ selector: 'rdsite-filter-generic', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:
|
|
180
|
+
args: [{ selector: 'rdsite-filter-generic', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:24px;align-items:center}.filter-actions .divider-strong{height:1px;width:100%;margin-top:20px;margin-bottom:16px;background:linear-gradient(90deg,#e2e2e2 70%,transparent 70%);background-size:4px 1px;background-repeat:repeat-x}.filter-actions .close-action-wrapper{display:flex;justify-content:center;width:100%}.filter-actions .close-action{display:inline-flex;align-items:center;gap:8px}.filter-actions .close-action cura-button-transparent{padding:0;margin:0;background:transparent;border:none;color:inherit}.filter-actions cura-button,.filter-actions cura-button-transparent{flex:1}@media screen and (max-width: 1024px){.filter-checkboxes:after{background-color:transparent}}\n"] }]
|
|
181
181
|
}], ctorParameters: () => [{ type: i1.CuraService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
182
182
|
type: Inject,
|
|
183
183
|
args: [PLATFORM_ID]
|
package/esm2022/lib/components/filters/filter-planos-convenios/filter-planos-convenios.component.mjs
CHANGED
|
@@ -95,11 +95,11 @@ export class FilterPlanosConveniosComponent {
|
|
|
95
95
|
this.coberturaControl.reset(this.coberturas);
|
|
96
96
|
}
|
|
97
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterPlanosConveniosComponent, deps: [{ token: i1.CuraService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterPlanosConveniosComponent, isStandalone: true, selector: "rdsite-filter-planos-convenios", inputs: { withContainerStyle: "withContainerStyle", isLoading: "isLoading", emitOnChange: "emitOnChange", initialEstado: "initialEstado", estados: "estados", coberturas: "coberturas", unidadeControl: "unidadeControl", estadoControl: "estadoControl" }, outputs: { filterChange: "filterChange", closeModal: "closeModal" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterPlanosConveniosComponent, isStandalone: true, selector: "rdsite-filter-planos-convenios", inputs: { withContainerStyle: "withContainerStyle", isLoading: "isLoading", emitOnChange: "emitOnChange", initialEstado: "initialEstado", estados: "estados", coberturas: "coberturas", unidadeControl: "unidadeControl", estadoControl: "estadoControl" }, outputs: { filterChange: "filterChange", closeModal: "closeModal" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\n @if (!isLoading) {\n <cura-heading size=\"small\" level=\"4\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Refine sua busca </cura-heading>\n\n <div class=\"filter-planos-convenios-unidade\">\n <cura-input-text\n placeholder=\"Nome da unidade\"\n name=\"unidade-input\"\n icon-name=\"search\"\n autocomplete=\"off\"\n [attr.value]=\"unidadeControl.value\"\n (valueChange)=\"inputTextChange($event)\"\n ></cura-input-text>\n </div>\n\n <div class=\"filter-planos-convenios-estado\">\n @if (estados) {\n <cura-select\n label=\"Selecione o estado\"\n placeholder=\"Fa\u00E7a a sua Sele\u00E7\u00E3o\"\n mode=\"default\"\n size=\"medium\"\n status=\"default\"\n [attr.value]=\"estadoControl.value\"\n (selected)=\"selectChange($event)\"\n >\n <cura-select-option [attr.value]=\"''\">Fa\u00E7a a sua Sele\u00E7\u00E3o</cura-select-option>\n\n @for (estado of estados || []; track estado?.value) {\n <cura-select-option [attr.value]=\"estado?.value\">{{ estado?.label }}</cura-select-option>\n }\n </cura-select>\n }\n </div>\n\n <div class=\"filter-planos-convenios-cobertura\">\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\n Filtre pela cobertura do seu plano\n </cura-heading>\n </div>\n\n <div class=\"filter-planos-convenios-content\">\n <cura-heading size=\"xsmall\" level=\"5\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Tipos de cobertura </cura-heading>\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\n Voc\u00EA pode selecionar uma ou mais portas de entrada, de acordo com a cobertura do seu plano.\n </cura-paragraph>\n </div>\n\n <div class=\"filter-planos-convenios-checkboxes\">\n @for (option of coberturas || []; track option?.value) {\n <cura-checkbox\n color=\"primary\"\n size=\"small\"\n icon-color=\"light\"\n [attr.name]=\"option?.label\"\n [attr.label]=\"option?.label\"\n [attr.value]=\"option?.value\"\n [attr.checked]=\"option?.checked\"\n (onchange)=\"checkboxChange($event)\"\n >\n </cura-checkbox>\n }\n </div>\n\n <div class=\"filter-planos-convenios-buttons\">\n <cura-button-transparent size=\"small\" color=\"primary\" font-color=\"dark\" text-align=\"center\" (click)=\"reset()\">\n <span> Limpar todos os filtros </span>\n </cura-button-transparent>\n\n <cura-button size=\"medium\" color=\"primary\" font-color=\"light\" background=\"light\" text-align=\"center\" (click)=\"filter()\"> Filtrar </cura-button>\n </div>\n } @else {\n <cura-loader-circle color=\"primary\" size=\"small\"> </cura-loader-circle>\n }\n</div>\n", styles: [".filter-planos-convenios{display:flex;flex-direction:column;gap:23px}.filter-planos-convenios.container-style{width:100%;padding:20px;border-radius:4px;border:1px solid var(--neutral-lighter, #e2e2e2);background-color:var(--neutral-purewhite, #ffffff)}.filter-planos-convenios-cobertura{color:var(--neutral-darker);display:flex;align-items:center;gap:14px}.filter-planos-convenios-content{display:flex;flex-direction:column;gap:10px}.filter-planos-convenios-content:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:13px}.filter-planos-convenios-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-planos-convenios-checkboxes:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-planos-convenios-buttons{display:flex;gap:10px;justify-content:space-between}.filter-planos-convenios-buttons cura-button-transparent{display:flex;flex:1 0 0;max-width:170px}.filter-planos-convenios-buttons cura-button-transparent span{line-height:13px;letter-spacing:.72px;text-align:left}.filter-planos-convenios-buttons cura-button{display:flex;flex:0 0 100px}cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
99
99
|
}
|
|
100
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterPlanosConveniosComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
|
-
args: [{ selector: 'rdsite-filter-planos-convenios', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\
|
|
102
|
+
args: [{ selector: 'rdsite-filter-planos-convenios', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\n @if (!isLoading) {\n <cura-heading size=\"small\" level=\"4\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Refine sua busca </cura-heading>\n\n <div class=\"filter-planos-convenios-unidade\">\n <cura-input-text\n placeholder=\"Nome da unidade\"\n name=\"unidade-input\"\n icon-name=\"search\"\n autocomplete=\"off\"\n [attr.value]=\"unidadeControl.value\"\n (valueChange)=\"inputTextChange($event)\"\n ></cura-input-text>\n </div>\n\n <div class=\"filter-planos-convenios-estado\">\n @if (estados) {\n <cura-select\n label=\"Selecione o estado\"\n placeholder=\"Fa\u00E7a a sua Sele\u00E7\u00E3o\"\n mode=\"default\"\n size=\"medium\"\n status=\"default\"\n [attr.value]=\"estadoControl.value\"\n (selected)=\"selectChange($event)\"\n >\n <cura-select-option [attr.value]=\"''\">Fa\u00E7a a sua Sele\u00E7\u00E3o</cura-select-option>\n\n @for (estado of estados || []; track estado?.value) {\n <cura-select-option [attr.value]=\"estado?.value\">{{ estado?.label }}</cura-select-option>\n }\n </cura-select>\n }\n </div>\n\n <div class=\"filter-planos-convenios-cobertura\">\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\n Filtre pela cobertura do seu plano\n </cura-heading>\n </div>\n\n <div class=\"filter-planos-convenios-content\">\n <cura-heading size=\"xsmall\" level=\"5\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Tipos de cobertura </cura-heading>\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\n Voc\u00EA pode selecionar uma ou mais portas de entrada, de acordo com a cobertura do seu plano.\n </cura-paragraph>\n </div>\n\n <div class=\"filter-planos-convenios-checkboxes\">\n @for (option of coberturas || []; track option?.value) {\n <cura-checkbox\n color=\"primary\"\n size=\"small\"\n icon-color=\"light\"\n [attr.name]=\"option?.label\"\n [attr.label]=\"option?.label\"\n [attr.value]=\"option?.value\"\n [attr.checked]=\"option?.checked\"\n (onchange)=\"checkboxChange($event)\"\n >\n </cura-checkbox>\n }\n </div>\n\n <div class=\"filter-planos-convenios-buttons\">\n <cura-button-transparent size=\"small\" color=\"primary\" font-color=\"dark\" text-align=\"center\" (click)=\"reset()\">\n <span> Limpar todos os filtros </span>\n </cura-button-transparent>\n\n <cura-button size=\"medium\" color=\"primary\" font-color=\"light\" background=\"light\" text-align=\"center\" (click)=\"filter()\"> Filtrar </cura-button>\n </div>\n } @else {\n <cura-loader-circle color=\"primary\" size=\"small\"> </cura-loader-circle>\n }\n</div>\n", styles: [".filter-planos-convenios{display:flex;flex-direction:column;gap:23px}.filter-planos-convenios.container-style{width:100%;padding:20px;border-radius:4px;border:1px solid var(--neutral-lighter, #e2e2e2);background-color:var(--neutral-purewhite, #ffffff)}.filter-planos-convenios-cobertura{color:var(--neutral-darker);display:flex;align-items:center;gap:14px}.filter-planos-convenios-content{display:flex;flex-direction:column;gap:10px}.filter-planos-convenios-content:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:13px}.filter-planos-convenios-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-planos-convenios-checkboxes:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-planos-convenios-buttons{display:flex;gap:10px;justify-content:space-between}.filter-planos-convenios-buttons cura-button-transparent{display:flex;flex:1 0 0;max-width:170px}.filter-planos-convenios-buttons cura-button-transparent span{line-height:13px;letter-spacing:.72px;text-align:left}.filter-planos-convenios-buttons cura-button{display:flex;flex:0 0 100px}cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}\n"] }]
|
|
103
103
|
}], ctorParameters: () => [{ type: i1.CuraService }], propDecorators: { filterChange: [{
|
|
104
104
|
type: Output
|
|
105
105
|
}], closeModal: [{
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
124
124
|
type: HostBinding,
|
|
125
125
|
args: ['style']
|
|
126
126
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlci1wbGFub3MtY29udmVuaW9zL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvQnpDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEMzQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQy9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGtCQUFhLEdBQXFDLElBQUksQ0FBQztRQUV2RCxZQUFPLEdBQTRCLE1B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T0FBTztzQkFBZixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdnQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVzdGFkb3MgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEZpbHRlclBsYW5vc0NvbnZlbmlvcywgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlLCBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5tb2RlbCc7XHJcbmltcG9ydCB7IEN1cmFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbmltcG9ydCB0eXBlICogYXMgXyBmcm9tICdAcmVkZWRvci9jdXJhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy5qcyc7XHJcblxyXG5pbnRlcmZhY2UgQ3VyYUNoZWNrYm94T3B0aW9uPFQgPSBhbnk+IHtcclxuICB2YWx1ZTogVDtcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Jkc2l0ZS1maWx0ZXItcGxhbm9zLWNvbnZlbmlvcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASW5wdXQoKSB3aXRoQ29udGFpbmVyU3R5bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBlbWl0T25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgaW5pdGlhbEVzdGFkbzogRXN0YWRvcyB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBlc3RhZG9zOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NbXSA9IE9iamVjdC5lbnRyaWVzKEVzdGFkb3MpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xyXG4gICAgbGFiZWw6IHZhbHVlLFxyXG4gICAgdmFsdWU6IGtleSxcclxuICB9KSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvYmVydHVyYXM6IEZpbHRlclBsYW5vc0NvbnZlbmlvc0NvYmVydHVyYVtdID0gW1xyXG4gICAgeyBsYWJlbDogJ0NvbnN1bHRhcycsIHZhbHVlOiAnRkxBR19BQ0VJVEFfQU1CVUxBVE9SSU8nLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgeyBsYWJlbDogJ0VtZXJnw6puY2lhJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9QUycsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IGxhYmVsOiAnRXhhbWVzJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9FWEFNRScsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IGxhYmVsOiAnSW50ZXJuYcOnw6NvJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9JTlRFUk5BQ0FPJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICBdO1xyXG5cclxuICBASW5wdXQoKSB1bmlkYWRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPignJyk7XHJcbiAgQElucHV0KCkgZXN0YWRvQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxFc3RhZG9zIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4oJycpO1xyXG4gIGNvYmVydHVyYUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhW10+KHRoaXMuY29iZXJ0dXJhcyB8fCBbXSk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBzdHlsZUJpbmRpbmcgPSB7XHJcbiAgICAnLS1uZXV0cmFsLWRhcmtlcic6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtZGFya2VyJyksXHJcbiAgICAnLS1uZXV0cmFsLWxpZ2h0JzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpLFxyXG4gICAgJy0tbmV1dHJhbC1saWdodGVyJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodGVyJyksXHJcbiAgICAnLS1uZXV0cmFsLXB1cmV3aGl0ZSc6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtcHVyZXdoaXRlJyksXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjdXJhU2VydmljZTogQ3VyYVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmluaXRpYWxFc3RhZG8gJiYgQXJyYXkuaXNBcnJheSh0aGlzLmVzdGFkb3MpICYmIHRoaXMuZXN0YWRvcy5maW5kKChlc3RhZG8pID0+IGVzdGFkby52YWx1ZSA9PT0gdGhpcy5pbml0aWFsRXN0YWRvKSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmVzdGFkb0NvbnRyb2wuc2V0VmFsdWUodGhpcy5pbml0aWFsRXN0YWRvKTtcclxuICAgICAgICB0aGlzLmZpbHRlcigpO1xyXG4gICAgICB9LCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFRleHRDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xyXG4gICAgdGhpcy51bmlkYWRlQ29udHJvbC5zZXRWYWx1ZShkZXRhaWwpO1xyXG4gICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgIHVuaWRhZGU6IGRldGFpbCxcclxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xyXG4gICAgdGhpcy5lc3RhZG9Db250cm9sLnNldFZhbHVlKGRldGFpbCk7XHJcbiAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcclxuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBlc3RhZG86IGRldGFpbCxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja2JveENoYW5nZSh7IGRldGFpbCB9OiBDdXN0b21FdmVudDxDdXJhQ2hlY2tib3hPcHRpb248c3RyaW5nPj4pIHtcclxuICAgIGlmICghdGhpcy5jb2JlcnR1cmFzKSByZXR1cm47XHJcbiAgICBjb25zdCBjdXJyT3B0aW9uOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEgfCB1bmRlZmluZWQgPSB0aGlzLmNvYmVydHVyYXMuZmluZChcclxuICAgICAgKG9wdGlvbjogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhKSA9PiBvcHRpb24udmFsdWUgPT0gZGV0YWlsLnZhbHVlLFxyXG4gICAgKTtcclxuICAgIGlmIChjdXJyT3B0aW9uKSB7XHJcbiAgICAgIGN1cnJPcHRpb24uY2hlY2tlZCA9IGRldGFpbC5jaGVja2VkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb2JlcnR1cmFDb250cm9sLnNldFZhbHVlKHRoaXMuY29iZXJ0dXJhcyk7XHJcbiAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcclxuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcclxuICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgZXN0YWRvOiB0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUsXHJcbiAgICAgIGNvYmVydHVyYTogdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIHx8IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhhc0NvdmVyYWdlID0gdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIS5zb21lKChjb2IpID0+IGNvYi5jaGVja2VkKTtcclxuICAgIGNvbnN0IGhhc0ZpbHRlciA9IEJvb2xlYW4odGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSkgfHwgQm9vbGVhbih0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUpIHx8IEJvb2xlYW4oaGFzQ292ZXJhZ2UpO1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoIWhhc0ZpbHRlcik7XHJcbiAgICB0aGlzLnVuaWRhZGVDb250cm9sLnJlc2V0KCcnKTtcclxuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5yZXNldCgnJyk7XHJcbiAgICB0aGlzLmNvYmVydHVyYXMuZm9yRWFjaCgoY29iZXJ0dXJhKSA9PiAoY29iZXJ0dXJhLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5jb2JlcnR1cmFDb250cm9sLnJlc2V0KHRoaXMuY29iZXJ0dXJhcyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvc1wiIFtuZ0NsYXNzXT1cInsgJ2NvbnRhaW5lci1zdHlsZSc6IHdpdGhDb250YWluZXJTdHlsZSB9XCI+XHJcbiAgQGlmICghaXNMb2FkaW5nKSB7XHJcbiAgICA8Y3VyYS1oZWFkaW5nIHNpemU9XCJzbWFsbFwiIGxldmVsPVwiNFwiIHdlaWdodD1cImJvbGRcIiBjb2xvcj1cIm5ldXRyYWwtYmxhY2tcIiBtYXJnaW4tYmxvY2s9XCIwXCIgbGluZS1oZWlnaHQ9XCIxNnB4XCI+IFJlZmluZSBzdWEgYnVzY2EgPC9jdXJhLWhlYWRpbmc+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLXVuaWRhZGVcIj5cclxuICAgICAgPGN1cmEtaW5wdXQtdGV4dFxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiTm9tZSBkYSB1bmlkYWRlXCJcclxuICAgICAgICBuYW1lPVwidW5pZGFkZS1pbnB1dFwiXHJcbiAgICAgICAgaWNvbi1uYW1lPVwic2VhcmNoXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInVuaWRhZGVDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaW5wdXRUZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICA+PC9jdXJhLWlucHV0LXRleHQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtZXN0YWRvXCI+XHJcbiAgICAgIEBpZiAoZXN0YWRvcykge1xyXG4gICAgICAgIDxjdXJhLXNlbGVjdFxyXG4gICAgICAgICAgbGFiZWw9XCJTZWxlY2lvbmUgbyBlc3RhZG9cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJGYcOnYSBhIHN1YSBTZWxlw6fDo29cIlxyXG4gICAgICAgICAgbW9kZT1cImRlZmF1bHRcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXHJcbiAgICAgICAgICBzdGF0dXM9XCJkZWZhdWx0XCJcclxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cImVzdGFkb0NvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgKHNlbGVjdGVkKT1cInNlbGVjdENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y3VyYS1zZWxlY3Qtb3B0aW9uIFthdHRyLnZhbHVlXT1cIicnXCI+RmHDp2EgYSBzdWEgU2VsZcOnw6NvPC9jdXJhLXNlbGVjdC1vcHRpb24+XHJcblxyXG4gICAgICAgICAgQGZvciAoZXN0YWRvIG9mIGVzdGFkb3MgfHwgW107IHRyYWNrIGVzdGFkbz8udmFsdWUpIHtcclxuICAgICAgICAgICAgPGN1cmEtc2VsZWN0LW9wdGlvbiBbYXR0ci52YWx1ZV09XCJlc3RhZG8/LnZhbHVlXCI+e3sgZXN0YWRvPy5sYWJlbCB9fTwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvY3VyYS1zZWxlY3Q+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jb2JlcnR1cmFcIj5cclxuICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiZmlsdGVyXCIgc2l6ZT1cIjIwXCIgY29sb3I9XCJpbmZvLWRhcmtcIj48L2N1cmEtaWNvbj5cclxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgd2VpZ2h0PVwiYm9sZFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIG1hcmdpbi1ibG9jaz1cIjBcIiBsaW5lLWhlaWdodD1cIjE2cHhcIj5cclxuICAgICAgICBGaWx0cmUgcGVsYSBjb2JlcnR1cmEgZG8gc2V1IHBsYW5vXHJcbiAgICAgIDwvY3VyYS1oZWFkaW5nPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLWNvbnRlbnRcIj5cclxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBUaXBvcyBkZSBjb2JlcnR1cmEgPC9jdXJhLWhlYWRpbmc+XHJcbiAgICAgIDxjdXJhLXBhcmFncmFwaCBzaXplPVwieHNtYWxsXCIgY29sb3I9XCJuZXV0cmFsLWRhcmtcIiBtYXJnaW4tYmxvY2s9XCIwXCI+XHJcbiAgICAgICAgVm9jw6ogcG9kZSBzZWxlY2lvbmFyIHVtYSBvdSBtYWlzIHBvcnRhcyBkZSBlbnRyYWRhLCBkZSBhY29yZG8gY29tIGEgY29iZXJ0dXJhIGRvIHNldSBwbGFuby5cclxuICAgICAgPC9jdXJhLXBhcmFncmFwaD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jaGVja2JveGVzXCI+XHJcbiAgICAgIEBmb3IgKG9wdGlvbiBvZiBjb2JlcnR1cmFzIHx8IFtdOyB0cmFjayBvcHRpb24/LnZhbHVlKSB7XHJcbiAgICAgICAgPGN1cmEtY2hlY2tib3hcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgaWNvbi1jb2xvcj1cImxpZ2h0XCJcclxuICAgICAgICAgIFthdHRyLm5hbWVdPVwib3B0aW9uPy5sYWJlbFwiXHJcbiAgICAgICAgICBbYXR0ci5sYWJlbF09XCJvcHRpb24/LmxhYmVsXCJcclxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIlxyXG4gICAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJvcHRpb24/LmNoZWNrZWRcIlxyXG4gICAgICAgICAgKG9uY2hhbmdlKT1cImNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2N1cmEtY2hlY2tib3g+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1idXR0b25zXCI+XHJcbiAgICAgIDxjdXJhLWJ1dHRvbi10cmFuc3BhcmVudCBzaXplPVwic21hbGxcIiBjb2xvcj1cInByaW1hcnlcIiBmb250LWNvbG9yPVwiZGFya1wiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxyXG4gICAgICAgIDxzcGFuPiBMaW1wYXIgdG9kb3Mgb3MgZmlsdHJvcyA8L3NwYW4+XHJcbiAgICAgIDwvY3VyYS1idXR0b24tdHJhbnNwYXJlbnQ+XHJcblxyXG4gICAgICA8Y3VyYS1idXR0b24gc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJsaWdodFwiIGJhY2tncm91bmQ9XCJsaWdodFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwiZmlsdGVyKClcIj4gRmlsdHJhciA8L2N1cmEtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8Y3VyYS1sb2FkZXItY2lyY2xlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCJzbWFsbFwiPiA8L2N1cmEtbG9hZGVyLWNpcmNsZT5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlci1wbGFub3MtY29udmVuaW9zL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvQnpDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEMzQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQy9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGtCQUFhLEdBQXFDLElBQUksQ0FBQztRQUV2RCxZQUFPLEdBQTRCLE1B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T0FBTztzQkFBZixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdnQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVzdGFkb3MgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGaWx0ZXJQbGFub3NDb252ZW5pb3MsIEZpbHRlclBsYW5vc0NvbnZlbmlvc0NoYW5nZSwgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbHRlcnMvZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MubW9kZWwnO1xuaW1wb3J0IHsgQ3VyYVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgdHlwZSAqIGFzIF8gZnJvbSAnQHJlZGVkb3IvY3VyYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMuanMnO1xuXG5pbnRlcmZhY2UgQ3VyYUNoZWNrYm94T3B0aW9uPFQgPSBhbnk+IHtcbiAgdmFsdWU6IFQ7XG4gIGNoZWNrZWQ6IGJvb2xlYW47XG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyZHNpdGUtZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlPigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSB3aXRoQ29udGFpbmVyU3R5bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtaXRPbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGluaXRpYWxFc3RhZG86IEVzdGFkb3MgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBlc3RhZG9zOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NbXSA9IE9iamVjdC5lbnRyaWVzKEVzdGFkb3MpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIGxhYmVsOiB2YWx1ZSxcbiAgICB2YWx1ZToga2V5LFxuICB9KSk7XG5cbiAgQElucHV0KCkgY29iZXJ0dXJhczogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhW10gPSBbXG4gICAgeyBsYWJlbDogJ0NvbnN1bHRhcycsIHZhbHVlOiAnRkxBR19BQ0VJVEFfQU1CVUxBVE9SSU8nLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdFbWVyZ8OqbmNpYScsIHZhbHVlOiAnRkxBR19BQ0VJVEFfUFMnLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdFeGFtZXMnLCB2YWx1ZTogJ0ZMQUdfQUNFSVRBX0VYQU1FJywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IGxhYmVsOiAnSW50ZXJuYcOnw6NvJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9JTlRFUk5BQ0FPJywgY2hlY2tlZDogZmFsc2UgfSxcbiAgXTtcblxuICBASW5wdXQoKSB1bmlkYWRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPignJyk7XG4gIEBJbnB1dCgpIGVzdGFkb0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RXN0YWRvcyB8IHN0cmluZyB8IG51bWJlciB8IG51bGw+KCcnKTtcbiAgY29iZXJ0dXJhQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmFbXT4odGhpcy5jb2JlcnR1cmFzIHx8IFtdKTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgc3R5bGVCaW5kaW5nID0ge1xuICAgICctLW5ldXRyYWwtZGFya2VyJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1kYXJrZXInKSxcbiAgICAnLS1uZXV0cmFsLWxpZ2h0JzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpLFxuICAgICctLW5ldXRyYWwtbGlnaHRlcic6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtbGlnaHRlcicpLFxuICAgICctLW5ldXRyYWwtcHVyZXdoaXRlJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1wdXJld2hpdGUnKSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGN1cmFTZXJ2aWNlOiBDdXJhU2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEVzdGFkbyAmJiBBcnJheS5pc0FycmF5KHRoaXMuZXN0YWRvcykgJiYgdGhpcy5lc3RhZG9zLmZpbmQoKGVzdGFkbykgPT4gZXN0YWRvLnZhbHVlID09PSB0aGlzLmluaXRpYWxFc3RhZG8pKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5lc3RhZG9Db250cm9sLnNldFZhbHVlKHRoaXMuaW5pdGlhbEVzdGFkbyk7XG4gICAgICAgIHRoaXMuZmlsdGVyKCk7XG4gICAgICB9LCA1MCk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRUZXh0Q2hhbmdlKHsgZGV0YWlsIH06IEN1c3RvbUV2ZW50PG51bWJlciB8IHN0cmluZz4pIHtcbiAgICB0aGlzLnVuaWRhZGVDb250cm9sLnNldFZhbHVlKGRldGFpbCk7XG4gICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcbiAgICAgICAgdW5pZGFkZTogZGV0YWlsLFxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcbiAgICAgICAgY29iZXJ0dXJhOiB0aGlzLmNvYmVydHVyYUNvbnRyb2wudmFsdWUgfHwgW10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5zZXRWYWx1ZShkZXRhaWwpO1xuICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGVzdGFkbzogZGV0YWlsLFxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrYm94Q2hhbmdlKHsgZGV0YWlsIH06IEN1c3RvbUV2ZW50PEN1cmFDaGVja2JveE9wdGlvbjxzdHJpbmc+Pikge1xuICAgIGlmICghdGhpcy5jb2JlcnR1cmFzKSByZXR1cm47XG4gICAgY29uc3QgY3Vyck9wdGlvbjogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhIHwgdW5kZWZpbmVkID0gdGhpcy5jb2JlcnR1cmFzLmZpbmQoXG4gICAgICAob3B0aW9uOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEpID0+IG9wdGlvbi52YWx1ZSA9PSBkZXRhaWwudmFsdWUsXG4gICAgKTtcbiAgICBpZiAoY3Vyck9wdGlvbikge1xuICAgICAgY3Vyck9wdGlvbi5jaGVja2VkID0gZGV0YWlsLmNoZWNrZWQ7XG4gICAgfVxuICAgIHRoaXMuY29iZXJ0dXJhQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmNvYmVydHVyYXMpO1xuICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGVzdGFkbzogdGhpcy5lc3RhZG9Db250cm9sLnZhbHVlLFxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcbiAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcbiAgICAgIGNvYmVydHVyYTogdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIHx8IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgaGFzQ292ZXJhZ2UgPSB0aGlzLmNvYmVydHVyYUNvbnRyb2wudmFsdWUhLnNvbWUoKGNvYikgPT4gY29iLmNoZWNrZWQpO1xuICAgIGNvbnN0IGhhc0ZpbHRlciA9IEJvb2xlYW4odGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSkgfHwgQm9vbGVhbih0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUpIHx8IEJvb2xlYW4oaGFzQ292ZXJhZ2UpO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCFoYXNGaWx0ZXIpO1xuICAgIHRoaXMudW5pZGFkZUNvbnRyb2wucmVzZXQoJycpO1xuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5yZXNldCgnJyk7XG4gICAgdGhpcy5jb2JlcnR1cmFzLmZvckVhY2goKGNvYmVydHVyYSkgPT4gKGNvYmVydHVyYS5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB0aGlzLmNvYmVydHVyYUNvbnRyb2wucmVzZXQodGhpcy5jb2JlcnR1cmFzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zXCIgW25nQ2xhc3NdPVwieyAnY29udGFpbmVyLXN0eWxlJzogd2l0aENvbnRhaW5lclN0eWxlIH1cIj5cbiAgQGlmICghaXNMb2FkaW5nKSB7XG4gICAgPGN1cmEtaGVhZGluZyBzaXplPVwic21hbGxcIiBsZXZlbD1cIjRcIiB3ZWlnaHQ9XCJib2xkXCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBSZWZpbmUgc3VhIGJ1c2NhIDwvY3VyYS1oZWFkaW5nPlxuXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLXVuaWRhZGVcIj5cbiAgICAgIDxjdXJhLWlucHV0LXRleHRcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJOb21lIGRhIHVuaWRhZGVcIlxuICAgICAgICBuYW1lPVwidW5pZGFkZS1pbnB1dFwiXG4gICAgICAgIGljb24tbmFtZT1cInNlYXJjaFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInVuaWRhZGVDb250cm9sLnZhbHVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImlucHV0VGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2N1cmEtaW5wdXQtdGV4dD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1lc3RhZG9cIj5cbiAgICAgIEBpZiAoZXN0YWRvcykge1xuICAgICAgICA8Y3VyYS1zZWxlY3RcbiAgICAgICAgICBsYWJlbD1cIlNlbGVjaW9uZSBvIGVzdGFkb1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJGYcOnYSBhIHN1YSBTZWxlw6fDo29cIlxuICAgICAgICAgIG1vZGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBzdGF0dXM9XCJkZWZhdWx0XCJcbiAgICAgICAgICBbYXR0ci52YWx1ZV09XCJlc3RhZG9Db250cm9sLnZhbHVlXCJcbiAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGN1cmEtc2VsZWN0LW9wdGlvbiBbYXR0ci52YWx1ZV09XCInJ1wiPkZhw6dhIGEgc3VhIFNlbGXDp8OjbzwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxuXG4gICAgICAgICAgQGZvciAoZXN0YWRvIG9mIGVzdGFkb3MgfHwgW107IHRyYWNrIGVzdGFkbz8udmFsdWUpIHtcbiAgICAgICAgICAgIDxjdXJhLXNlbGVjdC1vcHRpb24gW2F0dHIudmFsdWVdPVwiZXN0YWRvPy52YWx1ZVwiPnt7IGVzdGFkbz8ubGFiZWwgfX08L2N1cmEtc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvY3VyYS1zZWxlY3Q+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtY29iZXJ0dXJhXCI+XG4gICAgICA8Y3VyYS1pY29uIG5hbWU9XCJmaWx0ZXJcIiBzaXplPVwiMjBcIiBjb2xvcj1cImluZm8tZGFya1wiPjwvY3VyYS1pY29uPlxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgd2VpZ2h0PVwiYm9sZFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIG1hcmdpbi1ibG9jaz1cIjBcIiBsaW5lLWhlaWdodD1cIjE2cHhcIj5cbiAgICAgICAgRmlsdHJlIHBlbGEgY29iZXJ0dXJhIGRvIHNldSBwbGFub1xuICAgICAgPC9jdXJhLWhlYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtY29udGVudFwiPlxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBUaXBvcyBkZSBjb2JlcnR1cmEgPC9jdXJhLWhlYWRpbmc+XG4gICAgICA8Y3VyYS1wYXJhZ3JhcGggc2l6ZT1cInhzbWFsbFwiIGNvbG9yPVwibmV1dHJhbC1kYXJrXCIgbWFyZ2luLWJsb2NrPVwiMFwiPlxuICAgICAgICBWb2PDqiBwb2RlIHNlbGVjaW9uYXIgdW1hIG91IG1haXMgcG9ydGFzIGRlIGVudHJhZGEsIGRlIGFjb3JkbyBjb20gYSBjb2JlcnR1cmEgZG8gc2V1IHBsYW5vLlxuICAgICAgPC9jdXJhLXBhcmFncmFwaD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jaGVja2JveGVzXCI+XG4gICAgICBAZm9yIChvcHRpb24gb2YgY29iZXJ0dXJhcyB8fCBbXTsgdHJhY2sgb3B0aW9uPy52YWx1ZSkge1xuICAgICAgICA8Y3VyYS1jaGVja2JveFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBpY29uLWNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgIFthdHRyLm5hbWVdPVwib3B0aW9uPy5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIubGFiZWxdPVwib3B0aW9uPy5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIudmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiXG4gICAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJvcHRpb24/LmNoZWNrZWRcIlxuICAgICAgICAgIChvbmNoYW5nZSk9XCJjaGVja2JveENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2N1cmEtY2hlY2tib3g+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtYnV0dG9uc1wiPlxuICAgICAgPGN1cmEtYnV0dG9uLXRyYW5zcGFyZW50IHNpemU9XCJzbWFsbFwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJkYXJrXCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgIDxzcGFuPiBMaW1wYXIgdG9kb3Mgb3MgZmlsdHJvcyA8L3NwYW4+XG4gICAgICA8L2N1cmEtYnV0dG9uLXRyYW5zcGFyZW50PlxuXG4gICAgICA8Y3VyYS1idXR0b24gc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJsaWdodFwiIGJhY2tncm91bmQ9XCJsaWdodFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwiZmlsdGVyKClcIj4gRmlsdHJhciA8L2N1cmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8Y3VyYS1sb2FkZXItY2lyY2xlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCJzbWFsbFwiPiA8L2N1cmEtbG9hZGVyLWNpcmNsZT5cbiAgfVxuPC9kaXY+XG4iXX0=
|